System.Speechでは言語の追加ができない問題
About
System.Speech系による音声認識機能(SAPI)を利用した開発は、WindowsVista以前では任意にSDKをインストールする必要がありました。ところがWindowsVista以降ではインストールが不要になり、標準でSystem.Speech.dllがインストールされています。またSpeech.SDKから利用するSAPIについては、2013年11月現在ではバージョンが5.4のようです。
ここで困った問題があります。Ultimate以外のバージョンのOSでは、OSの対応言語が標準言語のみ、という問題です。Vista以前の開発ではインストールするべきSDKと言語パックがあり、その言語パックによって英語にも対応していました。しかしながら2013年現在に至っても、配布されるSDKと言語パックのバージョンはSAPI5.1のままなのです。
5.1と5.4は非互換
5.4から5.1の言語パックが使えないか検証しました。結論から言うと無理でした。5.1の言語パックをインストールするには、5.1のSDKをインストールする必要があります。両方をインストールすると、確かにインストールされているRecognizerInfoに対応するCultureNameの一覧に"en-US"が含まれることが確認できるのですが、RecognitionEngineなどのRecognizerInfoを利用するクラスやそのインスタンスは、そのバージョン以外から生成されるRecognizerInfoは、受け付けないようです。したがって、5.1系で利用できるようになったRecognizerInfoは、最新の5.4で利用できないことになります。これらはIDで識別されているようですが、IDについては詳細を調べていません。問題に対して重要ではないため割愛します。
Microsoft.Speech系の言語パックもダメ
System.Speechとよく似ているものにMicrosoft.Speechがあります。Microsft.Speechの場合は最新の環境に向けた言語パックが提供されていますが、それらのインストールによってSystem.Speechが利用できる言語(やRecognizerInfo)が増えることはありません。
どうしても日本語(母国語)以外が使いたいとき
System.Speechでなければいけない理由がなく、しかしどうしても日本語以外の言語を音声認識したいときは、Microsoft.Speechを利用するのが良いと思います。System.Speechに関しては対応する言語パックが出ることを期待するほかありません。