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