我正在使用SpeechRecognitionEngine
库在C#中进行语音识别,我将单词“start”设置为一个单词来识别(Choices):
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;
}
}
}
问题在于,无论我说什么,它总是认出“开始”这个词,任何想法为什么?
答案 0 :(得分:3)
这就是算法的工作原理。只要你给它一个选择,它只会返回给定的单词。您需要为其提供更多文本变体以供查找。
例如,如果要识别任意文本,可以使用DictationGrammar而不是简单语法。请注意,单词列表仍然有限,它将无法识别非常罕见的单词。但名单很大。
如果您的任务是在连续流中查找特定单词,则需要查找关键字定位引擎,而不是语音识别引擎。 Microsoft不提供关键字定位引擎功能。您可以使用CMUSphinx
等开源引擎构建一个