SpeechRecognitionEngine语音和录制不匹配

时间:2013-10-21 12:21:54

标签: vb.net .net-4.5 speech-recognition

我正在使用SpeechRecognitionEngine来识别用户说出的信息。该方法将在客户端的计算机上运行,​​它工作得很好,并且几乎像我想要的那样识别文本。所以我很高兴。

但是,我希望能够在我的服务器上对wave文件进行一些处理。现在我正在我的本地机器上进行测试,当我在识别器上使用SetInputToWaveFile方法,然后传回相同的音频剪辑(最初由引擎记录的那个)时,它没有提供任何接近原始的匹配(或替代)。

例如: 用户说话和识别器返回短语:“你好,今天你好”,有10个替补。 Wave文件已保存,然后使用SetInputToWaveFile(或SetInputToAudioStream)传入。识别器将返回一个与口头文本完全不同的短语(通常是一个单词),例如“Moon”以及ZERO替换。

通常,执行此操作时,识别器不会引发RecognizeCompleted事件。但是,有时会发生SpeechHypothesized事件,有时会发生AudioSignalProblem事件。

不应传递从识别器结果中捕获的音频片段,通过相同的识别器返回相同的匹配项?

原件:

Private _recognizer As New SpeechRecognitionEngine(New CultureInfo("en-US"))

_recognizer.UnloadAllGrammars()
_recognizer.LoadGrammar(New DictationGrammar())
_recognizer.SetInputToDefaultAudioDevice()
_recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(2)
_recognizer.MaxAlternates = 10
_recognizer.BabbleTimeout = TimeSpan.FromSeconds(1)       
Dim result As RecognitionResult = _recognizer.Recognize()
Dim aud As RecognizedAudio = _result.Audio 'This is the audio that gets saved
aud.WriteToWaveStream("mypath")

(我已经删除了介于结果之间的一些逻辑代码,并进行了一些处理)

现在尝试退出音频文件:

_recognizer.SetInputToWaveFile("mypath")

'Doesn't work either
'_recognizer.SetInputToAudioStream(File.OpenRead("mypath"), New SpeechAudioFormatInfo(44100, AudioBitsPerSample.Sixteen, AudioChannel.Mono)) 

Dim result2 As RecognitionResult = _recognizer.Recognize()

结果和结果2的识别/匹配甚至不接近。

1 个答案:

答案 0 :(得分:0)

我手动设置语音音频格式信息,现在效果很好。

_recognizer.SetInputToAudioStream(File.OpenRead("mypath"), New SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, Nothing))