我正在使用 C# .net 库 System.Speech 来实现我的 ASR 应用程序(顺便说一句,我看过一篇提到 SpeechLib.dll 的帖子,这似乎是 SAPI 的一个更基本和低级的实现,它们是相同的?)。我们的主要目的是实现作为Server/Client ASR系统:在客户端记录用户的声音,并通过互联网将整个音频流传输到服务器,服务器处理ASR作业并将结果返回给客户端。
我写了一个类似的应用程序,它使用本地麦克风作为语音输入,它表现得很好。
我的原始应用程序:
SpeechRecgonitionEngine sr = new SpeechRecgonitionEngine();
sr.SetInputToDefaultDevice();
sr.RecognizeAsync();
这样,我用麦克风输入,结果显示的准确度还不错。
这就是问题所在。现在转到新任务,我必须将识别输入设置为 WavFile(或通过 TCP/IP 套接字连接的音频流)。所以我只是简单地把我的代码改成这样:
SpeechRecgonitionEngine sr = new SpeechRecgonitionEngine();
sr.SetInputToWaveFile(@"D:\input.wav");
sr.RecognizeAsync();
结果变得不尽如人意。我只是将一些波形片段分别预先录制到几个文件中,基于 mic-input 应用程序的相同语法,并将这些文件设置为 ASR 输入。但是,只能检测到一些文件(由 SpeechDetectedEvent 处理),很少有文件可以被很好地识别(由 SpeechRecognizedEvent 处理)。我只是录制了与麦克风输入应用程序相同的短语。
尽管准确性较差,但可以正确识别某些文件,这表明我的代码没有任何逻辑错误。但是我假设我在使用它之前错过了一些工作,例如设置识别器的一些参数。
所以我在这里寻求帮助,如果有人知道使用 wavfile-input 精度差的原因吗?
谢谢!!!!