Pepper SDK入門(19) SilentからListenへ


今回の目標

Listenを使ってPepperに簡単なフレーズを聞いてもらえるようにする回です。
Pepperが聞き手となることで、ひとり言は会話の始点に変わるでしょう。

//フレーズを決める(ここでは「Hello」)
PhraseSet phraseSet = PhraseSetBuilder.with(qiContext)
                                      .withTexts("Hello")
                                      .build();

//アクションをビルドする
Listen listen = ListenBuilder.with(qiContext)
                             .withPhraseSet(phraseSet)
                             .build();

//アクションを同期実行する
listen.run();

これが今回の学習内容になります。

Freeze!

Pepperは聞き取り中、上半身が微妙に動いています。既視感ですね。BodyLanguageは止められるのです。

Listen listen = ListenBuilder.with(qiContext)
                             .withPhraseSet(phraseSet)
                             .withBodyLanguageOption(BodyLanguageOption.DISABLED)
                             .build();

listen.run();

言語を変える

デフォルトでは優先言語を使うPepperですが、Localeを使用することで他の言語も選ぶことができます。
例えばPepperに中国語を聞き取って欲しい場合には以下のように書いてみましょう。小菜一碟〜

Locale locale = new Locale(Language.CHINESE, Region.CHINA);
Listen listen = ListenBuilder.with(qiContext)
                             .withPhraseSet(phraseSet)
                             .withLocale(locale)
                             .build();

listen.run();

Localeについてのより詳細な情報はAPIのドキュメントを参照してください。

Q.Listenしたら何ができる?

A.音声コマンドができる

$\style{background-color:yellowgreen;}{音声コマンドしてみよう}$
1.フレーズを決める
Pepperに聞いて欲しいフレーズを定義します。
一つのフレーズだけを定義することも可能ですが、ユーザーが全く同じことを台詞のように言ってくれるとは限りません。
あらかじめ、いくつかのバリエーションを設定しておきましょう。


PhraseSet phraseSetYes = PhraseSetBuilder.with(qiContext)
                                         .withTexts("yes", "OK", "alright", "let's do this") //Pepperに聞き取ってもらうフレーズ
                                         .build(); 

PhraseSet phraseSetNo = PhraseSetBuilder.with(qiContext)
                                        .withTexts("no", "Sorry", "I can't") //Pepperに聞き取ってもらうフレーズ
                                        .build(); 

2.Listenの実行

Listen listen = ListenBuilder.with(qiContext)
                             .withPhraseSets(phraseSetYes, phraseSetNo)
                             .build();

ListenResult listenResult = listen.run();

3.聞こえたことを教えてもらう
聞き取った人声に該当するフレーズを取得します。

Log.i(TAG, "Heard phrase: " + listenResult.getHeardPhrase().getText()); // ここで"Heard phrase:"の後ろに聞き取り結果を出力する
PhraseSet matchedPhraseSet = listenResult.matchedPhraseSet 

これでPepperも手のひらの上です。実機のサイズは変わりません。

ListenとChatの二者択一

Listenは短い対話に適したものです。対してChatは、もう少し長い会話のラリーに向いています。
そしてSayやListenを実行している時にChatが機能しないように、SayやChatを実行している時にListenは機能しないので注意してください。排反事象。

Not the Microscope but the Microphone〜音の波を電気信号に変えて〜

Pepperのマイクは単一指向性です。全指向性でも超指向性でも双指向性でもないため、前方からの声しか聞き取れません。Pepperに話しかけたい時には、まずPepperの前に立ちましょう。

Listenについてもっと知りたい場合は、例によってAPIのドキュメントを参照してください。

ここまでの内容はこれの"Catch few words"で体験できますので、是非。


またね。