语音识别引擎音频设备

时间:2018-01-24 08:22:59

标签: c# speech

我正在尝试使用带语音识别引擎的其他输入设备。我曾尝试使用NAudio来实现这一点,使用WaveIn和DataAvailable事件,但是我无法弄清楚如何将缓冲区从事件转换为可与语音识别引擎的SetInputToAudioStream()一起使用的流。我目前的代码如下:

using System.Speech.Recognition;
using NAudio.Wave;

private SpeechRecognition sre;
private WaveInEvent wi;
private Stream st;

static void main(string[] args) {
    Choices words = new Choices(new string[] { "word", "test" });
    Grammar g = new Grammar(words);

    wi = new WaveInEvent();
    wi.DeviceNumber = 0; // Default device
    wi.DataAvailable += Wi_DataAvailable;
    wi.StartRecording();

    st = new MemoryStream();

    sre = new SpeechRecognitionEngine();
    sre.LoadGrammar(g);
    //sre.SetInputToDefaultAudioDevice();
    sre.SetInputToAudioStream(st, /* SpeechAudioFormatInfo */);
    sre.SpeechRecognized += Sre_SpeechRecognized;
    sre.RecognizeAsync(RecognizeMode.Multiple);
}

private void Wi_DataAvailable(object sender, WaveInEventArgs e) {
    // Convert e.Buffer to Stream st
}

private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) {
    Console.WriteLine(e.Result.Text);
}

有人可以帮我这个吗?感谢。

0 个答案:

没有答案