语音识别PlatformNotSupportedException

时间:2014-09-05 17:18:17

标签: c# windows-8 speech-recognition windows-server-2012

我正在运行使用语音识别的示例,但它无法在Windows 8或2012服务器上运行。

使用win8或win2012server时,以下代码不会返回记录,但会在win7中返回。

foreach(RecognizerInfo rec in System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers())
    {
        Console.WriteLine(rec.Culture);
    }

如果我使用win8或win2012服务器使用LoadGrammar,则会引发异常:

_recognizer.LoadGrammar (new Grammar (new GrammarBuilder (new Choices (_numbersGrammar.Keys.ToArray ()))) { Name = "Numbers_Grammar" });

'System.PlatformNotSupportedException'表示未安装识别器。

堆栈跟踪:

  

System.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer   识别器,布尔inproc)em   System.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()em   System.Speech.Recognition.SpeechRecognitionEngine.LoadGrammar(语法   语法)em SpeechRecognition.CaptchaSpeechManager..ctor(Int32   lettersCount,Int32 waitMilliseconds)in   .... CS:行   289 em SpeechRecognition.Program.Main(String [] args)na   e:\ TestCenter \ SpeechRecognition \ SpeechRecognition \ Program.cs:linha 24   em System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,   String [] args)in   Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
  em System.Threading.ExecutionContext.RunInternal(ExecutionContext   executionContext,ContextCallback回调,对象状态,布尔值   preserveSyncCtx)em   System.Threading.ExecutionContext.Run(执行上下文   executionContext,ContextCallback回调,对象状态,布尔值   preserveSyncCtx)em   System.Threading.ExecutionContext.Run(执行上下文   executionContext,ContextCallback回调,对象状态)em   System.Threading.ThreadHelper.ThreadStart()

我需要安装什么?我试图安装Speech SDK 11,但它会关闭直到completition oO

有人知道与此操作系统有任何不兼容性吗?

有人知道另一个lib这样做吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用用于Speech SDK 5.3 / 5.4的System.Speech命名空间,而您应该使用Microsoft.Speech这是一个Speech SDK 11,您可以在

中找到它的程序集

" C:\ Program Files \ Microsoft SDKs \ Speech \ v11.0 \ Assembly \ Microsoft.Speech.dll"

如果将其安装到默认路径。