orangain flavor

じっくりコトコト煮込んだみかん2。知らないことを知りたい。

フューチャーホームコントローラーの音声認識をKinect for Xbox 360に肩代わりさせるまでの手順

はじめに

フューチャーホームコントローラー(Future Home Controller: FHC)は、以前の記事で書いたように、家電を音声でコントロールできるようにする未来感あふれるガジェットです。

ただちょっと困っているのが、音声をうまく認識してくれないことがあるのと、音声認識に時間がかかる点です。小さなハードウェアなのでスペック的に大変なのだと思います。

デフォルトの呼び掛けである「コンピュータ」を使うと、もっと精度がいいのかもしれませんが、やっぱり愛着があるほうがいいので、「ねぇジュイス」を呼び掛けにしています。
よく考えたらKinectにも音声認識機能があるので、音声認識だけをKinectでやったらどうなるか試してみました。*1

主に以下の記事を参考にさせていただきました。感謝です。この記事での「参考サイト」という表記はこの記事を指します。
Kinect for Windowsで機器を作るヒント(4) ―― 日本語の音声認識をやってみる|Tech Village (テックビレッジ) / CQ出版株式会社

Kinectハックの現状

今回試してみるまで、Kinect for Xbox 360をPCに繋ぐためには、サードパーティのドライバなどが必要で面倒そうなイメージがありました。しかし現状ではMicrosoftから公式にSDKが公開されており、このSDKを利用する場合は、もはやハックという感じではなくなっています。

Kinectハックの歴史を簡単にまとめると次のようになります。

  • 2010年11月 Kinect発売
  • 2010年12月 OpenNI公開
  • 2011年6月 Kinect for Windows SDK Beta公開
  • 2012年2月 Kinect for Windows SDK正式版公開
  • 2012年5月 Kinect for Windows SDK 1.5公開。日本語認識が可能に
  • 2012年10月 Kinect for Windows SDK 1.6公開。本記事執筆時点(2013年2月)で最新

なお、Kinect for Xbox 360をPCに接続する使い方は、非商用利用に関してのみ認められています。商用利用する場合は、Kinect for Windowsを利用しましょう。

検証環境

1. Kinect for Xbox 360をPCに接続するためのケーブルを用意する

Kinect for Xbox 360を単体で買った場合やKinect for Windowsを買った場合はすぐにPCに接続できますが、XboxKinectのセットを買った場合はPCと接続するケーブルが付属しません。

このため、まずケーブルを入手する必要があります。一般的にはMicrosoftに電話して購入するみたいですが、公式ページに記載が見つからなくて面倒だったので、Amazonで購入しました。

参考:
Kinect 電源 / USB ケーブルの入手方法 - 川西 裕幸のブログ - Site Home - MSDN Blogs

購入した変換ケーブル:

2. Visual Studio 2012をインストールする

C#で開発したいので、Microsoft Visual Studio Express 2012 for Windows Desktopをインストールします。*3

Microsoft Visual Studio Express 2012 for Windows Desktop | Microsoft Visual Studio

3. Kinect SDKなどをインストールする

以下のページからKinect for Windows SDKとDeveloper Toolkitをダウンロードしてインストールします。

Download the Kinect SDK & Developer Toolkit | Kinect for Windows

4. KinectをPCに接続する

手順1. で用意したケーブルを使って、KinectをPCに接続します。接続したら、Developer Toolkit BrowserからKinect Explorerなどのアプリケーションを実行し、正常に認識できているか確認します。

参考サイトにあるように、音声認識を使ったサンプルとして「Speech Basics-WPF」があります。「Run」ボタンを押すと起動し、Forward / Back / Turn Left / Turn Rightの掛け声で亀を動かせます。

「Install」ボタンを押すと、ローカルにプロジェクトのファイル一式がコピーされ、サンプルのソースを自由に変更して、動きを試せるようになります。

5. Speech SDKをインストールする

参考サイトにあるように、Developer Toolkit BrowserからSpeech Platform SDK 11.0のWebサイトにアクセスし、環境に合わせたSpeech Platform SDKをインストールします。

また、Kinect Speech Language PacksのWebサイトにアクセスし、日本語の言語パックもインストールします。

6. KinectとFHCを連携させる

およそ以下のようなプログラムを作りました。

  1. FHCからWeb APIで音声コマンド一覧を取得する
  2. Kinect音声認識に登録する
  3. ある程度以上の確信度でマッチしたら、Web APIでコマンドを実行する

呼び掛けの名前はFHCで設定したものと互いに被らないようにするか、FHCの音声認識を無効にしておくと良いです。

コマンドプロンプトで以下のように実行できます。

Kinect-FHC.exe [OPTION] FHCのIPアドレス APIキー 呼び掛けの名前

例:

Kinect-FHC.exe 192.168.1.5 webapi_XXXXXX ねぇジュイス

詳細は以下のページをご覧ください。

orangain/kinect-fhc · GitHub

まとめ

思っていたよりも簡単にKinect音声認識することができました。FHCの音声認識Kinect音声認識を比較すると以下のような違いがあると感じました。

  • (マイクの位置の違いもありますが)Kinectのほうが大きな声を出さないといけない
  • Kinectのほうが認識が速い
  • Kinectは高い声だと認識されづらい
  • 誤認識はどちらでもある(比較が難しいです)

今後も認識精度の検証や向上、Windowsの音声認識との比較などをやっていきたいです。

*1:FHCはWeb APIが公開されていて、こういうことが気軽にできるところが素晴らしいです。

*2:Kinect for Windows SDKを使うには、Windows 7または8が必要です。

*3:もちろん他のエディションでも動きます。Visual Studio 2010でも可。