概要
PythonからIBMのAI、Watsonに音声データを送信していわゆる音声認識をしましょうというお話です。
環境
- MacBook Pro high Serra 10.13.5
- Python 3.6.6
- pip 10.0.1
- Visual Studio Code
準備
- Pythonのインストール(いうまでもなく)
- IBM Cloudアカウントの入手
https://www.ibm.com/watson/developercloud/
からアカウントを作成する。
手順
- Pythonで
watson-developer-cloud
を使えるようにする。 - Watsonにアクセスするusername、passwordを取得する。
- Watsonに音声データを送信する。
- Watsonの結果を表示する。
Pythonでwatson-developer-cloud
を使えるようにする。
ターミナルで次のコマンドを打ちます。
pip install "watson-developer-cloud>=1.4.0"
最後の行に`Successfully"と表示されていれば大丈夫です。
Windowsでうまく行かない人はもしかしてVisual Build Toolsがインストールされていないかも?
https://qiita.com/white0221/items/b48f1b64dbd810e21702
以前まとめたものです。
Watsonにアクセスするusername、passwordを取得する。
IBMのサイトでSpeech To Textを選んで作成し、視覚情報を得ます。
{
"url": "https://stream.watsonplatform.net/text-to-speech/api",
"username": "••••••••••••••••••••••••••••••••••••",
"password": "••••••••••••"
}
こんな風にマスクされているので右上の目のマークを押して表示させます。
このusernameとpasswordを用いてwatsonと通信を行います。
サンプルコード
今回はvoice.wav
ファイルを送信することにします。また、音声データは日本語として認識するようにja-JP_BroadbandModel
を指定します。サポートしている音声ファイルや言語はIBMのAPI referenceを参照。音声ファイルは頑張って録音して、wav形式でなければオンラインコンバータか何かでコンバートしましょう。返却データはjson形式です。
from watson_developer_cloud import SpeechToTextV1
import json
# define
user = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
pswd = "xxxxxxxxxxxx"
audio_file = open("voice.wav", "rb")
cont_type = "audio/wav"
lang = "ja-JP_BroadbandModel"
# watson connection
stt = SpeechToTextV1(username=user, password=pswd)
result_json = stt.recognize(audio=audio_file, content_type=cont_type, model=lang)
# print
for i in range(len(result_json["results"])):
print(result_json["results"][i]["alternatives"][0]["transcript"])
# json file save
result = json.dumps(result_json, indent=2)
f = open("result.json", "w")
f.write(result)
f.close()
実行例
$ python SpeechToText.py
こんにちは ワトソン の 音声認識 テスト です
{
"results": [
{
"alternatives": [
{
"confidence": 0.xxx,
"transcript": "こんにちは ワトソン の 音声認識 テスト です "
}
],
"final": true
}
],
"result_index": 0
}
まとめ
こんな感じに以外と手軽にできました。
おそらく英語ができればもっと色々できると思うんですが・・・。
IBMさん、ドキュメントの日本語化お願いします。
WebSocketを用いてリアルタイム音声認識ができるはずなので模索中です。できたら記事にします。
参考文献
https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/python.html?python#introduction
https://qiita.com/nanako_ut/items/7d53c81b89cdeae1e676