イオナズンして家電制御
iRemocon + SAPI で音声認識で家電を制御してみようの一応の完成形です。
ないちちボイスコマンダーはgithubにソースが上がっています。
音声認識で家電制御!!
光あれ
イオナズンを唱えた!!
高度に発達した科学は魔法と見分けがつかないらしいがまだ見分けがつくのでもっと進化していきたい。
エターナルフォースブリザード!! 相手は死ぬ。
音声認識の問題点である、誤爆対策です。
うっかりバルスなんていっちゃっても大丈夫なように、「コンピュータ、エアコンつけて」みたいに、コンピュータという単語が入っていないと無視するようにしてみました。
SAPI + iRemocon で制御しています。
さくらーエアコンつけて
キャラの名前をつけてみるのもいいですね。
新しい萌えを築けるかも。
コンピュータと呼びかける場合のxmlでの表現
<RULE name="S" toplevel="ACTIVE"> に、 一行追加するだけです。
<?xml version="1.0" encoding="UTF-8"?> <GRAMMAR> <RULE name="S" toplevel="ACTIVE"> <P>コンピュータ、</P> <L> <P> <RULEREF name="NAME"/> </P> </L> </RULE> <RULE name="NAME" toplevel="INACTIVE"> <L propname="NAME"> <P valstr="C:\Users\rti\Desktop\tool\家電\エアコンOFF.ttl">/エアコンOFF/えあこんおふ;</P> <P valstr="C:\Users\rti\Desktop\tool\家電\エアコンOFF.ttl">/エアコン切って/えあこんきって;</P> <P valstr="QUIT">/えんいー/えんいー;</P> </L> </RULE> </GRAMMAR>
このへんが、 SAPI な xml のいいところですね。
逆に、問題点として、現在の状態(ステート)を持てないことと、リアクションで音声を返したりできないところですかね・・・
MMDAgentとかにほしいもの
MMDAgent っていうソフトがあって、音声認識と合成音声でいろいろ遊べるらしい。。。
ただし、こいつもステートを持てない(たぶん)、、、
本当に音声認識でやりたいのはこんな感じの受け答えなわけで。
人間「温度上げて」 コンピュータ「あげたよ。寒い?」 人間「今何度?」 コンピュータ「25度です」 人間「もうちょっと上げて」 コンピュータ「温度上げます。」 人間「ありがとう」 コンピュータ「どういたしまして」 人間「検索」 コンピュータ「何探すの?」 人間「さくら 扉を開けて」 コンピュータ「音楽を再生します。」 人間「Gracias(ぐらしあす/ありがとう)」 コンピュータ「いえいえ」
こーゆーシナリオというか、やり取りがしたい。
今の音声認識はあまりに一方通行的すぎる気がする。
ただ、こーゆー双方向の音声認識をするに、XMLみたいな単純なデータ形式は限界ではないかと思うのね。
だって、複数のステートを保持しなきゃいけないし、場面場面で受け付ける音声パターンはかわってくるわけだし。
そこで思うんだけど、こーゆーものこそ、簡易プログラム言語がいるんじゃないかなーって。
たとえば、 V8(javascript)や LUA などの組み込み言語を使えば、ステートなんかは自由自在に管理できるようになる。
だから、V8 や LUA など音声認識パターンを組み込んだソフトウェアを作れば、もっと柔軟な音声認識シーンが作れると思う。
そして、LL言語なのでネット上で自由にやり取りできるわけだ。
munin exchange みたいな感じで、LL言語をシナリオファイルみたいにみんなで共有し、やり取りしあえば、 コンピュータが受け答えできる範囲はもっともっとたくさん増えていくのではないかと思う。
そうなったら、コンピュータと人間の楽しいコミュニケーションができるんじゃないかなーって。