- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- VstoneMagicを使ってみる/プログラミング/顔と名前を覚えさせてみよう へ行く。
- 1 (2016-01-08 (金) 15:44:34)
- 2 (2016-01-08 (金) 19:51:28)
- 3 (2016-01-10 (日) 17:15:08)
- 4 (2016-01-10 (日) 20:15:45)
- 5 (2016-01-12 (火) 01:53:36)
- 6 (2016-01-15 (金) 17:20:13)
- 7 (2016-01-16 (土) 16:00:10)
- 8 (2016-01-25 (月) 08:48:59)
- 9 (2016-01-25 (月) 18:32:53)
- 10 (2016-03-18 (金) 02:58:28)
- 11 (2016-03-22 (火) 04:00:25)
- 12 (2016-06-15 (水) 00:55:43)
- 13 (2016-06-27 (月) 10:04:27)
- 14 (2016-06-27 (月) 11:30:47)
- 15 (2018-02-15 (木) 02:38:36)
顔と名前を覚えさせてみよう †
顔認識や音声認識の機能に関連して、発話の中から人の名前を取得したり、検出した顔の特徴を記憶して個人を特定するブロックが備わっています。
これらを利用することで、より深いコミュニケーションプログラムを作ることができます。また、これらの機能は変数を利用します。
それでは、実際にプログラムを作成しながら、それらの機能の使い方を説明していきます。
本項目のプログラムも新しいメソッドで作成していきます。クラスウィンドウにメソッドのブロックをドラッグ&ドロップし、エクスプローラよりそのメソッドをメインメソッドに設定してください。
- ○ロボットに自分の名前を聞き取らせてしゃべらせてみる
名前の取得ブロックは、ロボットが聞き取った言葉の中から人名だけを認識する機能です。例えばロボットに「私は山田太郎と言います」と話しかけると、その中から「山田太郎」だけを認識することができます。
まずはロボットに自分の名前を話しかけて復唱させてみたいと思います。まず、名前の取得ブロックをドラッグ&ドロップし、メソッドに接続してください。
名前の取得ブロックは分岐構造になっていますが、音声認識ブロックのように名前に対する分岐を行うのではなく、分岐条件は「名前を聞き取ることができたかどうか」の二択で固定されています。
認識した人名は speechRecogResult という変数に文字列として代入され、他の命令ブロックよりこの変数を参照する形で利用します。
それでは、名前の取得ブロックの上側の分岐(名前が聞き取れた場合)に発話ブロックを追加してください。
次に、発話ブロックの設定項目より、say_word内の「変数選択」欄をクリックしてください。クリックすると項目右端にプルダウンボタン([▼]マーク)を表示します。
表示されたプルダウンボタンをクリックすると、下に選択肢が表示されます。この中から speechRecogResult をクリックしてください。
ここまでプログラムを作成したら、一度実行してみましょう。ロボットの目が水色になって音声認識を開始したら、「私は○○です」のように人名を含む文章を話しかけてみて、ロボットがその中の人名だけを返答するか確認してみてください。
名前によっては認識しづらい場合があるので、上手く認識しない場合は「山田」など比較的一般的な名前で試してみてください。
このプログラムでは、ロボットの発話がこれまでのような固定されたワードではなく、認識した名前に応じて変化します。これは、発話ブロックが参照している変数speechRecogResultの内容が名前の取得を行うたびに変化しており、発話ブロックはその時のspeechRecogResultが記録している内容を読み上げているためです。
このように、変数を利用することで、プログラムを柔軟に変化させたり、様々なブロックで同じ情報を共有したりすることができます。
- ○変数を使って名前を文章に組み込む
speechRecogResultで名前をしゃべらせることには成功しましたが、この変数には名前しか記録されていないので、そのままでは「あなたの名前は○○です」のような文章を発話できません。
そこで、新たに変数を作成し、前後の文字列と名前を組み合わせて文章を作ります。
新しい変数の作成は、変数宣言ブロックを使います。変数宣言ブロックをドラッグ&ドロップし、発話ブロックの前につないでください。ブロックをつないだらクリックして設定項目を表示してください。
変数宣言ブロックの設定項目では、変数の名前(name)・変数の型(type)・初期値(initParam)をそれぞれ設定します。
変数の名前には、他に存在する変数と重複しない名前を付けます。ここでは「speechText」と命名してください。
変数にはそれぞれ数値・文字列等記録できる情報の種類(型)が決められており、変数の作成時に対応する型を設定する必要があります。speechRecogResultは文字列を扱う「String」という型なので、typeの項目は同じ「String」を選択してください。
初期値は、作成する変数に最初に記憶させる内容を設定します。ここでは名前の前に来る「あなたの名前は」を(定数:String)の欄に入力してください。
次に、変数の演算によって「あなたの名前は」の後に人名を付け足します。演算ブロックをドラッグ&ドロップし、変数宣言ブロックの後ろにつないでください。
- ○