- NTT docomoは音声認識、音声合成、画像認識など様々なAPIを無料(制限あり)で公開してくださっています。
- 今回は数あるdocomo API群の中から、「雑談対話API」を使って、自然言語で対話できるロボットを作ってみます。
- 雑談対話APIは通常の雑談モードのほかに、しりとりで遊ぶことができるモードもあります。
- 雑談対話APIはSDKも用意されていますが、ここではより簡単に利用できるWeb API(REST)を使います。
- おなじみのライブラリ(JuliusとAquesTalk)を使い、オフラインで音声認識と音声合成を行います。説明は省きますが、もちろんこれらの機能をdocomoのAPIに差し替えることもできます。
事前の準備
- BPK-03 サーボをセンタリングしてみるを完了させておいてください。gitのレポジトリをクローンしておいてください。
- BPK-08 AquesTalk Piで喋らせてみるを完了させておいてください。日本語音声合成ツール「AquesTalkPi」をインストールし、スピーカーの設定を終えてください。
- BPK-12 : 声を録音して、そのまま再生を参照し、マイクの設定を終えておいてください。
- BPK-14 : Juliusで音声認識してみるを完了させてください。音声認識ツール「Julius」をインストールしておいてください。
docomo Developer Supportでの設定
- まずはdocomo Developer Supportの雑談対話APIのページを読んで、概要を把握しておくとよいでしょう。
- docomoのAPIを初めて使うひとはアカウント登録のページをクリックし、アカウントを取得してください。
- docomo Developer Supportにログインし、マイページから、「API利用申請」をクリックしてください。
- 今回は別にアプリケーションを作るわけではないのですが、「アプリケーション名」「アプリケーション概要」「サービス開始日」などは必須項目なので適当に埋めてください。
- 「雑談対話」を選択してください。他にも使ってみたいAPIがあれば、選択しておくとよいでしょう。
- 申請後ちょっと待つと、「API利用申請(開発用APIキー)受付のお知らせ」という件名のメールが届きます。
- 再びマイページに行くと、「API key」が表示されているはずです。これをスクリプトにコピペする必要がありますので、コピーしておいてください。
- 無料利用の有効期限は90日間です。
gitレポジトリの更新
- gitで公開しているbezelieのライブラリですが、ときどき更新してますので、以前クローンしたかたも改めて更新(git pull)してください。
1 2 3 4 |
$ cd $ cd bezelie/pi $ sudo git pull |
APIキーの埋め込み
- 先ほど取得したAPIキーをサンプルプログラムに書き込みます。
- サンプルプログラムをテキストエディターで開いてください。
1 2 |
$ sudo nano sampleAPIdialogue1.py |
- 17行目あたりにある「API_KEY = ” 」のクォーテーションの間にAPIキーをペーストしてください。
- エディターを保存終了してください。
サンプルプログラムの実行
- パイソンのスクリプトを実行します。
1 2 |
$ python sampleNDAdialogue1.py |
- マイクに向かって話しかけてください。ロボットが返事をしたら成功です。
- 正しく認識されない時は、マイクに近づいたり、エアコンを切るなど周囲のノイズを取り除いてみてください。
- Ctrl+Cで終了させることができます。
しりとり
- モードを切り替えることで、しりとりロボットにすることができます。サンプルプログラムを開いてください。27行目あたりに、以下のような場所があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
payloadDic = { "utt": message, "context": "", "nickname": "光", "nickname_y": "ヒカリ", "sex": "女", "bloodtype": "B", "birthdateY": "1997", "birthdateM": "5", "birthdateD": "30", "age": "16", "constellations": "双子座", "place": "東京", "mode": "dialog", # 通常雑談 # "mode": "srtr", # しりとり "t": "" # 無指定:デフォルトキャラ, 20 : 関西弁キャラ, 30 : 赤ちゃんキャラ } |
- 初期状態ではmodeが’dialog’になっていますが、この行の行頭にコメントマーク「#」をつけ、代わりに下の行のコメントマークを外してmodeを「srtr」に変更してみてください。ロボットがしりとりするようになります。
- 最後に「ん」がつく言葉を言ったら負けです。
用語解説
API
- 「Application Programming Interface」の略で、WEB上に公開されていてユーザーが利用することができるソフトウェアのことです。Google, NTT docomo, Amazon, LINE, IBM, microsoftなど多くの企業が、APIを公開しているので、APIを活用することで簡単に高度な技術を利用することができます。
REST API
- 「REST形式で利用できるAPI」のことです。「REST」は「REpresentational State Transfer」の略で、URLに対してGET,POST,PUT,DELETEでリクエストを送信し、レスポンスをjsonやXMLで受け取る形式のことです。