使用C#进行语音识别可以连续语音从一组词汇中识别单词

时间:2018-12-04 20:51:56

标签: c# speech-recognition speech-to-text

我想在我的C#应用​​程序中使用语音识别,但是到目前为止,我尝试的操作没有达到我的期望。我需要的是一种从连续语音中识别单词(或可能是很短的短语)的方法,而且每个单词之间都不会中断。我的词汇量也相当有限,因此,我希望将可识别单词的选项限制在我指定的范围之内。

到目前为止,我已经尝试使用内置的System.Speech.Recognition API。在没有指定词汇的情况下,我能够识别语音,但是对于我的目的而言,转录不够准确,并且如果我可以限制词汇的话,也将使以后的处理变得更加容易。

然后我尝试指定一个词汇,但是在这里出现了程序跳过单词的问题。如果我在每个单词后都稍作休息而说话缓慢,那么它就能很好地接听所有内容,并且看起来足够准确,可以满足我的需求。但是,当我开始不停地讲话时,它通常只会听完最后一个单词,或者跳过其中的一些单词。

我还发现了PauseRecognizerOnRecognition方法,该方法似乎与我正在寻找的方法类似。但这似乎只对SpeechRecognizer有效,而对SpeechRecognitionEngine无效。但是,对于我的需求,使用SpeechRecognizer时弹出和声音是不理想的,而且无论如何我都无法使其正常工作(我最终尝试放弃时还没有做足够的尝试,因为这可能会无论如何都不适合我。

我正在寻找的是一种在默认System.Speech库中进行此工作的方法,或者找到一些可以在脱机工作时实现此目的的API,最好是免费的。

我确实在寻找解决方案,并试图使它起作用,但是目前我对如何做一无所知,似乎没有什么能满足我的期望。希望有人可以想到更好的解决方案。

编辑:由于无法找到解决方案而放弃之后,我现在再次积极地寻找解决方案。通过使用Append中的GrammarBuilder方法,我设法进一步使用内置的Windows语音识别。多亏了这一点,我现在可以立即识别出一组紧随彼此的短语。我使用这种方法的问题之一是,根据指令的开始,我可能期望跟随它的短语数量有所不同。唯一的解决方案是在末尾添加所有可能的短语以及它们的变体和可选部分。这不仅繁琐,而且效率很低。对于我的用例,我希望遵循的短语会根据它们之前的内容而有所不同。不幸的是,似乎没有任何方法可以足够快地识别出这些短语,以便能够说出随后会期望哪些短语,我也没有找到一种方法来缓冲输入以等待第一部分被识别并处理下一个部分根据第一句话说的。我愿意接受任何解决方案,包括使用其他API。

0 个答案:

没有答案