1

我正在使用SpeechRecognitionEngine库在 C# 中进行语音识别,我已将单词“start”设置为要识别的单词(选择):

Choices choices_start = new Choices("start");
GrammarBuilder grBuilder_start = new GrammarBuilder(choices_start);
Grammar grammar_start = new Grammar(grBuilder_start);

SpeechRecognitionEngine speech = new SpeechRecognitionEngine();
speech.LoadGrammar(grammar_start);
speech.SpeechRecognized += RecognizerSpeechRecognized;

private void RecognizerSpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    foreach (RecognizedWordUnit word in e.Result.Words)
    {
        switch (word.Text)
        {
            case "start":
                Console.WriteLine(word.Text);
                speech.UnloadGrammar(grammar_start);
                speech.LoadGrammar(grammar_using);
                break;
            default:
                Console.WriteLine(word.Text);
                break;
        }
    }
}

问题是不管我说什么,它总是能识别“开始”这个词,知道为什么吗?

4

1 回答 1

3

这就是算法的工作原理。只要您只给它一个选择,它只会返回给定的单词。你需要给它更多的文本变体来寻找。

例如,如果您想识别任意文本,您可以使用DictationGrammar而不是简单语法。请注意,单词列表仍然有限,无法识别非常稀有的单词。但是这个列表会很大。

如果您的任务是在连续流中查找特定单词,则需要查找关键字定位引擎,而不是语音识别引擎。Microsoft 不提供关键字发现引擎功能。您可以使用CMUSphinx等开源引擎构建一个

于 2012-12-22T06:43:37.057 回答