0

我正在使用 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 精度差的原因吗?

谢谢!!!!

4

1 回答 1

0

SpeechLib.dll 是本机 COM 接口 (SAPI) 的 COM 互操作库。SpeechRecognitionEngine 是它的友好 .NET 类包装器。他们都访问完全相同的识别引擎。

你的录音可能有问题。通常是音量问题,例如削波(太大声)或太多噪音(太软)。通过实现 AudioSignalProblemOccurred 事件获得一些基本诊断。

于 2010-08-29T13:30:02.163 回答