MS SpeechRecognitionEngine记录基础音频

时间:2013-08-01 22:36:37

标签: speech-recognition

我正在使用Microsoft System.Speech SpeechRecognitionEngine进行听写,我需要能够同时录制正在处理的所有音频以及对其进行语音识别。

现在我可以很好地进行语音识别,我可以获得已识别的音频。但是,我需要能够同时保存音频流,以便我可以使用语音识别中的元数据来获取整个音频流中的其他信息。

这样做的适当方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式将关联的音频文件以波形流的形式保存到磁盘中。有关完整示例,请参阅链接(http://msdn.microsoft.com/en-us/library/system.speech.recognition.recognizedaudio.writetowavestream.aspx)。

 RecognizedAudio audio = e.Result.Audio;
TimeSpan start = e.Result.Words[3].AudioPosition;
TimeSpan duration = audio.Duration - start;

// Add code to verify and persist the audio.
string path = @"C:\temp\nameAudio.wav";
using (Stream outputStream = new FileStream(path, FileMode.Create))
{
  RecognizedAudio nameAudio = audio.GetRange(start, duration);
  nameAudio.WriteToWaveStream(outputStream);
  outputStream.Close();
}

答案 1 :(得分:1)

基于你对@Brien King的评论,这可能不是你想要的,但我发现Alan的答案很有用,但想补充一点,如果你想保存Rejected语音中的音频,可以使用EventHandler for SpeechRecognitionRejected < / p>

我指出这一点是因为我不清楚可以从不成功的识别中保存音频。我之前曾尝试使用SpeechHypothesizedEventArgs中的Result对象,该对象没有我希望可用的大量数据。

我主要是在添加这个答案,以防有人对此感到困惑。