本記事は Tech-Circle#7 Pepper ハンズオン のハンズオン ~基本編A~ の内容です。
Dialogを使ってPepperと対話してみる(所要時間目安: 15分)
はじめに
専用の作業ディレクトリを作成して移動します。以降の作業はこのディレクトリで行います。
$ mkdir -p ~/workspace/techcircle
$ cd ~/workspace/techcircle
ハンズオンAで利用するプロジェクトはshiraco/techcircle_pepper_handson_aにあります。作業ディレクトリに一括git cloneでダウンロードしておきます。
$ git clone https://github.com/shiraco/techcircle_pepper_handson_a.git
$ cd techcircle_pepper_handson_a
ディレクトリ構成は以下のようになっています。
$ tree -L 1 # ※tree はディレクトリ階層を表示させるコマンドです。今後も含めて、特に実行の必要はありません。
.
├── pepper_speech_sample # ①で利用
└── pepper_dialog_sample # ②で利用
以降では上記のプロジェクトを利用します。
① (復習) Speech Reco. + SayでPepperと対話してみる
(**Speech Reco.**の基本的な使い方は、アトリエ秋葉原公式ワークショップ基礎編#1 SDK Basicも参考にしてください。)
Pepperに好きな食べ物を教えてあげよう
プロジェクトのオープン (pepper_speech_sample)
簡単なサンプルとして、好きな果物の色を教えてくれるアプリを動かしてみます。
このプロジェクトは先ほどダウンロードしたpepper_speech_sampleにあります。ここではダウンロードした完成したサンプルアプリを起動してみて動作確認をします。
$ cd ~/workspace/techcircle/pepper_speech_sample
ディレクトリ構成は以下のようになっています。
Choregrapheを起動して、「プロジェクトを開く」から、pepper_speech_sample.pml
を選んで開きます。
$ tree .
.
├── LICENSE
├── README.md
└── pepper_speech_sample
├── behavior.xar
├── manifest.xml
└── pepper_speech_sample.pml
(ヒント) プロジェクトを開くときは拡張子が *.pml
なファイルを開きましょう
アプリケーションの説明
最初のSayの中のLocalized Text※のテキストは「私はあなたの好きな食べ物の色を答えます。」となっており、Pepperがこのセリフをしゃべりかけてくれます。
※日本語しか対応しないので、Localized TextはText Editに置き換えても動作は同じになります。
Speech Reco.のWord listは「りんご;みかん;ばなな」とします。これはPepperが待ち受ける言葉のリストになります。ここの言葉であればPepperの耳で拾うことができます。
Swich Caseへは、先ほどのWord list同様の値が入っています。ここで条件分岐させます。
Swich Case直後のSayの中のLocalized TextはPepperに喋らせる内容を入力します。
アプリケーションの実行と動作確認
Choregrapheでアプリケーションを実行してみましょう。
するといい感じでPepperが答えてくれます。以下はChoreographeのダイアログビューです。
上記で実験したようにSpeech Reco. + SayでPepperに喋らせることができますが、
対話バリエーションに依存してボックスの数が増えてしまいますね。
② Dialogを使ってPepperからの質問に答えてみよう
(Dialogの基本的な使い方は、アトリエ秋葉原公式ワークショップ基礎編#3 Dialogを使ってみようも参考にしてください。)
Pepperに都道府県庁所在地を聞いてみよう
Dialogを使って、簡単なサンプルとして、都道府県庁所在地を応えてくれるアプリを作ってみます。
プロジェクトのオープン (pepper_dialog_sample)
さきほどダウンロードしたpepper_dialog_sampleを開きます。ディレクトリ構成は以下のようになっています。Choregrapheを起動して、新たに「プロジェクトを開く」から、pepper_dialog_sample.pml
を選んで開きます。
$ cd ~/workspace/techcircle/pepper_dialog_sample
$ tree .
.
├── LICENSE
├── README.md
└── pepper_dialog_sample
├── behavior.xar
├── manifest.xml
├── pepper_dialog_sample.pml
└── qa
├── qa.dlg
└── qa_jpj.top
アプリケーションの説明
Text EditではSay Textに渡すテキストを入力します。テキストの内容は以下のようにしています。
「こんにちは。私は日本について詳しいです。都道府県名を言ってもらえたら、県庁所在地を答えましょう。」
一番右のDialogは作成時にトピックはqaです。対応しているqa_jpj.top
ファイルに、人間がなんと答えたら、Pepperになんと答えさせるか応答ルールを記載しています。
プロジェクトの内容ビューからqa_jpj.top
ファイルを開いて、中身を確認してみてください。
ここでDialog/NotUnderstood
を使って、ルールが無い場合にも応答できるようにしています。
u:(愛媛{県})県庁所在地は松山市です。
u:(徳島{県})県庁所在地は徳島市です。
u:(高知{県})県庁所在地は高知市です。
u:(香川{県})県庁所在地は高松市です。
u:(e:Dialog/NotUnderstood)四国以外は知りません。
アプリケーションの実行と動作確認(バーチャルロボ)
実際にバーチャルロボットに接続して実行してみましょう。
Text Edit Box + Say Text Box で最初にPepperが話しかけます。
以降はDialog Box記載のルールの通りPepperが応答してくれます。四国のいづれかの県を答えてみてください。
アプリケーションの実行と動作確認(Pepper実機)
グループで1名、Pepper実機にアプリケーションをインストールして試してみましょう。
今回、Pepperに質問してみました。次にPepperに聞かれるパターンもやってみます。
Pepperに名前を聞かれて答えてあげる
アプリケーションの作成
アプリケーションの全体の構成としては、ボックスに変更はありません。先ほどのプロジェクトを別名で保存して、新しいプロジェクトとしてそのまま使いましょう。
変更するのは2箇所です。Text Editとqa_jpj.top
ファイルです。
Text Editの中は「あなたのお名前は?」にしてみましょう。
qa_jpj.top
ファイルの応答ルールを変更してみましょう。例えば以下のようにしてみます。
u:(_*{です})$1 さんですね。よろしくおねがいします。
上記についての説明は以下です。
- *: ワイルドカード
- _: $1, $2, ..., $n で後方参照
- {}: 付加情報、あってもなくても良い
その他のDialogのルールは以下を参照してください。
- pepperとの会話を進化させるQiChat-Syntaxまとめ(自分用メモ) - Qiita
- 公式ドキュメント(Choregrapheヘルの参照API)
- NAOqi Developer guide > NAOqi Framework > NAOqi API > NAOqi Audio > ALDialog > QiChat - Table of Content
アプリケーションの実行と動作確認(バーチャルロボ)
まず、バーチャルロボットで、アプリケーションを実行してみてください。
Pepperに名前を話しかけると、
ちゃんと名前の部分を認識してくれています。
アプリケーションの実行と動作確認(Pepper実機)
次にPepper実機につないで音声で話しかけてみましょう。
グループで1名、Pepper実機にアプリケーションをインストールして試してみましょう。
いかがでしょう。あなたの名前はちゃんと認識したでしょうか?
Dialogで*
(ワイルドカード)を使った場合、可能性のある有限の候補から選ぶ作業ではなくなるため、認識精度が一気に落ちてしまいます。殆どの場合、誤認識されてしまったのではないでしょうか。
解答例
こちらの解答例は以下で確認することができます。
shiraco/pepper_dialog_sample2
次のステップ高精度のクラウドの音声認識を試してみます。
以上で、ハンズオン ~基本編A~ は終了です。
次のステップは以下の内容になります。
~基本B 音声認識~ Google Speech APIを使ってPepperにあなたの名前を知ってもらう - Qiita
本ハンズオンのイベントページ
Tech-Circle#7 Pepper ハンズオン