web-dev-qa-db-ja.com

優れた音声認識API

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

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

これは私のアプリの重要な部分であり、このMicrosoftの不作法以外の優れたSpeech APIを提案してください。単純なディクテーション文法だけを理解できたとしても、良いでしょう。

26
swordfish

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

ディクテーショングラマーとデスクトップウィンドウレコグナイザーを使用しているので、精度を向上させるためにスピーカーでトレーニングできると思います。 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の違いは何ですか?

35
Michael Levy