【问题标题】:MS SpeechRecognitionEngine record underlying audioMS SpeechRecognitionEngine 记录底层音频
【发布时间】:2015-02-28 02:39:32
【问题描述】:

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

现在我可以很好地进行语音识别,并且可以获取已识别内容的音频。但是,我需要能够同时保存音频流,以便以后可以使用语音识别中的元数据从整个音频流中获取更多信息。

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

【问题讨论】:

  • 让我澄清一下。我希望直接录制音频,并在此基础上应用语音识别。

标签: speech-recognition


【解决方案1】:

您可以通过以下方式将关联的音频文件作为波流保存到您的磁盘。有关完整示例,请参见链接 (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();
}

【讨论】:

    【解决方案2】:

    根据您的评论@Brien King,这可能不是您想要的,但我发现 Alan 的回答很有用,但想补充一点,如果您想从被拒绝的语音中保存音频,可以使用 SpeechRecognitionRejected 的 EventHandler

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

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

    【讨论】:

    • 我用过的库都没有很好地用于听写。我发现使用自定义语法有很大帮助。
    • 关于静音检测-据我所知,我们需要实现一些静音检测算法。据我所知,NAudio 无法做到这一点。嗯..我记得..Microsoft Engine 有 SpeechDetectionEvent 是否正确?如果是这样,我们可以用它来处理这个问题,当它发生时——用语音字节(使用 NAudio 麦克风)切割缓冲区并使用它?
    • 抱歉对静音检测不太了解。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2017-07-10
    相关资源
    最近更新 更多