概要
というような時に、Intel Perceptual Computing SDK http://software.intel.com/en-us/vcsource/tools/perceptual-computing-sdk (今後はSenz3D SDKと呼ばれるかも?)と、適当なマイク
を使うことで、音声認識を組み込めることを確認したので、手順を残します。
ジェスチャ認識用と言うイメージが強いこのSDKですが、音声認識用途でも、割と優秀。
動作環境
- Windows 8.1 (64bit)
- Unity Pro 4.2.0f
- Intel® Perceptual Computing SDK 2013 GOLD(version 12492)+ Japanese Language Data( http://software.intel.com/en-us/articles/intel-perceptual-computing-sdk-installer )
- Visual Studio 2012 Professional
設定
最小限のUnityプロジェクトを作る手順を示す。
1.Intel Perceptual Computing SDK をインストールして、Japanese Language Dataをインストールする。
2.C:\Program Files (x86)\Intel\PCSDK\framework\common\pxcupipeline 内のslnファイルをVisualStudioで開き、 pxcupipeline.cppの virtual void PXCAPI OnAlert(PXCVoiceRecognition::Alert *data)関数の中身を書き換えてWin32,Releaseモードでビルドする。 (@koukiwfさん @faifxさん情報ありがとうございます )
具体的には
default: wcscpy_s<sizeof(m_data.dictation)/sizeof(pxcCHAR)>(m_data.dictation,L"!UNKNOWN");この部分を
default: //wcscpy_s<sizeof(m_data.dictation)/sizeof(pxcCHAR)>(m_data.dictation,L"!UNKNOWN"); break;このように変更する(これをしないと、Senz3Dカメラ内蔵マイク以外でUnity上の音声認識が動かない)
注意すべき点(2014.4.12追記)
Visual Studio 2012 Expressを使う場合はもうちょっと手順が増える
このpxcupipeline.dllのビルドを行う時、VisualStudio2012 expressでは他にも書き換える場所があるようなので、VisualStudio2012Expressで作業を行う人は詳細はじーすPさんのこの記事を参照願います。
http://zi-su.blogspot.jp/2014/04/unityperceptualsdk.html
Visual Studio 2013Proで作成する場合
Visual Studio 2013だとプロジェクト設定を変更しないと問題が起きるようです。推奨は2012Proですが
@izm あとVS2013だとツールセットが違うのでビルドできなくて、VS2012でビルドするか、VS2012を入れた上でVS2013のツールセットをv110(VS2012)にするのが良さそうです
— 中村 薫 (@kaorun55) 2014, 6月 11
@izm これ pic.twitter.com/1esWdhKPl4
— 中村 薫 (@kaorun55) 2014, 6月 11
この手順で Visual Studio2013でも大丈夫のようです @kaorun55さんありがとうございます!
3.Unity上で新規プロジェクトを作成し、Assets/Pluginsフォルダ(無ければ作る)の中に
C:\Program Files (x86)\Intel\PCSDK\framework\Unity\hellounity\Assets\Plugins から
pxcm-structures.cs
pxcupipeline.cs
をコピーする。
2で修正してビルドしたpxcupipeline.dll (C:\Program Files (x86)\Intel\PCSDK\framework\common\pxcupipeline\bin\Win32に出来ているはず)
もコピーする。
4.Unity上で空のGameObjectを作成し、hellounityサンプルを参考にスクリプトを作成しアタッチする。 例: https://gist.github.com/neon-izm/9957478
動作確認
Unityエディタ上で開いているプロジェクトをそのまま実行し、マイクに向かって日本語を話して、認識が行われてDebug.Logに出力されていることを確認する。
うまく動かない時に確認する事
- 日本語パックを入れているか
- 録音デバイスがカメラ内蔵マイクになっているか
- C:\Program Files (x86)\Intel\PCSDK\bin\win32 内の voice_recognition.exe で日本語が認識されるか
このエントリで抜けていて、追試が必要だと思うこと
以下は必要に迫られていなかったので確認していない。(時間が出来たら追試します)