- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- VstoneMagicを使ってみる/プログラミング/対話してみよう へ行く。
対話してみよう †
今度は音声認識機能を使って、ロボットとおしゃべり(対話)してみましょう。
音声認識機能もクラウドサーバへの接続を行うため、インターネットが利用できるネットワーク環境で動作させてください。
音声認識を使うブロックはいくつか存在しますが、ここでは一番シンプルな「音声認識(ベストスコア)」を使います。ツールボックスより、音声認識(ベストスコア)のブロックをドラッグ&ドロップしてください。ドロップ先は何もない場所を選び、どこにも接続されない形でクラスに追加してください。
音声認識のブロックは分岐構造になっています。分岐構造を持つブロックは、開始・終了のブロック間に複数のコネクタを持ち、各コネクタごとに分岐条件を設定します。ブロックの実行時には、上のコネクタから順番に条件が成立するかを確認し、条件が成立した場合、そこに接続されたブロックへ進みます。
音声認識(ベストスコア)のブロックは、初期設定で2個の分岐を持ち、各分岐の条件は、上側が「こんにちはと聞き取れた場合」、下側が「そうでない場合」となります。この設定を使って、まずは「こんにちは」と話しかけたらロボットが「こんにちは」と返し、それ以外の場合は「何ですか?」と返すプログラムを作りましょう。
まずは各ブロックをつなぎかえます。まずは、既にメソッドにつながっている発話ブロックを切り離し、代わりに音声認識ブロックをつなぎます。
つながったブロックの切り離しは、キーボードのSHIFTキーを押しながらブロックをドラッグ&ドロップします。発話ブロックを、SHIFTキーを押しながらドラッグして切り離してください。
次に、音声認識ブロックをメソッドに接続します。クラスウィンドウ内のブロックを接続する方法は3通りあり、本項目で順次説明していきます。まずは、コネクタ同士を隣接する方法を説明します。
音声認識の開始側ブロックをドラッグし、下図のようにメソッドの開始側ブロックのコネクタに隣接させてください。隣接するとそれぞれのブロックのコネクタが (接続可能)になります。この状態でマウスのボタンを離し、接続してください。
次に音声認識ブロックと発話ブロックをつなぎます。今度は、ブロックを接続先のコネクタにドラッグ&ドロップする方法を説明します。
発話ブロックを、音声認識ブロックの上側の分岐のコネクタへドラッグしてください。ドラッグするとコネクタが (接続可能)になるので、そこでドロップしてブロックを接続してください。
ついでに、プログラムを見やすくするため各ブロックをドラッグして見やすい場所に移動・整列させてください。
続いて、音声認識の下側の分岐(「こんにちは以外が聞き取れた・聞き取りに失敗した」)のプログラムを作ります。もう一つ発話ブロックをクラスにドラッグ&ドロップして下さい。
発話ブロックを追加したら、音声認識ブロックと接続します。音声認識の下側の分岐のコネクタをドラッグしてください。ドラッグすると矢印が伸びるので、その矢印を追加した発話ブロックにドラッグ&ドロップしてください。
最後に、追加した発話ブロックをクリックして、プロパティウィンドウよりsay_wordの設定を「こんにちは」から「何ですか?」に変えてください。
プログラムが完成したら実行してみましょう。実行すると、ロボットの目が水色に変化して認識を開始するので、額にあるマイクに向かって「こんにちは」と話しかけましょう。「こんにちは」と正しく聞き取れた場合はロボットが「こんにちは」と返し、うまく聞き取れなかったり別の言葉を話しかけると「何ですか?」と返します。
マイクに近すぎたり遠すぎたりすると正しく聞き取れない場合があります。
- ○分岐条件を追加してみる
次に、音声認識ブロックに条件分岐を追加して、「名前は?」と聞いたら「Sotaです」と答えるようにしてみましょう。
分岐に関する設定は、プロパティウィンドウに表示されません。分岐構造を持つブロックをダブルクリックし、条件分岐の設定ダイアログを別途開いて行います。
条件分岐の設定ダイアログは、左側にブロックに登録された分岐条件をリストアップし、hぢあり側で選んだ分岐条件の詳細設定を右側に表示します。
それでは、音声認識ブロックをダブルクリックして、分岐の設定画面を開いてください。開いたら「条件の挿入」をクリックし、新しく分岐条件をリストに追加してください。続いて、リスト上に追加された分岐をクリックして画面右側にその設定を表示し、wordの項目をダブルクリックして「何ですか」に設定してください。
設定ができたら「OK」をクリックして条件分岐の設定ダイアログを閉じてください。ダイアログを閉じると、音声認識のブロックが縦に伸びて、条件分岐が一つ追加されます。追加された条件のコネクタに、新しい発話ブロックをドラッグ&ドロップして接続し、発話内容(say_word)を「ソータです」に書き換えてください。
ここまで作成できたらプログラムを実行し、ロボットに「名前は」と話しかけてみましょう。正しく認識されたら「Sotaです」と返答します。
- ○認識結果を確認する
音声認識の認識結果は、コンソールウィンドウに逐次表示されます。
複数の候補が表示され、
認識結果の中に条件分岐の認識ワードと完全一致するワードが見つかれば、条件成立とみなされます。目的の言葉が認識されない場合、ここで表示される結果を参照して認識ワードを調整しましょう。
- ○無限ループを追加して、何度も