Pepperには音声認識機能が搭載されており、GUIで簡単に「音声に反応するロボット」をプログラミングできる。プログラミングに有効な「ボックス」の使い方も覚えよう。
「人間が話す言葉を理解する」これが音声認識機能である。技術としては古くからあるものだが、広く一般に普及したといえるのはiOSの「Siri」あたりからだろうか。Pepperでは、GUIベースの開発環境「Choregraphe(コレグラフ)」を使って、簡単に音声認識を利用したアプリケーションを作ることが可能だ。今回は、Pepperの音声認識について、使い方を紹介していくことにしたい。
キーボードやマウスといった入力デバイスがあるPCとは違い、Pepperのようなロボットでは、音声認識が基本的なユーザーインタフェースとなる。Pepperは音声認識のために、頭部にマイクを搭載しているのだが、ちょっと変わっているのはその場所。じつはマイクがあるのは頭頂部だ。たまに、Pepperの耳元に話しかけている人を見かけるが、耳に入っているのはスピーカーなので、間違えないようにしよう。
普通に音声認識するだけならマイクは1つでも構わないのだが、Pepperでユニークなのは、マイクが頭頂部の左前方/右前方/左後方/右後方の4カ所に設置されていることだ。このようにすることで、各マイクへの音の到達時間の差から、Pepperのどの方向から音が来たのかまで分かるというわけだ。Choregrapheには、この機能を利用した「Sound Tracker」というボックスも用意されている(ただ、通常は4つのマイクを意識する必要はない)。
Choregrapheで音声認識機能を利用するときに、まず覚えて欲しいのが「Speech Reco.」と「Switch Case」という2つのボックスを組み合わせるやり方だ(基本ボックスライブラリで、Speech Reco.はAudio→Voiceフォルダに、Switch CaseはFlow Controlフォルダにそれぞれ格納されている)。
まずSpeech Reco.ボックスは、あらかじめ設定しておいたワードリストの中から、音声入力に最も近いと思われる単語を選択し、出力するというものだ。認識させたい単語は、スパナのアイコンをクリックして開くパラメータ画面の"Word list"の欄に「単語A;単語B;単語C…」というように、半角のセミコロンで区切って指定しておく。その他のパラメータについては、とりあえずデフォルトのままでいいが、もし誤認識が多いようなら、「Confidence threshold」(信頼性)の数値を高めに設定しても良いだろう。
認識した単語により、処理を分岐させるのが次のSwitch Caseボックスである。ここでは、先ほどのSpeech Reco.で設定した単語を、「"単語A"」「"単語B"」「"単語C"」のように、ダブルクォーテーション( " )付きの形式で空欄に入力する。入力欄は初期状態で3段しかないが、3段目に入力するとその下に4段目が現れるようになっているので、それを繰り返せば、選択肢が4つ以上あるケースにも対応できる。
ちなみに、文字列をダブルクォーテーションで囲むのは、プログラミングでは良くある作法の1つだ。こういった文法はプログラミング言語によっても異なるのだが、ここでは「そういうもの」と思って、先に進んで欲しい。
Switch Caseボックスの右側には、各段の単語に対応した出力ポートが並んでいるので、その先に、実行したいボックスを並べておけば良い。以下は、サンプルとして作成したクイズアプリである(サンプル03A)。二択の回答を用意しておき、それぞれ、正解と不正解の処理をつなげている。たったこれだけで音声認識を使ったアプリができるというのは驚きだ。
なお、Pepperの実機が無い場合でも、Choregrapheのバーチャルロボットを使って、音声認識を模擬できる。Speech Reco.で音声入力待ちになったら、ダイアログパネルから単語を入力すれば、その単語が認識されたことになり、処理を続行させることができるのだ。ダイアログパネルからの入力は、実機でアプリを動かしているときも有効なので、テストで毎回音声入力するのが面倒なときなどには便利だ。
Copyright © ITmedia, Inc. All Rights Reserved.