▼ 2012/03/23(金) 音声認識リモコン作ってみた
■ はじめに
"引越ししたので未来なお部屋を作ってみた。"(http://d.hatena.ne.jp/rti7743/20120104/1325668680)に触発されて、音声認識リモコンをつくってみた。
tx-50が放置ぎみだったので、せっかくなのでmeegoの勉強もかねてやってみました。
- デモ動画
- ニコニコ動画: http://www.nicovideo.jp/watch/sm17331743
- youtube: http://youtu.be/6aj0XceO5fo
■ 技術的な話
今回はMeeGoに慣れるのに時間がかかった。というか結局最後まで慣れなかった。TX-50にMeego入れて動かすまでは
http://blog.livedoor.jp/furikku9310/archives/52213664.html
ここら辺にまとまっててさっくり行きました。ありがとうございます。
当初は無線を2つ付けて無線APとWAN側も無線に仕様としていましたが、
どうも安定しないし、MeeGoの文化にまけたため、WAN側は有線にして、
hostapdだけ設定して無線APとしてだけ動くようにしました。
次にブリッジやDHCPDやdnsmasqなどのネットワーク周りを設定しました。
dnsmasq設定するときの注意点はconnmandがdns proxyしているので
rオプション付きで起動するようにする必要があります(/etc/rc.sysinit)。
その他はごくごく一般的。
まぁ、なんだかんだで、カーネルを再構築したりはしたんですが。
環境が整ったので、juliusを動かし音声認識をさせてみましたが、
当初はオーディオインターフェイスをつけていなかったため、
マイクのすぐ近くで喋らないと行けない状態でした、そこで、
入力に対してフィルタをかけれるUA-4FXをつかってみました。
UA-4FXを使っていますが、UA-3FXにある機能しか使っていないので、
UA-3FXでいいと思います。
入力に対して、ノイズをとって音をシャープにして音圧を調整しているだけで、
真空管エミュレータなんてものも使っていません。
どちらも、製造終了ですけど。。。。ヤフオクでは売ってます。
UA-4FXを導入すると割といい感じに離れたところから認識してくれるようになりました。
実は、juliusのプラグインで入力された音データに対して、自前でソフトウェア的に
フィルタかけたらよかったんじゃないのかとか思いますが、自分に音響系の
プログラム能力が無いので今回はあきらめました。
いつかやるかもしれません。
次に、juliusの設定周りをごにょごにょと。
http://d.hatena.ne.jp/hecomi/20120112/1326390200
この辺にかいています。大変ありがとうございます。
そして、やっていることが全く同じです。
さいごに、iremoconと通信するirmcdとirmcdに認識した文字列を通知する
juliusのプラグインを作りました。
プラグインの作り方はjuliusのドキュメントに書いるものベースで、
特に難しい事はしてません。
irmcdは送ってきた文字列に応じた処理をします。
リモートホストにつないで設定されたシナリオに従いコマンドを入力したり、
外部プログラムを実行したりします。
デモでは、外部プログラムで合成音声で喋らせる事で
動作が正常に行われたか判断できるようにしています。
合成音声にはaqestalk2を使いました。
また、天気を読み上げているのは、外部プログラムでもgoogleの天気取得apiを叩いて、
その内容を喋らせているだけです。
(このあたりのプログラムは整理して、githubに上げる予定)
とまぁ、だいたいこんな感じです。
これで家に帰ったら、"かみさま電気つけて"で電気をつけられるようになる。
1: えーちゃん 2012年03月25日(日) 午前10時37分
「かみさまおねがい」にせずに拍手にしたらどうよ
他の音声拾うこと無いだろうし
1回で起動2回で終了
2: poti 2012年03月25日(日) 午後0時56分
拍手はやったんだけど、ご判定が多すぎて使い物にならなかった。あとある程度長い間音量レベルが上がっていないと音声コマンドとして認識されないので拍手1回は厳しいな。
3: えーちゃん 2012年03月25日(日) 午後10時58分
拍手が駄目なら指パッチン。
もっと無理か。
ナビみたいにユーザーの声を登録して声紋認証かねぇ
しかも指向性マイクだし。
持ち運びできるボタンでもw
「へぇ」ボタン改で ボタンを押すと音声認識発動とかw
4: poti 2012年03月25日(日) 深夜0時58分
今回使った、マイクは全指向性。
声紋認証までやるのは大変すぎる。