![](https://habrastorage.org/getpro/habr/post_images/7a7/ccd/31c/7a7ccd31cf6ab8f1787cecf25fae3fc5.jpg)
悪名高いアメリカのSF作家アイザック・アシモフによって策定されたロボット工学の第二の法則は、ロボットは人間の命令に従わなければならないと述べています。 ロボットに注文するにはどうすればよいですか? ほとんどのSF映画を信じている場合、ロボットと通信する最も快適な方法は、自然な人間の音声です。 それが、人間の本当の僕としてロボットTodに、ロシア語で音声制御コマンドと音声合成を理解する待望の機会を提供した理由です。 たとえば、ロボットに必要なタスクを実行させるために、「ロボット、キッチンに行ってください」という命令を出すだけで十分です。 カットの下で、ロボットで音声を認識および合成するために使用されるソフトウェアについて詳しく説明し、ビデオでは音声コマンドの使用例を示します。
私たちのプロジェクトの開発のベクトルは、habrasocietyの意見に依存しています。 Todをオープンソース開発プラットフォームとして使用することに興味がありますか? 投票で投票してください。
Pocketsphinxの音声認識
現代のスマートフォンの所有者のほとんどは、既に何らかの音声検索システムを試し、従来のタッチデータ入力方法よりも優れている点を高く評価しています。 また、一部のオートメーション愛好家は、PCに音声制御コマンドを理解するように教えています。Habréとネットワークでの利点は、このトピックに関する十分なマニュアルです。
ロボットがLinuxを使用している場合、スピーチを理解するように彼に教えることは、自宅のPCで同じことをするよりもそれほど難しくありません。 音声認識には、任意のオープンソースエンジンを使用できます。 クラウド音声認識サービスとは異なり、これにより、ロボットはインターネットに接続していなくても接続されたままになります。
私たちのロボットは、カーネギーメロン大学が開発し、マサチューセッツ工科大学とサンマイクロシステムズが積極的にサポートしているオープンソースのCMUスフィンクス音声エンジンを使用しています。 このエンジンの利点の1つは、特定の人に合わせてサウンドモデルを調整できることです。 そして、私たちにとって重要なことは、エンジンがROSに簡単に統合できることです。ROSはTodのロボットフレームワークです。
CMU Sphinxは、3つの主要コンポーネントで構成されています。
- 音を音素に変換する音響モデル
- 語彙
- 言語モデル-受信した単語から文を構築します
音響モデルは、音声セグメントに分割された一連の録音物です。 小さな辞書の場合は、音響ベースを自分で作成できますが、ロシア語で10時間以上のディクテーションが含まれるVoxForge.orgプロジェクトの音響ベースを使用することをお勧めします。
音響モデルを適応させる次の手順はオプションですが、音声の認識が向上します。 口述するフレーズはメインの音響モデルに追加されます。これにより、認識時に発音の特徴を考慮することができます。
CMU Sphinxの辞書は、フレーズとそれに対応する音素を含んだ単なるテキストファイルです。 辞書は、さまざまなロボット制御コマンドで構成されています。
語彙
bb je sなし
なし(2)bb iz
なし(3)bbは
なし(4)bb je z
なし(5)bb je s
順方向f pp i rr jo t
時間v rr je mm i
ここでg dd je
2 dv aa
2つまたは3つのdv aa t rr ii
日dd je nn
明日z aa ftr ay
ホールZ AA L
こんにちはzdr aa stvuj
あなたはZN AA I SHを知っています
名前はzav uu tです
k aa kのような
なんだ
(2)kak aa i
何カックオーj
エンドカンクAA
誰がkt oo
キッチンk uu h nn uj
愛ll ju bb i sh
me mm i nn ja
かわいいmm ii lyj
私はnn je
あなたはm oo zh y sh
私のm oo j
naj tt iiを見つける
週nn i dd je ll i
振り返ってag ll ja t kk i
ワン・ア・ディ・イン
お父さんp aa pp i
ビールpp ii v ay
あなたはやっています
p ay igr aa imをプレイ
さようならパック
天気予報
アイテムp rr id mm je t
持ってくるp rr i vv i zz ii
hi p rr i vv je t
r y ay ska zh yy
今日ss iv oo d nn i
今ss ij ch ja s
今(2)ss i ch ja s
今(3)sch ja s
sk oo ll k ay
あなたtt i bb ja
あなた(2)tt ja
あなた(3)tt i
point t oo ch k ay
3 t rr ii
3から4 t rr ii ch it yy rr i
あなたはyy
うーん
4 ch yy rr i
何でもありnn ib uu tt
何でも(2)ch t oo nn ib uu tt
何でも(3)ch t oo nn ibu tt
なし(2)bb iz
なし(3)bbは
なし(4)bb je z
なし(5)bb je s
順方向f pp i rr jo t
時間v rr je mm i
ここでg dd je
2 dv aa
2つまたは3つのdv aa t rr ii
日dd je nn
明日z aa ftr ay
ホールZ AA L
こんにちはzdr aa stvuj
あなたはZN AA I SHを知っています
名前はzav uu tです
k aa kのような
なんだ
(2)kak aa i
何カックオーj
エンドカンクAA
誰がkt oo
キッチンk uu h nn uj
愛ll ju bb i sh
me mm i nn ja
かわいいmm ii lyj
私はnn je
あなたはm oo zh y sh
私のm oo j
naj tt iiを見つける
週nn i dd je ll i
振り返ってag ll ja t kk i
ワン・ア・ディ・イン
お父さんp aa pp i
ビールpp ii v ay
あなたはやっています
p ay igr aa imをプレイ
さようならパック
天気予報
アイテムp rr id mm je t
持ってくるp rr i vv i zz ii
hi p rr i vv je t
r y ay ska zh yy
今日ss iv oo d nn i
今ss ij ch ja s
今(2)ss i ch ja s
今(3)sch ja s
sk oo ll k ay
あなたtt i bb ja
あなた(2)tt ja
あなた(3)tt i
point t oo ch k ay
3 t rr ii
3から4 t rr ii ch it yy rr i
あなたはyy
うーん
4 ch yy rr i
何でもありnn ib uu tt
何でも(2)ch t oo nn ib uu tt
何でも(3)ch t oo nn ibu tt
辞書は、CMU Sphinxエンジンが理解できる言語モデルに変換されます。 したがって、最終的には、音声認識のプロセスは次のようになります。
ROSでは、/ recognizer / outputトピックにサブスクライブするすべてのプログラムノードが、CMU Sphinx言語モデルで作成されたテキストをテキスト形式で受信できるようになりました。 認識されたフレーズを受信してパトロールコマンドに変換するか、ロボットの応答フレーズを合成する小さな音声制御ノードを作成しました。 以下に、このトピックに関するビデオがあります。
フェスティバルでの音声合成
ロボットとの完全なコミュニケーションには、十分な音声フィードバックがありません。 私たちのロボットTodは、Linuxで利用可能なFestival音声合成パッケージで話すのを助けられました。 フェスティバルはまた、いくつかの大規模な大学の共同開発であり、高品質の音声合成を提供し、ロシア語をサポートしています。 スフィンクス/フェスティバルの束に基づいて、完全な対話を実装できます。 そして、ここに私たちのロボットの音声コマンドの使用を示すビデオがあります。
他に何が聞こえますか?
音に関連するタスクについて言えば、HARKに言及するしかありません。 HARKは、サウンドを処理する機能を大幅に拡張する日本のサウンドソフトウェアです。 それらのいくつかを次に示します。
- 音源定位
- いくつかの有用な音源を強調する(たとえば、同時に話す複数の人のフレーズ)
- サウンドストリームから「クリーンな」音声を抽出するノイズフィルタリング
- テレプレゼンス用の3Dオーディオエフェクト
![](https://habrastorage.org/getpro/habr/post_images/1de/fb8/1d7/1defb81d70bb7826c043488037c804d9.png)
ほとんどのサウンド処理タスクは、いわゆるマイクロフォンの配列に基づいて解決されるため、1つのマイクロフォンのみでHARKを使用することはあまり意味がありません。 また、Kinectは前面に4つのマイクが取り付けられており、正しい方法で完璧にフィットします。
もちろん、プロジェクトでHARKを使用する機会を逃しませんでした。 領土をパトロールするプロセスでは、ロボットは人の扱いを含む周囲のイベントに応答する必要があります。 HARKが提供する音源定位モジュールは、ロボットが視界にいなくても、話している相手を見つけるのに役立ちます。 このようなタスクは、音源の定位と頭の回転に限定されるため、対談者の反対側になります。 ビデオでどのように見えるかをご覧ください。
私たちのブログの定期的な読者は、前回の公開以降、Todロボットが賢くなっただけでなく、マニピュレーターと2番目のKinectを獲得したことに気付いたはずです。 次の投稿では、マニピュレーターを制御し、それを使用してオブジェクトをキャプチャする方法について説明します。 ブログでお会いしましょう。