c# - System.Speech 降低麦克风灵敏度

标签 c# microphone sensitive-data system.speech.recognition

我想知道如何使用 C# 中的 System.Speech 降低麦克风灵敏度..

为了 self 解释,我有一个语法文件,当我说 SIVRAJ(我的程序名称)时,我的应用程序应该开始记录我

但是,我可以说一些完全不同的东西,我的应用程序会理解一些“SIVRAJ”...

我的 XML 文件中有一部分:

<rule id="mouskie" scope="public">
<item>
  <one-of>
    <item>SIVRAJ</item>
  </one-of>
</item>
<ruleref special="GARBAGE" />
<one-of>
  <item>
    <one-of>
      <item>quit</item>
    </one-of>
    <tag>$.mouskie={}; $.mouskie._value="QUIT";</tag> // quit programm when i say SIVRAJ + quit
  </item>
  ..... etc etc

这是启动识别引擎的功能:

SrgsDocument xmlGrammar = new SrgsDocument("Grammaire.grxml");
Grammar grammar = new Grammar(xmlGrammar);
ASREngine = new SpeechRecognitionEngine();
ASREngine.SetInputToDefaultAudioDevice();
ASREngine.LoadGrammar(grammar);

ASREngine.SpeechRecognized += ASREngine_SpeechRecognized;
ASREngine.SpeechRecognitionRejected += ASREngine_SpeechRecognitionRejected;
ASREngine.SpeechHypothesized += ASREngine_SpeechHypothesized;

最后,我在这里恢复数据:

 recoText.Text = e.Result.Text;
 devine.Text = "";
 affiche.Text = "";

 string baseCommand = e.Result.Semantics["mouskie"].Value.ToString();
 commandText.Text = baseCommand;

 if (baseCommand.Equals("QUIT"))
 {
   m_SpeechSynth.Speech("au revoir", VoiceGender.Male, VoiceAge.Adult);
   Environment.Exit(0);
 }

最佳答案

在这种情况下,您实际上并不是在寻找麦克风灵敏度。我相信您正在寻找的是短语信心。

当引擎返回识别结果时,它还会返回一个置信度分数。 “基本上说这就是我有多么自信我听到的就是你说的。”

if (Speech.Recognition.RecognitionResult.Confidence > .20)
{
    //do some good stuff
}
else
{
   // ignore
}

这包含一个从 0 到 1 的值,其中 1 是最有信心的,0 基本上是导致 reco 事件的背景噪音。您将不得不考虑什么置信度值有意义,因为它是高度语法和环境特定的。

您可以做的另一件事是更改触发词。我怀疑语音引擎的词典中是否包含 SIVRAJ 短语。在这种情况下,引擎会尝试猜测这个词是由什么音素组成的(如果您有语言背景,可以在语法中自己提供它们作为自定义发音)。 Start Recording 之类的东西将有更好的机会为您提供更体面的体验。

关于c# - System.Speech 降低麦克风灵敏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376055/

相关文章:

c# - 如何获取所有连接到网络的计算机列表?

c# - 如何在 C# 中使用反射检查集合类型属性的相等性

android - 无法设置麦克风静音 - Android

java - 如何录制声音并将其设置为Java文件?

git - 在 Github repo 上的所有先前提交中 stash 密码

c# - MVC C# 中的验证

c# - 如何获取控件/ View 或页面未清理的 xaml?

Delphi 7、indy9 tcp 音频流

azure - 如何在 Azure PowerShell 中隐藏错误消息中的敏感值?