Top > IT > Speech > ErrorAtSetInputToDefaultAudioDevice
Last-modified: Fri, 09 Nov 2012 11:31:53 JST
Counter:1550 Today:1 Yesterday:1 Online:14
このエントリーをはてなブックマークに追加

SetInputToDefaultAudioDeviceでエラーが起きる場合

問題と解決

 「RecogitionEngine.SetInputToDefaultAudioDevice」を使うと、システムが定める標準の音声入力装置からの入力を、RecognitionEngineの音声認識に利用することができます。しかしここでエラーが起きる場合があります。原因については主に次の2つが考えられると思います。私の場合は2のパターンに該当しました。

  1. 既定の音声入力装置が動作していない
  2. SDKバージョンとRuntimeバージョンが一致していない。

 そもそもRecognitionEngineは「System.Speech」系のものと「Microsoft.Speech」系のものと2つあります。基本的な扱い方については、両者に違いはないようです。しかしながら「Microsoft.Speech」系の場合は、標準的なWindowsシステムには導入されておらず、基本的に開発を目的として任意に入れられた場合が多いでしょう。この時、Microsoft.Speechを動かすためのランタイムと、開発のためのSDKのバージョンが食い違っていると、該当箇所でエラーが生じます。よって他に不具合の原因が考えられない場合には、インストールの状況と、参照しているDLLのバージョンを確認してみることをお勧めします。

 今回話題に取り上げている「SetInputToDefaultAudioDevice」以外の機能が問題なく動いてしまうことで発覚が遅れる可能性があります。一部の機能はやはり問題が生じるのでしょうが、音声認識機能についてはバージョンに差異があっても動作してしまいました。またSystem.Speechでこの機能を利用しても問題なく動作してしまうので、これにも注意する必要があります。

 Microsoft.Speech.SDK(特に10.xと11.x)は排他的で、ver10.xが入っていると11.xがインストールできません。一度アンインストールしてからインストールする必要がありますが、基本的には動いてしまいます。私の場合はそうして放っておいたためにこの問題にぶち当たりました。