Kinectを使った音声認識で家電を操作してみた
以前、普通のマイクとjuliusを使って音声認識させようとしていたけど、テレビや食洗機の騒音があると全く認識できませんでした。juliusを使いこなしていないとか、PC用マイク一つでは限界もあるかと思い、今回はKinectで音声認識をさせてみました。せっかくのKinectなのに、ジェスチャーは一切使ってません。
作成した内容
人間の声で「テレビつけて」と言うとテレビの電源がONになり、「次のチャンネル」と言うとチャンネルが切り替わるといった感じで家電を操作
結果
Kinectに内蔵されたマイク・アレイとノイズ抑制に期待して音声認識システムを作ってみましたが、予想以上に実用的な音声認識システムが作れました。マイク・アレイすごい。マイクロソフトすごい。
- テレビの内容や音量にもよるけど、少々テレビの音が鳴っていても認識できる
- 少しぐらいの騒音であれば、大きめの声で話せば認識される
- 騒音が大きいとさすがに認識できない
構成
Kinectを使った音声認識なのでKinect for Windows SDK 1.5.1、Microsoft Speech Platform SDK Version 11、Kinect Speech Language Packs(日本語)を使用しています。
音声認識の方法は実用性を重視してルールベースです。ルールの内容はSRGS(Speech Recognition Grammar Specification Version 1.0)という形式の文法ファイルに記載。
文法ファイル(KinectSpeechGrammar.xml)の抜粋
<grammar version="1.0" xml:lang="ja-JP" root="rootRule" tag-format="semantics/1.0-literals" xmlns="http://www.w3.org/2001/06/grammar"> <rule id="rootRule"> <one-of> <item> <tag>TV_ON</tag> <one-of> <item> テレビ つけて </item> </one-of> </item> <item> <tag>TV_OFF</tag> <one-of> <item> テレビ けして </item> </one-of> </item> <item> <tag>TV_CH_UP</tag> <one-of> <item> つぎの チャンネル </item> </one-of> </item> </one-of> </rule> </grammar>