IBM Watsonの音声認識をやってみた
いろいろできるというWatsonの音声認識をやってみた。
事前準備
Bluemixとの契約。クレジットがある方はクレジットを用意してアカウントを作って下さい。
ここでは既にあるものとして、進めます。
ログイン後、左のメニューからWatsonを選び「SpeechToText」を選択します。
- サービス名
Test - 資格情報名
Credentials-1 - デプロイする地域
米国南部 - 組織の選択
test1 - スペース
develop
として作成をします。作成が完了するとサービス資格情報の先ほどの資格情報名をクリックすると
- url
- username
- password
が表示されるので、メモっておきます。
テストデータの実行
まずはLinuxなどのコンソールを用いて接続しテストデータを認識させてみます。
接続確認
ubuntu@test1:~$ curl -X GET -u "{username}:{password}" "https://stream.watsonplatform.net/speech-to-text/api/v1/models"
{
"models": [
{
"name": "pt-BR_NarrowbandModel",
"language": "pt-BR",
"url": "https://stream.watsonplatform.net/speech-to-text/api/v1/models/pt-BR_NarrowbandModel",
"rate": 8000,
"supported_features": {
"custom_acoustic_model": false,
"custom_language_model": false,
"speaker_labels": false
},
OKです。無事に接続できました。
もし社内などでプロキシがある場合はcurlに引数で-xをつけて下さい。
ubuntu@test1:~$ curl -X GET -x {proxy_server}:{proxy_port}
-u "{username}:{password}" "https://stream.watsonplatform.net/speech-to-text/api/v1/models"
データの認識
次に実際にデータを送って認識させてみます。
使用するデータはここのデータを使ってみました。
watsonが認識できるサンプリング周波数は日本語は16000なので、手元のファイルをそのように変更します。
ubuntu@test1:~$ ffmpeg -i rd319.mp3 -ar 16000 rd319_16000.mp3
本来の認識して欲しい文章は
小川 未明 作
海と太陽
海は昼眠る、夜も眠る、
ごうごう、いびきをかいて眠る。
昔、昔、おお昔
海がはじめて、口開けて、
笑ったときに、太陽は、
目をまわして驚いた。
かわいい花や、人たちを、
海がのんでしまおうと、
やさしく光る太陽は、
魔術で、海を眠らした。
海は昼眠る、夜も眠る。
ごうごう、いびきをかいて眠る。
これをwatsonで認識させる
ubuntu@test1:~$ curl -X POST -u "{username}:{password}" --header "Content-Type: audio/mp3" --data-binary "@rd319_16000.mp3" "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel" | jq '.results[].alternatives[].transcript' -r
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 779k 0 5100 100 774k 184 28705 0:00:27 0:00:27 --:--:-- 0
小川 未明 白
海 と 太陽
笑 わ
調べる
夜 も 寝る
黄金 を
いびき を かいて 寝て
昔 昔
大昔
海 が
初めて
開けて 笑った とき に
太陽 は
目 を 回して 驚いた
かわいい 花屋
人たち を
海 が
飲んで しまおう と
やさしく 光る 太陽 は
魔術
海 を 眠ら した
海 は
昼寝 る
夜 も 眠れ
多く の
いびき を かいて 寝て
わかりにくいのでjqを使ってテキストだけを抜き出しています。
どうでしょう?何も設定していない状態での認識です。
プログラムからの実行
ここではpythonでやってみます。
pythonSDKのインストール
pipでpythonのSDKをインストールします。
詳しい説明は公式を参照
ubuntu@test1:~$ pip install --upgrade watson-developer-cloud
これで実行すると以下のようになる。
ubuntu@test1:~$ python stt1.py |jq '.results[].alternatives[].transcript' -r
小川 未明 白
海 と 太陽
笑 わ
調べる
夜 も 寝る
黄金 を
いびき を かいて 寝て
昔 昔
大昔
海 が
初めて
開けて 笑った とき に
太陽 は
目 を 回して 驚いた
かわいい 花屋
人たち を
海 が
飲んで しまおう と
やさしく 光る 太陽 は
魔術
海 を 眠ら した
海 は
昼寝 る
夜 も 眠れ
多く の
いびき を かいて 寝て
コードは以下の通り
# -*- coding: utf-8 -*-
import json
from os.path import join, dirname
from watson_developer_cloud import SpeechToTextV1
speech_to_text = SpeechToTextV1(
username='{username}',
password='{password},
x_watson_learning_opt_out=False
)
#print(json.dumps(speech_to_text.models(), indent=2))
#print(speech_to_text.get_model('ja-JP_BroadbandModel'))
with open(join(dirname(__file__), 'rd319_16000.mp3'),
'rb') as audio_file:
print(json.dumps(speech_to_text.recognize(
audio_file, content_type='audio/mp3', model='ja-JP_BroadbandModel' , timestamps=True,
word_confidence=True),ensure_ascii=False,
indent=2))