Pepperの音声認識を使ってクイズアプリを作る:Pepperで始めるロボットプログラミング(3)(2/4 ページ)
Pepperには音声認識機能が搭載されており、GUIで簡単に「音声に反応するロボット」をプログラミングできる。プログラミングに有効な「ボックス」の使い方も覚えよう。
入出力ポートの種類と使い方
本連載では今まで、ボックスの使い方について詳しく説明しないままで来たが、ボックスの入出力について、ここでちょっと補足しておこう。
ボックスの両側に並んでいる四角いアイコンが入出力に使うポートである。左側に入力、右側に出力のポートが置かれているので、Choregrapheでは基本的に、ボックスを左から右に並べて、各ボックスの出力と入力をつなげていくことになる。
ポートにはそれぞれ固有の名前が付けられているのだが、さまざまな種類があって、色とアイコンで意味を見分けることができる。まず色についてであるが、これには引き渡されるデータにより、以下の4タイプが用意されている。
- バン(黒)…タイミングを伝える信号で、意味のあるデータは持たない
- 数(黄)…データとして数値(小数または整数)が渡される
- 文字列(青)…データとして文字列が渡される
- ダイナミック(灰)…バン、数、文字列のいずれかとなる
先ほどのサンプルアプリを見ると、Speech Reco.ボックスからSwitch Caseボックスには、文字列データが渡されていることが分かる。ただSwitch Caseの入力はダイナミックなので、文字列以外にも対応していることが見て取れる。
一方、アイコンは動作に関する情報を示している。これには入力側と出力側に、以下の種類がある。
- 入力
「OnStart」…このポートに入力があると、ボックスは開始状態になる
「OnStop」…このポートに入力があると、ボックスは停止状態になる
「onEvent」…開始/停止以外の入力。意味はボックスにより異なる
- 出力
「onStopped」…ボックスが停止状態になると出力される
「即時」…停止以外の出力。意味はボックスにより異なる
ポートのアイコンと色に注目した上で、次のアプリを見て欲しい。これは、Pepperが単語を認識できなかったときの反応を追加したものだ。
単語認識に失敗したとき、Speech Reco.ボックスの右下、onNothingという名前のポートから信号が出力される。その後ろのSayボックスで「良く聞こえませんでした。もう一度言ってください」というせりふを喋らせているのだが、じつはPepperは自分自身の声も認識しようとしてしまうため、誤動作する場合がある。そんなときは、onNothing出力とonStop入力を繋げて、Speech Reco.をいったん止めてしまえばいい。
ここで1つ注意して欲しいのは、バーチャルロボットと実機で挙動が異なる場合があるということだ。実機だと、単語が認識できなかったとき、前述のようにonNothing出力があるが、バーチャルロボットだと、ワードリストに関係なく、なぜか入力した単語がそのままSwitch Caseに引き渡されてしまう。Choregrapheのバージョンが上がると改善される可能性はあるが(現在は2.0.5)、Speech Reco.を使うときは気をつけて欲しい。
Copyright © ITmedia, Inc. All Rights Reserved.