2

Windows 7で音声を認識しようとしていますが、常に音声をコマンドとして認識するか、「それは何でしたか?」とだけ表示されます。

どうすればすべてのスピーチを取得できますか?

コード:

SpeechRecognizer _speechRecognizer;

    public Window1()
    {
        InitializeComponent();

        // set up the recognizer
        _speechRecognizer = new SpeechRecognizer();
        _speechRecognizer.Enabled = false;
        _speechRecognizer.SpeechRecognized +=
      new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); }
4

1 に答える 1

5

おそらく、SAPI の代わりに .net System.Speech 名前空間を使用したいですか? 数年前に公開された非常に優れた記事がhttp://msdn.microsoft.com/en-us/magazine/cc163663.aspxにあります。これはおそらく、これまでに見つけた中で最高の紹介記事です。少し時代遅れですが、非常に便利です。(AppendResultKeyValue メソッドは、ベータ後に削除されました。)

共有認識エンジンを使用しようとしていますか? そのため、コマンドが表示されている可能性があります。認識のための特定のタスクがありますか? その場合は、タスク固有の文法と inproc 認識機能を使用したほうがよいでしょう。

単語を処理する必要がある場合は、System.Speech に付属の DictationGrammar を使用します。http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspxを参照してください。

楽しみのために、私は思いつくディクテーション文法を使用する最も単純な .NET Windows フォーム アプリをまとめました。フォームを作成しました。その上にボタンを落として、ボタンを大きくしました。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();
    }                          
}
于 2010-11-18T17:17:41.803 に答える