我正在尝试让 SAPI 5.4(也是 MS Speech Platform SDK v11)对来自 Skype 调用的音频执行连续语音识别。
我可以使用 SKYPE4COMLib 获取来自 Skype 的音频,并通过发出 ALTER CALL 指令将其推送到 TCP 端口。您可以将 Skype 音频定向到文件或 TCP 套接字。文件工作正常,但我希望它实时运行识别,因此请使用 TCP 套接字。
然后我构建了一个 TCP 监听器来收集传入的数据(音频原始格式)并将字节数组作为 MemoryStream 传递给 SAPI。我已将 SAPI 设置为期望 16 位、16khz、单声道、PCM 格式的原始音频。然而,从未发生过识别事件?!
我试过将原始音频保存到磁盘,然后将其读入 SAPI,它工作正常......所以数据本身很好,Skype 正确发送音频。然而,这并没有让我做我需要的持续认可。
SAPI 识别代码使用 WAV 文件或从磁盘或麦克风加载的原始文件可以正常工作。我只是无法从 MemoryStream 让它工作。
我发现了这篇类似的文章,那里的建议似乎都不适合我,讨论似乎也变得平静了。
Streaming input to System.Speech.Recognition.SpeechRecognitionEngine
有没有人有任何关于如何成功让 SAPI 连续识别来自在 C# 中作为 MemoryStream 发送的原始音频的语音的指导?
最佳答案
当您使用流式音频时,我认为您应该使用recognizer.RecognizeAsync