やってみよう!Kinectアプリ開発 - 第7回 音声認識

2012-07-13 17:36

zigsow 長谷川 勇
 

はじめに

前回はKinect™ for Windows® SDKによる音声処理機能の紹介として、機能の概要と音源の方向の取得方法を説明しました。今回は前回に引き続き、NUI(Natural User Interface)APIの主要な機能の一つとされている音声認識を紹介します。

セットアップ

はじめに、Microsoft Speech Platform Software Development Kit (Version 11)と、Kinect for Windows Language Packs v1.5.0 の日本語用ロケールをインストールしましょう。前回説明した通り、Microsoft Speech Platform SDKは音声認識機能に必要です。また、日本語用ロケールをインストールすることで、Kinectセンサーのマイクアレイに最適化されたカスタム音響モデルが利用でき、より正確な音声認識が可能となります。

Microsoft Speech Platform Software Development Kit (Version 11)

  1. Webブラウザで、http://www.microsoft.com/en-us/download/details.aspx?id=27226 を開き、” x64_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi”または” x86_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi”をダウンロードします(開発を行っているWindowsの64bit/32bitに合わせてください)。
  2. ダウンロードしたインストーラを実行します。インストーラのタイトルを見てx64/x86が間違っていないか確認しましょう(図は64bit版です)。
  3. 環境などに合わせてディレクトリなど指定し進めます(デフォルトのままでも構いません)。以下の画面が出ればインストール完了です。

Kinect for Windows Language Packs v1.5.0 日本語用ロケール

  1. Webブラウザで、http://www.microsoft.com/en-us/download/details.aspx?id=29864 を開き、”KinectSpeechLanguagePack_ja-JP.exe”をダウンロードします。
  2. ダウンロードしたインストーラを実行します。
  3. 以下の画面が出ればインストールは完了です。

音声認識の利用

それでは、前回のアプリケーションに音声認識機能を追加しましょう。前回の修正により、Kinectが認識する人物上に吹き出しの画像を表示しました。今回はさらに認識した音声を吹き出し上に表示してみます。

処理方式

Microsoft Speech Platform SDKも、音声を認識した際に呼び出すイベントハンドラを登録できます。このイベントハンドラ内で認識した文を保存しておき、描画時に先ほど追加した吹き出しの画像の上に文を上書きして描画します。

アプリケーションの修正

次にVisual Studioを使い、アプリケーションの修正を行いましょう。今回の修正は、参照の追加と、コードの修正です。

参照の追加は以下の手順で行います。

  1. [ソリューションエクスプローラー]から[参照設定]を右クリックして[参照の追加(R)…]を選択する。
  2. [参照の追加]ダイアログで[参照]タブをクリックし、Microsoft Speech Platform SDKをインストールしたフォルダから、”Assembly/Microsoft.Speech.dll”を選択します。(デフォルトでは、 "C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll”にあるはずです)
  3. [OK]をクリックします。

次にコードの修正です。

  • usingディレクティブの追加

    Microsoft Speech Platform SDKで必要な”Microsoft.Speech”関連のnamespaceに対するusingディレクティブを追加します(ここでは、文字列の描画で必要な”System.Globalization”もついでに追加しています)。
  • フィールドの追加

    音声認識エンジンのオブジェクトと、認識された文を保持するフィールドを追加します。
  • 音声認識エンジンの初期化

    エンジンの初期化処理として、上記のInitSpeechEngineメソッドを追加します。ポイントは「// 認識する単語の追加」とコメントが書かれた部分です。ここで認識する単語を登録していますので、いろいろ追加・変更などしてみてください。その他の部分に関してはあまり変更もしませんので「おまじない」といった認識でも問題ないでしょう。興味のある方は、Microsoft Speech Platform SDKを参照してみてください。
  • アプリケーションの初期化処理

    アプリケーションの初期化処理には次の3つの処理を追加します。
    • 音声認識エンジンの初期化処理(上記のInitSpeechEngineメソッド)の呼び出し。
    • SpeechRecognizedイベントハンドラの登録。音声が認識されたときに、ここで登録したハンドラメソッドが呼び出されます。
    • 音声認識エンジンの開始。
  • SpeechRecognizedイベントのハンドラメソッド

    SpeechRecognizedイベント(音声を認識した際のイベント)のハンドラメソッドです。認識の確度が一定以上(ここでは0.3以上)の場合に、認識した文を保存します。
  • 描画処理

    描画処理では、SpeechRecognizedメソッドで認識した文が保存されている(recognizedTextがnullでない)場合、それを吹き出しの上に描画します。

修正は以上です。メニューから[デバッグ(D)]-[デバッグ実行(S)]を選択し、実行してみましょう。


認識した文が吹き出しに表示されます。

まとめ

今回の音声認識の紹介で基本編は終了です。これでKinectの基本的な機能は一通り紹介が終わりました。 次回からは応用編として、より実用的なアプリケーションの開発を説明します。

商標について

Kinect、Visual Studio、Windowsは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

3件の質問スレッド
  • サンプルプログラムについて Morihappy 2015-11-05 08:52 すみません。第7回の音声認識の全てのサンプルプログラムをダウンロードしたいのですが、よろしいでしょうか。
  • 起動しません。 haru 2014-02-20 17:58 第6回までのプログラムを参考にさせていただきまして
    こちらの音声認識のプログラムを入力してデバックするとvshost32,exeは動作を停止しました。と出るのですが何か間違えたのでしょうか?よろしければ改善しないといけない場所など教えて頂けると嬉しいです。
  • URL消えました? kazgb 2012-10-31 21:51 >Kinect for Windows Language Packs v1.5.0 日本語用ロケール

    URL飛べなくなっていたので・・・
    http://www.microsoft.com/en-us/download/details.aspx?id=34809
    ここのファイルで大丈夫でしょうか?
    また消えるかな?

ジグソープレミアムレビュー

  • やってみようKinect(キネクト)アプリ開発 - ラボクルー集まれ!