语音识别API在没有声音时匹配语法(Microsoft)

时间:2012-10-09 22:04:25

标签: kinect speech-recognition

我使用Microsoft SAPI和Kinect构建了Speech Recognition tool

在下面的代码示例中,我加载了XML语法并启动了SpeechRecognitionEngine。

有时几乎没有声音,SpeechRecognitionEngine对一个简单的句子有很高的置信度(0.85):“Sarah现在几点钟”

  • 为什么引擎会在沉默中触发这场强烈的比赛?!
  • 任何Workaroud?

这是我的main class on GitHub

我也写(法语)a blog post with dump(wav + xml)

1 个答案:

答案 0 :(得分:0)

我不确定你说的是哪个波形文件(从中学开始我就没说过法语)。但我认为来自你小组的这一浪潮符合条件:dump_2012_12.16_12.47.33.wav。它具有高置信度值.857,并且在音频文件中似乎没有任何语音。查看频谱图(见下文),您可以看到音频文件确实包含语音范围内的能量。 enter image description here

现在大多数语音识别引擎使用隐马尔可夫模型(又名HMM)来将音频矢量模式与语音匹配。今天的现有技术并不总是准确的。 HMM往往对背景噪音非常敏感。

这就是为什么今天生产的大多数语音类型功能(如Siri)都很容易说话。你需要按一个按钮,你有5秒钟的时间对着麦克风说话。他们这样做,所以他们可以确定有某种类型的语音信号。对于那些打开麦克风的系统(Kinect是我所知道的唯一一个),他们尝试使用一种回声消除形式来抑制背景音频。但即使是最先进的技术,仍然会流血。

我所知道的唯一相对简单的工作(同样不是100%)涉及编辑语法以包含垃圾规则并缩短可能的短语列表。当垃圾规则不知道该做什么时,垃圾规则会给语音引擎一个“跑回妈妈”的选项。

http://www.w3.org/TR/speech-grammar/#S2.2.3

虽然我不认为这是推荐用法,但我发现使用垃圾规则来帮助过滤背景噪音时,某些系统的表现会更好。当然,他们必须忽略垃圾回收事件。