27

私は音声認識を使用している大学のプロジェクトに取り組んでいます。現在、Windows 7で開発しており、.netに付属のsystem.speech APIパッケージを使用しており、C#で開発しています。

私が直面している問題は、ディクテーション認識が十分に正確ではないことです。その後、アプリケーションを起動するたびに、デスクトップの音声認識が自動的に開始されます。これは私にとって大きな迷惑です。すでに私が話す言葉は十分に明確ではなく、矛盾する認識はコマンドとして解釈され、アプリケーションの切り替えの最小化などのアクションが実行されています。

これは私のアプリの重要な部分であり、このMicrosoftの失敗以外に、私に適した音声APIを提案してください。簡単なディクテーション文法だけでも理解できればいいですね。

4

2 に答える 2

36

共有デスクトップ認識エンジンを使用しているため、デスクトップ認識が開始されていると思います。Inproc Recognizer は、アプリケーションにのみ使用する必要があります。これを行うには、アプリケーションで SpeechRecognitionEngine() をインスタンス化します。

ディクテーション文法とデスクトップ Windows レコグナイザーを使用しているため、話者がトレーニングして精度を向上させることができると思います。Windows 7 レコグナイザー トレーニングを実行して、精度が向上するかどうかを確認します。

.NET スピーチを始めるには、数年前にhttp://msdn.microsoft.com/en-us/magazine/cc163663.aspxで公開された非常に優れた記事があります。これはおそらく、これまでに見つけた中で最高の紹介記事です。少し時代遅れですが、非常に便利です。(AppendResultKeyValue メソッドは、ベータ版の後に削除されました。)

これは、私が考えることができる口述文法を使用する最も単純な .NET Windows フォーム アプリの 1 つを示す簡単なサンプルです。これは、Windows Vista または Windows 7 で動作するはずです。フォームを作成しました。その上にボタンを落として、ボタンを大きくしました。System.Speech と次の行への参照を追加しました。

using System.Speech.Recognition;

次に、次のイベント ハンドラーを button1 に追加しました。

private void button1_Click(object sender, EventArgs e)
{         
    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
    Grammar dictationGrammar = new DictationGrammar();
    recognizer.LoadGrammar(dictationGrammar);
    try
    {
        button1.Text = "Speak Now";
        recognizer.SetInputToDefaultAudioDevice();
        RecognitionResult result = recognizer.Recognize();
        button1.Text = result.Text;
    }
    catch (InvalidOperationException exception)
    {
        button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
    }
    finally
    {
        recognizer.UnloadAllGrammars();
    }                          
}

Microsoft が出荷する音声エンジンと API のさまざまなフレーバーを比較したもう少し詳しい情報は、System.Speech.Recognition と Microsoft.Speech.Recognition の違いは何ですか?で見つけることができます。?

于 2011-03-29T13:35:56.907 に答える