我使用Microsoft SAPI和Kinect构建了Speech Recognition tool。
在下面的代码示例中,我加载了XML语法并启动了SpeechRecognitionEngine。
有时几乎没有声音,SpeechRecognitionEngine对一个简单的句子有很高的置信度(0.85):“Sarah现在几点钟”
我也写(法语)a blog post with dump(wav + xml)
答案 0 :(得分:0)
我不确定你说的是哪个波形文件(从中学开始我就没说过法语)。但我认为来自你小组的这一浪潮符合条件:dump_2012_12.16_12.47.33.wav。它具有高置信度值.857,并且在音频文件中似乎没有任何语音。查看频谱图(见下文),您可以看到音频文件确实包含语音范围内的能量。
现在大多数语音识别引擎使用隐马尔可夫模型(又名HMM)来将音频矢量模式与语音匹配。今天的现有技术并不总是准确的。 HMM往往对背景噪音非常敏感。
这就是为什么今天生产的大多数语音类型功能(如Siri)都很容易说话。你需要按一个按钮,你有5秒钟的时间对着麦克风说话。他们这样做,所以他们可以确定有某种类型的语音信号。对于那些打开麦克风的系统(Kinect是我所知道的唯一一个),他们尝试使用一种回声消除形式来抑制背景音频。但即使是最先进的技术,仍然会流血。
我所知道的唯一相对简单的工作(同样不是100%)涉及编辑语法以包含垃圾规则并缩短可能的短语列表。当垃圾规则不知道该做什么时,垃圾规则会给语音引擎一个“跑回妈妈”的选项。
http://www.w3.org/TR/speech-grammar/#S2.2.3
虽然我不认为这是推荐用法,但我发现使用垃圾规则来帮助过滤背景噪音时,某些系统的表现会更好。当然,他们必须忽略垃圾回收事件。