1

Kinectで音声認識を機能させることができました。ただし、文の一部であっても、特定の単語の認識効率を向上させようとしています。

this.speechEngine = new SpeechRecognitionEngine(ri.Id);

var words = new Choices();
words.Add(new SemanticResultValue("emerging", "EMERGING"));
words.Add(new SemanticResultValue("expiriences", "EXPIRIENCES"));
words.Add(new SemanticResultValue("paris", "PARIS"));
words.Add(new SemanticResultValue("atlanta", "ATLANTA"));
words.Add(new SemanticResultValue("creative", "CREATIVE"));
words.Add(new SemanticResultValue("back", "BACK"));

var gb = new GrammarBuilder { Culture = ri.Culture };
gb.AppendWildcard();
gb.Append(words);

var g = new Grammar(gb);
speechEngine.LoadGrammar(g);

speechEngine.SpeechRecognized += SpeechRecognized;

speechEngine.SetInputToAudioStream(
  this.audioStream, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
  speechEngine.RecognizeAsync(RecognizeMode.Multiple);
4

1 に答える 1

2

一歩下がって、Micrsoft Speech Platformを確認する必要があります(バージョン11が最新です)。

http://msdn.microsoft.com/en-us/library/dd266409.aspx

参照されているものを含むドキュメントでは、文法定義を扱うときにどれだけ具体的にできるかについて詳しく説明しています。より優れたドキュメントの1つは、音声認識文法仕様(SRGS)v1.0と、「動的」語彙を定義する方法について説明しています。

http://www.w3.org/TR/speech-grammar/

より動的な語彙が必要な場合は、コードで文法を定義するのではなく、外部XML(SRGSを使用して定義)を使用することを強くお勧めします。

たとえば、航空会社向けに作成したセクションは次のとおりです。

  <rule id="showFlight">
    <example>Show me Alaska Airlines flight number 2117.</example>
    <example>Where is US Airways flight 45.</example>
    <item>
      <one-of>
        <item>show me</item>
        <item>where is</item>
      </one-of>
    </item>
    <item>
      <ruleref uri="#airline" />
      <tag>out.Carrier = rules.airline;</tag>
    </item>
    flight
    <item repeat="0-1">number</item>
    <tag>out.Number = "";</tag>
    <item repeat="1-">
      <ruleref uri="#digit" />
      <tag>out.Number += rules.digit;</tag>
    </item>
  </rule>

...そこにはたくさんの参照とたくさんのオプションと選択肢があることに注意してください...そしてこれは簡単です!

文の途中で「パリ」という単語を拾うだけでは運が悪くなり、「パリ」という単語を参照するときにアプリケーションがどのように使用され、話されるかを調査します。

于 2012-10-25T21:57:35.100 に答える