系统.语音识别不工作

本文关键字:工作 语音识别 系统 | 更新日期: 2023-09-27 18:14:02

我使用c#系统。语言,我想要识别的句子数量有限。下面是代码

  SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
    String[] Sentences = File.ReadAllLines(samplePath);
    Choices sentences = new Choices();
    sentences.Add(Sentences);
    GrammarBuilder gBuilder = new GrammarBuilder(sentences);
    Grammar g = new Grammar(gBuilder);
    g.Enabled = true;
    recognizer.LoadGrammar(g);
    try
    {
        recognizer.SetInputToWaveFile(filePath);
        RecognitionResult result = recognizer.Recognize();
        String ret = result.Text;
        recognizer.Dispose();
        return ret;
    }
    catch (InvalidOperationException exception) { }
    return "";

当我给它一些wav文件时,这段代码抛出异常,异常的原因是它无法在示例句子中找到匹配。我能强制它选择一个句子吗?

系统.语音识别不工作

您正在获得NullReferenceException,因为您的.wav文件的格式不同于System.Speech.Recognition.SpeechRecognitionEngine在使用SetInputToWaveFile方法时默认试图分析.wav文件的方式。

为了改变读取格式,你应该使用SetInputToAudioStream方法来代替:

using (FileStream stream = new FileStream("C:''3.wav", FileMode.Open))
{
    recognizer.SetInputToAudioStream(stream, new SpeechAudioFormatInfo(5000, AudioBitsPerSample.Sixteen, AudioChannel.Stereo));
    RecognitionResult result = recognizer.Recognize();
    string ret = result.Text;
}

这样它读取你的.wav文件作为一个立体声文件,在16bps每秒5000个样本作为你的.wav文件是真正编码。

注意:这为我解决了问题ON YOUR FILE