【问题标题】:.Net System.Speech Problems encountered when change from Mic-input to WavFile-input?.Net System.Speech 从 Mic-input 更改为 WavFile-input 时遇到的问题?
【发布时间】:2010-08-29 11:38:32
【问题描述】:

我正在使用 C# .net 库 System.Speech 来实现我的 ASR 应用程序(顺便说一句,我看过一篇提到 SpeechLib.dll 的帖子,它似乎是 SAPI 的更基本和低级的实现,它们是一样的吗?)。我们的主要目的是实现服务器/客户端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应用程序的相同语法,将一些wave sn-ps分别预先录制到几个文件中,并将这些文件设置为ASR输入。但是,只能检测到部分文件(由 SpeechDetectedEvent 处理),很少有文件可以被很好地识别(由 SpeechRecognizedEvent 处理)。我只是录制了与麦克风输入应用程序相同的短语。

尽管准确性较差,但可以正确识别某些文件,这表明我的代码没有任何逻辑错误。但是我假设我在使用它之前错过了一些工作,例如设置识别器的一些参数。

所以我在这里寻求帮助,如果有人知道使用 wavfile-input 精度差的原因吗?

谢谢!!!!

【问题讨论】:

    标签: c# speech-recognition sapi


    【解决方案1】:

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

    您的录音可能存在某种问题。通常是音量问题,例如削波(太大声)或太多噪音(太软)。通过实现 AudioSignalProblemOccurred 事件获取一些基本诊断信息。

    【讨论】:

    • 非常感谢!我试过这个,当文件无法识别时,它确实转向了 AudioSignalProblemOccurred 处理程序。但是我改回麦克风输入 ASR,还要观察 AudioSignalProblemOccurred(ASPO) 事件的结果。我发现由于我通过麦克风输入的声音是连续的,并且有时在我的短语开头会调用一个 ASPO,但是在我的短语完全说出之后,识别器可以理解它。所以我认为这就是 mic-input 具有高精度的原因。所以我想知道,我怎样才能修改我的 WAV 输入 ASR 使其像麦克风输入一样,可以重新调整
    • 实际上,我通过将采样率从 22000Hz(我的录音应用程序默认设置)更改为 16000Hz(这是识别器的默认设置)来解决它。准确度恢复正常!哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2021-10-09
    • 2016-05-26
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多