• 追加された行はこの色です。
  • 削除された行はこの色です。
#topicpath

*基本的な対話ルーチンを作ろう [#xb8ddbf7]

#contents


ここまでのプログラムを組み合わせて、対話ルーチンの基礎を作りましょう。

具体的には、次のような動作を行うプログラムを作りましょう。

①顔追従で周囲の人を探す
②顔を見つけたら挨拶。知っている人なら名前を言う。知らない人なら「はじめまして」と言う
③以下の言葉に対応する
 「こんにちは」→「こんにちは」を返す
 「覚えて」→名前を聞いて覚える
 「忘れて」→知っている顔なら登録削除する
 「さようなら」→音声対話を終了する


-○顔認識処理の作成


まずは、顔を認識して、知っている人か知らない人かで別の挨拶をするところまで作りましょう。


顔追従のプログラムを作り、顔が見つかったら顔の特徴取得のブロックで特徴を取得、続いて知っている顔か?のブロックで、知っている場合は「こんにちは○○さん」、知らない場合は「始めまして」と発話させましょう。


ここまで作成したらプログラムを実行し、正しく認識・発話するか確認してみましょう。



-○音声対話部分の処理の作成


次に音声対話のプログラムを別のメソッドで作りましょう。

顔追従のプログラムをメインメソッドに設定し、顔が見つかった後の分岐を



次に音声対話の部分を作りましょう。
全ての処理を同じメソッドに入れてしまうとプログラムが見づらくなってしまうため、音声対話の処理は、別のメソッドを追加してそちらに作っていきましょう。

メソッド名は「talk」としておきましょう。

メソッドを追加したら、音声認識(ベストスコア)ブロックを一つつなげて、それぞれの分岐に発話ブロックをつなげてください。
そして、それぞれの発話ブロックに対して、「こんにちは」の分岐側には「こんにちは」、そうでない場合の分岐側には「何ですか?」と設定してください。

次に、顔認識のメインメソッドから音声対話のメソッドを呼び出すところを作ります。エクスプローラには現在クラスに存在するメソッドが一覧表示されており、このリストから呼び出したいメソッドをツールボックスのようにクラスウィンドウへドラッグ&ドロップすると、そのメソッドを呼び出すブロックが作成されます。

それでは、エクスプローラからtalkメソッドをドラッグ&ドロップして、顔認識のメソッドの顔が見つかったか?ブロックの後につなげましょう。


ここまでできたら一度プログラムを実行してみましょう。顔が見つかったら挨拶し、その後音声認識に進みます。目が水色になったらロボットに「こんにちは」と話しかけて、ロボットが「こんにちは」と返すか確認しましょう。



このプログラムを実行して気になった人もいると思いますが、一度音声認識(対話)が終わると、いちいち「顔を見つけて挨拶する」所からやり直しになります。これでは対話している感じにならないので、ロボットに「さようなら」と話しかけるまで音声対話部分(talkメソッド)だけを繰り返すようにします。