![見出し画像](https://assets.st-note.com/production/uploads/images/74820630/rectangle_large_type_2_f72f30c19808428bcd32eaca00f54b01.png?width=800)
【Robo Blocksの使い方】フリーワードを聞き取る おうむ返しPepper
ソフトバンクロボティクスでPepperを使ったプログラミング教育を担当してる佐藤です!
今回は聞き取りを行う際に、聞き取る言葉の候補を指定せず、フリーワードで聞き取る方法をご紹介します!
通常の聞き取り
通常、聞き取りを行う際は聞き取る言葉のリストを準備して聞き取りを開始します。以下の例ですと、「はい」か「いいえ」を聞き取るようになります。
![](https://assets.st-note.com/img/1647953758143-wXguRJjVa2.png)
この聞き取りで「はい」か「いいえ」以外の言葉を聞き取った場合は、その言葉がどちらに近いか判定されます。(どんな言葉を聞き取っても必ず「はい」か「いいえ」のどちらかを聞き取ったことになります。)
この方が聞き取りの精度が高くなるため、基本的にはこの方法で聞き取りを作成していただきたいのですが、場合によっては言葉を指定せず、フリーワードで聞き取りたいこととがあると思います。
そんな時に使えるのが *(ワイルドカード)です。
ワイルドカードを使った聞き取り
以下のように聞き取る言葉に*(ワイルドカード)を指定すると、フリーワードでの聞き取りになります。
![](https://assets.st-note.com/img/1647954100837-YKYtf1zHGX.png)
Pepperが聞き取った言葉をそのまま返すオウム返しプログラムにして動作を確認してみます。
![](https://assets.st-note.com/img/1647954248765-K7eOkk7NM3.png?width=1200)
Pepperが聞き取った言葉をそのまま返していることから、フリーワードで聞き取っていることがわかります。
余談:QiChat
Robo Blocksの拡張機能にQiChatという機能があります。QiChatは家庭用Pepperが行っているような大きな会話を作るためのものです。
上級者向けの機能ですが、これを使うと*を使った聞き取りの幅が広がります。
*はどんな文字でも聞き取るという意味ですので、組み合わせると聞き取りたい言葉の一部のみを指定するようなことも可能です。
例えば以前紹介したしりとりプログラムで特定の文字から始まる言葉しか聞き取りたくない、と言ったときに聞き取る言葉の先頭の文字だけ指定することができます。
例えば以下の例では「こ」から始まる言葉のみ聞き取ってオウム返しします。
![](https://assets.st-note.com/img/1647955012543-1GwHNHhgse.png?width=1200)
*の前についている_は入力の保存で、ロボットの発話内容にある$1は保存した内容の1番目という意味になります。
こんな方法もあるんだ、というご参考までにご紹介させていただきました!
まとめ
今回はフリーワードで聞き取りを行う方法を紹介しました。
やってみていただくとわかると思うのですが、パソコン上でうまくいったとしても現実のPepperで行うと周りの音があったりして、聞き取りの精度がうまく出ないようなこともあると思います。
基本的には聞き取る言葉を指定したほうが精度が高くなりますし、フリーワードの場合は音声認識に時間がかかる場合もありますので、どうしてもという時だけご利用をご検討ください!
また、余談で紹介させていただいたQiChatは上級者向けになりますので、普通の会話では物足りないな、という気持ちになってきたら初めて調べてみる程度で良いと思います。
公式ドキュメントは下記になります。
Robo Blocksで使えるのはおまけみたいなもので、ドキュメントも英語のみですが、興味のある方は是非ご覧ください!
http://doc.aldebaran.com/2-5/naoqi/interaction/dialog/dialog.html