1

ライブラリを使用してC#で音声認識を使用していSpeechRecognitionEngineます。「開始」という単語を認識する単語として設定しました(選択肢):

Choices choices_start = new Choices("start");
GrammarBuilder grBuilder_start = new GrammarBuilder(choices_start);
Grammar grammar_start = new Grammar(grBuilder_start);

SpeechRecognitionEngine speech = new SpeechRecognitionEngine();
speech.LoadGrammar(grammar_start);
speech.SpeechRecognized += RecognizerSpeechRecognized;

private void RecognizerSpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    foreach (RecognizedWordUnit word in e.Result.Words)
    {
        switch (word.Text)
        {
            case "start":
                Console.WriteLine(word.Text);
                speech.UnloadGrammar(grammar_start);
                speech.LoadGrammar(grammar_using);
                break;
            default:
                Console.WriteLine(word.Text);
                break;
        }
    }
}

問題は、私が何を言っても、常に「開始」という言葉を認識することです。

4

1 に答える 1

3

これがアルゴリズムの仕組みです。選択肢を 1 つだけ指定する限り、指定された単語のみが返されます。検索するテキスト バリアントをさらに指定する必要があります。

たとえば、任意のテキストを認識したい場合は、単純な文法の代わりにDictationGrammarを使用できます。単語のリストはまだ限られていることに注意してください。非常にまれな単語は認識できません。しかし、リストは大きくなります。

タスクが連続ストリーム内の特定の単語を探すことである場合、音声認識エンジンではなく、キーワード スポッティング エンジンを探す必要があります。Microsoft は、キーワード スポッティング エンジン機能を提供していません。CMUSphinxなどのオープン ソース エンジンを使用してビルドできます。

于 2012-12-22T06:43:37.057 に答える