【问题标题】:Why need grammar in Speech Recognition C#为什么在语音识别 C# 中需要语法
【发布时间】:2017-03-22 03:27:09
【问题描述】:
SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
Choices clist = new Choices();
// just assume I have added words in clist not shown here
Grammar gr = new Grammar(new GrammarBuilder(clist));

sre.RequestRecognizerUpdate();
sre.LoadGrammar(gr);
sre.SpeechRecognized += sre_SpeechRecognized;
sre.SetInputToDefaultAudioDevice();
sre.RecognizeAsync(RecognizeMode.Multiple);

 void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
 {
//This only outputs words present in grammar
   Console.WriteLine(e.Result.Text);
 }

简而言之,为什么我们需要语音识别中的语法。如果需要语法,那有什么意义。如果识别器必须匹配语法中存在的字符串,为什么我们不能只输出语音识别器在没有语法的情况下识别的内容?

谢谢,如果我错了,请纠正我。

【问题讨论】:

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


【解决方案1】:

我们使用语法来区分押韵单词的上下文或单词的发音方式。例如你好和黄色。 link 有一个很好的示例说明。你好与问候语法有关,而黄色与颜色语法有关。这提高了识别的效率/准确性

如果语法规则或语法内部的分组很聪明, 开发人员可以在系统进入时启用和禁用场景 一个特定的状态。它可以提供上下文,在某些情况下,更好 系统正在侦听的单词的准确性。

您也可以参考 MSDN 链接了解Purpose of Grammars 上的详细信息。

它帮助代码提供限制词汇自定义词汇过滤识别结果识别规则等功能.

【讨论】:

  • 我明白了,我有以下两个问题。 1-我可以禁用语法并仅输出它识别出的写入或错误的内容。 2-如果这不可能,那么我可以在c#中包含android语音识别类吗,因为我猜它使用离线google api,因为当我在android中创建一个sms narrator应用程序时,我只是启动了一个speechRecognizer类并使用它的功能和事件和我不必创建任何语法,也许是因为它使用了来自 android SDK 的内置 google api 语法。如果我能用它就好了。
  • @Ahmed.J,1. 是的,你可以。 2.我不确定android语音识别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多