できれば、通常のホビーロボットのようにコマンド・ボタン式のモードもあったらいいのに!なんて思うこともしばしば。Piを仲介役として、機械的なコマンドとロビ君をつなげようという考えた次第で。いっても、そんなにたいした事をするわけではありません。Piを人の代わりにしゃべらせるだけです。人がしゃべるより音声合成の方が声が毎回同じになるため、一度認識しやすい声を作ってしまえば安定した音声入力環境ができるはず。Piで文章読み上げというのをやったので、これを応用します。Piのシステムをアップデートしておきます。JTalkをインストールします。open-jtalk-mecab-naist-jdic実行用のシェルスクリプトを作成。エディタで”ojt”という名前のファイルを作成、中身は以下のようにします。これはロビ君の音声認識しやすいパラメータを試行錯誤して得られた数字です。このシェルスクリプトを実行形式に変えます。test.txtと入力すればしゃべってくれるはずです。日本語を覚えたての中国の方々のような声が聞こえてきたら成功です(本当に妙な発音なんですよ...のちに動画出します)。■ロビ君動作テスト編ではいよいよロビ君を動作させてみます。Piには内蔵スピーカーないため、イヤホン出力にスピーカーをつけてやらないといけません。最初百均で買ってきたこの小さなスピーカーを使おうとしたんですが、音が小さすぎて使い物になりませんでした。Piの出力では小さすぎるので、アンプ付きのスピーカーが必要です。仕方がないので、このiPod用スピーカーを使います(イヤホンジャック入力あり)。なんとか音声出力は確保したので、何かしゃべらせてみることにします。”test.txt”というファイルをエディタで生成、中に「ロビ君」と書いておきます。test.txtと打ち込むと、変なアクセントですが「ロビ君」と話しかけてきます。-pの値をチューニングしてますが。こんな微妙な発音にも反応してくれるとは、音声入力を失敗した時の私は一体どんな発音してたというのか...成功したというのに、なんとも複雑な気分。これをもう少し拡張したスクリプトを作ります。ロビ君またねと書いたテキストファイルを作って、以下のような”ojt.sh”というスクリプトを作っておきます。ojt.shとして実行形式に変換./ojt.shと打ち込むと、ロビ君にタイミングよく話しかけてくれます。(実行結果は後ほど動画にて)これでテストは完了。iPhoneから簡単に実行できる環境を作ります。■ロビ君動作編本番さて、これをiPhoneなどで実行しようとすると、真っ先に思い浮かぶのはブラウザでボタンをタップしたら音声が出てくるというインターフェースですが、そもそもブラウザからシェルスクリプトを実行できる仕組みを作ることができません。同じようなこと、大和作った時にもぶち当たったんですよね、そういえば。結局あの時もできなかったんです。Webiopiなどを使えば出来るのかもしれませんが、いまいちわからず。仕方がないので、SSHでログインしたターミナルからCUIでメニューを表示してその中からしゃべらせたい言葉を選ぶという方式に変えました。以下のような”robi”というファイル名のシェルスクリプトを作成します。robiターミナル上で実行します。./robiとりあえず8つほどのコマンドを実行できるスクリプトです。数字を打ち込んでEnterキーを押せば、その音声入力に応じてロビ君が動作します。Plusの画面ではこんな感じに表示されてます。このメニューUIは無限ループになってるので、数字を打ってはまたメニューが現れます。先のテスト編と本番の動作結果の動画を以下にあげておきます。JTalkの微妙な発音、そして音声認識精度の高さがよくわかっていただけるかと思います。実際、使ってみるとほぼ100%の認識率!こんな発音なのに、やっぱり安定したデジタルな発音てのがいいんでしょうかね?さて、あとはメニューを拡張し、コマンドを増やせばさらに多くの動作をさせることが出来ます。これだけのコマンドを全部実装するとえらいことになりますが、よく使うやつだけを20個ほどに絞ればこんなUIでもなんとか使えそうかと。A+と小型のバッテリー、小型スピーカーを使ってロビ君の背中に取り付けてしまえばもう少しスリムなコマンド実行ロビ君が完成するかも!?・・・などと考えたところで、これ以上拡張するのをやめてしまいました。こんなのロビ君じゃない!!(。ロビ君なのか・・・よっぽど音声認識精度が低くてイライラしてしまう人ならこれに頼るのもいいでしょうが、なるべくならロビ君とは自分の声で接してあげたいですね。ロビ君との付き合い方を再認識するきっかけとなりました。PiでX68000を動かす同人マニュアル(2020.01.17)コメントはじめまして!私もロビーのオーナーで、無線接続・リモートコントロール・無線操縦ができればと常々考えております。おめでとうございます。FRiSKのケース程のスイッチサイエンス版Eagletと小型バッテリー・スピーカーを使ってロビ君の背中に取り付けてしまえば(ランドセルを背負った感じ)?技術が無いので思案しております。ありがとうございます。これで遠隔操作をやろうとするとかなり大変ですね・・・できればロビ君の基板の音声認識ボードとの間の配線をハックしてA+を使えばより小型化できそうです。Piにキーワードを受け渡せるようにすることで、ロビ君に「検索して」って呼びかけてGoogle検索させる仕組みを作ると面白いんですが。これこそ本来のロビ君の使い方に沿ったものになりそうかと。piと連携させてみたいと思っていたのですが、USB接続で遠隔制御されている方がみえたので、FlashAirを使って無線LAN対応にしてみました。piの力を借りる事になりそうな気がしています。OpenJTalkについて参考にさせて頂きたい思います。17時57分こんにちは、ペンギンキャットさん。これはすごい!!まさに遠隔操作ですね。こちらでも紹介させてください。FlashAirにこんな使い道があるとは思いませんでした。私もチャレンジしてみたいです。A+の方がいいですね。それでも結構な大きさになるため、ロビ君バランスを崩しそうです。arkoujiブログ村にほんブログ村バックナンバー2020年2月2020年1月2019年12月2019年11月2019年10月2019年9月2019年8月2019年7月2019年6月2019年5月@niftyが提供する無料ブログはココログ!。