ロボット@徳島

徳島からロボットのアプリ開発情報をメインに発信するブログ

ロボット Sota(ソータ) 音声認識まとめ

音声認識とは

音声(人の声など)をテキストに変換してパソコンに認識させる技術です。
ただし、声の高さ、抑揚、言葉遣い等の様々な要因により、パソコンに正しく音声を認識させることは容易ではありません。

これまでに音声認識できるロボット(5種類くらい)とお話してみましたが、「はい・いいえ」等の簡単な言葉であれば正しく認識してくれますが、文章になると誤認識が多かったように思います。なかなか難しい技術なんだなー、と感じる技術です。

ペッパーは音声認識が難しい部分を上手く胸のタブレット入力で補っていますが、Sotaには無いため、音声認識が重要となってきます。
そんなソータの現状を書きます。

・Sotaのできること

<名前の取得>
聞こえた文字列から名前と思わる部分を抜き出して、変数に代入してくれる。例えば、「私は田中です」と話しかけると、「田中」が変数に代入されます。これは精度良く名前だけを抜き出してくれ大変便利です。

音声認識(ベストスコア)>
聞こえた文字列の中に指定したキーワードが含まれているかを認識できます。キーワードを「徳島」としておくと、「・・徳島・・」と話しかけると、キーワードがある側の分岐に入ります。しかし、これでは「徳島の名産は?」と「徳島ってどこ?」では、どちらもキーワードに該当すると認識してしまいます。その解決策として、次の正規表現が使えます。

音声認識正規表現)>
基本動作は上と同じですが、キーワードとして正規表現を使用できます。正規表現を使うと、2つ以上のキーワードを指定できます。「徳島」と「どこ」を指定したければ、「.*徳島.*どこ.*」とします。これにより「徳島の名産は?」ではキーワードに該当せず、「徳島ってどこ?」や「そう言えば徳島は四国のどこらへん?」では該当する、と認識できます。

音声認識して文字列を取得>
聞こえた文字列そのままが変数に代入されます。

 ・アプリ作成例

このアプリでは、<音声認識正規表現)>を使い、「.*徳島.*どこ.*」で分岐して、「四国の右上だよ」と答えます。<Poseブロック>では分かりやすいように目を〇の色に変えています。<ログ出力>では音声認識した文字列を画面に出力して、ロボットがどのように認識できたかを確認できます。

ソータでの音声認識をテストするために作成したアプリ例

音声認識の際に、ソータの目が水色に強制的に変更されるようですが、水色になってから話したのでは遅すぎるようです。上の図では、目が赤色になった時に話すとちょうど良いタイミングとなります。<音声認識>のtimeout値は5秒(5000ms)にしているのですが、水色の時間は3秒程度になります。赤色と水色を合わせると5秒程度になります。

音声認識>に入った瞬間にネットワークを通じて処理する時間に2秒ほどかかっている様子です。そのため、「目が水色の時に話しかけてね」と決めるには、timeout値を長めに10秒くらいにする必要があるようです。 

・使ってみた感想

音声認識の精度はそこそこで、一つの分岐だと問題なく使えそうだと感じました。ただし、雑音が全くない環境下での評価です。
また、実際の会話では、この分岐が多数になり認識が難しくなっていきます。そのあたりの精度については、これから試していきたいと考えています。

大勢の人がいる環境下でもスムーズに会話できるコミュニケーションロボットになるため、Sotaの音声認識のさらなる向上を期待したいです!

また、徳島で活躍できるロボットになるためにも、阿波弁を理解できるように教えていきたいところです!