我正在使用微软的System.Speech SpeechRecognitionEngine进行口述,我需要能够记录所有正在处理的音频,同时对其执行语音识别。
现在,我可以很好地进行语音识别,并且可以获得所识别内容的音频。但是,我需要能够同时保存音频流,以便以后可以使用语音识别中的元数据从整个音频流中获取附加信息。
这样做的适当方法是什么?
发布于 2013-09-11 23:35:29
您可以通过以下方式将关联的音频文件以wave流的形式保存到磁盘。完整的例子见链接(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();
}发布于 2015-02-28 02:39:32
根据你的评论@Brien King,这可能不是你想要的,但我发现艾伦的答案很有用,但我想补充一句,如果你想从被拒绝的语音中保存音频,可以使用SpeechRecognitionRejected的EventHandler来完成
我之所以指出这一点,是因为对我来说,从不成功的识别中保存音频是不可能的。我之前曾尝试使用SpeechHypothesizedEventArgs中的Result对象,该对象没有我期望的大量数据。
我主要是添加这个答案,以防有人像我一样对此感到困惑。
https://stackoverflow.com/questions/18005818
复制相似问题