c# - 在 C# 中进行语音识别从连续语音中的一组词汇中识别单词
问题描述
我想在我的 C# 应用程序中使用语音识别,但到目前为止我所尝试的并没有达到我的期望。我需要的是一种从连续语音中识别单词(或者可能是非常短的短语)的方法,每个单词之间没有中断。我也在使用相当有限的词汇表,因此,我希望将识别单词的选项限制为我指定的选项。
到目前为止,我已经尝试过使用内置System.Speech.Recognition
API。在没有指定词汇的情况下,我能够让它识别我的声音,但是对于我的目的来说,转录不够准确,如果我可以限制词汇,我在以后的处理中也会更容易。
然后我尝试指定一个词汇表,但这里出现了程序跳过单词的问题。如果我在每个单词后稍作停顿,慢慢地说,它能够很好地接收所有内容,并且看起来足够准确,可以满足我的需求。但是当我开始连续说话时,它通常要么只得到最后一个词,要么跳过其中一些。
我还发现了PauseRecognizerOnRecognition
似乎与我正在寻找的方法相似的方法。但这似乎只适用于SpeechRecognizer
而不适用SpeechRecognitionEngine
。但是,出于我的需要,使用时创建的弹出窗口和声音SpeechRecognizer
是不可取的,无论如何我都无法让它正常工作(我可能没有尝试过足够的尝试,因为我最终放弃了,因为这可能不是一个合适的解决方案无论如何对我来说)。
我正在寻找的是一种在默认System.Speech
库中使其工作的方法,或者找到一些能够在离线工作时实现这一目标的 API,最好是免费的。
我真的在寻找解决方案并试图让它发挥作用,但我目前不知道该怎么做,似乎没有什么能满足我的期望。希望有人能想出一个更好的解决方案来解决这个问题。
编辑:由于无法找到解决方案而放弃后,我现在再次积极寻找解决方案。我设法使用内置的 Windows 语音识别和使用中的Append
方法更进一步GrammarBuilder
. 多亏了这一点,我现在可以识别出一组紧随其后的短语。我对这种方法的一个问题是,根据指令的开始,我可能期望跟随它的短语数量不同。这里唯一的解决方案是在末尾添加所有可能的短语及其变体以及可选部分。这不仅乏味,而且可能非常低效。对于我的用例,我希望遵循的短语根据它们之前的内容而有所不同。不幸的是,似乎没有任何方法可以足够快地识别短语,以便能够说出以后可以期待哪些短语,我也没有找到一种方法来缓冲输入,等待第一部分被识别并处理下一个根据前面所说的。
解决方案
推荐阅读
- linux - 证明顶部 100% 的核心实际上是自旋锁定的最佳性能指标
- java - org.apache.oozie.action.hadoop.JavaMainException:java.io.FileNotFoundException
- visual-studio-code - 在 Visual Studio Code 中格式化时保留换行符
- corda - 迁移到 Oracle 11g 时出错“请检查正确的 JDBC 驱动程序...”
- alexa - Amazons Alexa:语音历史记录中不显示请求
- java - 使用范围而非容器的 Java JTwig For 循环
- android - 删除被杀死的前台服务的通知图标(Android)
- angularjs - PWA 添加到主屏幕后会丢失其参数和查询参数
- liquibase - Liquibase 中的上下文,在除一个之外的任何上下文中运行
- git - 在 Git 中隐藏/锁定提交历史