Pepper
techcircle

Pepperハンズオン ~基本編A 対話基礎~ Dialogを使ってPepperと対話してみる [Tech-Circle#7]

More than 3 years have passed since last update.

本記事は 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 なファイルを開きましょう


アプリケーションの説明

アプリケーションは以下の様な流れになっています。

1-0-1.png

最初のSayの中のLocalized Text※のテキストは「私はあなたの好きな食べ物の色を答えます。」となっており、Pepperがこのセリフをしゃべりかけてくれます。

※日本語しか対応しないので、Localized TextText Editに置き換えても動作は同じになります。

1-0-2.png

Speech Reco.Word listは「りんご;みかん;ばなな」とします。これはPepperが待ち受ける言葉のリストになります。ここの言葉であればPepperの耳で拾うことができます。

1-0-3.png

Swich Caseへは、先ほどのWord list同様の値が入っています。ここで条件分岐させます。

1-0-5.png

Swich Case直後のSayの中のLocalized TextはPepperに喋らせる内容を入力します。


  • りんご → 赤

  • みかん → オレンジ

  • ばなな → 黄 
    1-0-4.png


アプリケーションの実行と動作確認

Choregrapheでアプリケーションを実行してみましょう。

するといい感じでPepperが答えてくれます。以下はChoreographeのダイアログビューです。

1-0-5.png

上記で実験したように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


アプリケーションの説明

プロジェクトを開くと、以下のようにボックスを並んでいます。

1-2-1.png

Text EditではSay Textに渡すテキストを入力します。テキストの内容は以下のようにしています。

「こんにちは。私は日本について詳しいです。都道府県名を言ってもらえたら、県庁所在地を答えましょう。」

一番右のDialogは作成時にトピックはqaです。対応しているqa_jpj.topファイルに、人間がなんと答えたら、Pepperになんと答えさせるか応答ルールを記載しています。

プロジェクトの内容ビューからqa_jpj.topファイルを開いて、中身を確認してみてください。

Screen_Shot_2015-07-21_at_19_26_02.png

ここでDialog/NotUnderstoodを使って、ルールが無い場合にも応答できるようにしています。

1-1-5.png


qa_jpj.top

u:(愛媛{県})県庁所在地は松山市です。

u:(徳島{県})県庁所在地は徳島市です。
u:(高知{県})県庁所在地は高知市です。
u:(香川{県})県庁所在地は高松市です。
u:(e:Dialog/NotUnderstood)四国以外は知りません。


アプリケーションの実行と動作確認(バーチャルロボ)

実際にバーチャルロボットに接続して実行してみましょう。

Text Edit Box + Say Text Box で最初にPepperが話しかけます。

1-1-6.png

以降はDialog Box記載のルールの通りPepperが応答してくれます。四国のいづれかの県を答えてみてください。

1-1-7.png

用意していないルールに対しても反応します。

1-1-8.png


アプリケーションの実行と動作確認(Pepper実機)

グループで1名、Pepper実機にアプリケーションをインストールして試してみましょう。

今回、Pepperに質問してみました。次にPepperに聞かれるパターンもやってみます。


Pepperに名前を聞かれて答えてあげる


アプリケーションの作成

アプリケーションの全体の構成としては、ボックスに変更はありません。先ほどのプロジェクトを別名で保存して、新しいプロジェクトとしてそのまま使いましょう。

全体の流れは先ほどと同じです。

1-3-1.png

変更するのは2箇所です。Text Editqa_jpj.topファイルです。

Text Editの中は「あなたのお名前は?」にしてみましょう。

qa_jpj.topファイルの応答ルールを変更してみましょう。例えば以下のようにしてみます。

1-3-3.png

u:(_*{です})$1 さんですね。よろしくおねがいします。

上記についての説明は以下です。


  • *: ワイルドカード

  • _: $1, $2, ..., $n で後方参照

  • {}: 付加情報、あってもなくても良い

その他のDialogのルールは以下を参照してください。


アプリケーションの実行と動作確認(バーチャルロボ)

まず、バーチャルロボットで、アプリケーションを実行してみてください。

1-3-1.png

Pepperに名前を話しかけると、

1-3-2.png

ちゃんと名前の部分を認識してくれています。


アプリケーションの実行と動作確認(Pepper実機)

次にPepper実機につないで音声で話しかけてみましょう。

グループで1名、Pepper実機にアプリケーションをインストールして試してみましょう。

いかがでしょう。あなたの名前はちゃんと認識したでしょうか?

Dialog*(ワイルドカード)を使った場合、可能性のある有限の候補から選ぶ作業ではなくなるため、認識精度が一気に落ちてしまいます。殆どの場合、誤認識されてしまったのではないでしょうか。


解答例

こちらの解答例は以下で確認することができます。

shiraco/pepper_dialog_sample2

次のステップ高精度のクラウドの音声認識を試してみます。


以上で、ハンズオン ~基本編A~ は終了です。

次のステップは以下の内容になります。

~基本B 音声認識~ Google Speech APIを使ってPepperにあなたの名前を知ってもらう - Qiita


本ハンズオンのイベントページ

Tech-Circle#7 Pepper ハンズオン