0

文法を使用して Choice のオブジェクトで構築された英語の文を認識すると、音声認識が正常に機能する中国語の Windows 7 を使用しています。 Grammar のオブジェクトは、SrgsDocement のオブジェクトで構成されています。プロジェクトの私のフラグメントがあります。

    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine ( System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
            SrgsDocument srgsdoc = new SrgsDocument(./commongreetingGrammar.grxml");
            recognizer.MaxAlternates = 5;
            recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
            recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);
            recognizer.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
            recognizer.LoadGrammar(new Grammar(srgsdoc));

            recognizer.SetInputToDefaultAudioDevice();
            recognizer.RecognizeAsync (RecognizeMode .Multiple);
        }
        catch (Exception ex)
        { Console.WriteLine(ex.Message); }
        Console.ReadKey();
    }

    static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
    {
        Console.WriteLine("Detect that someone is speeching");
    }

    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
        if (e.Error == null)
            Console.WriteLine("complete to load grammar ");
        else
            Console.WriteLine("Fail to load grammar");
    }

    static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
    {
        if (e.Result.Semantics["step"].Value.ToString() == "A1")
        {
            Console.WriteLine("A start to speak:{0}", e.Result.Text);
        }
    }

また、srgsdoc という名前の SrgsDocement のオブジェクトを構築する commongreetingGrammar.grxml という名前のファイルがあります (.grxml ファイルのプレーン テキストの代わりに .grxml ファイルの画像を追加して申し訳ありません)。

![enter image description here][1]
4

1 に答える 1

0

問題を明確に提示していないことを残念に思います。Microsoft Speech Recognizer 8.0 for Windows (Chinese Simplified - PRC) をインストールした中国語 Windows7 で、SAPI5.4 の一部である SpeechRecognitionEngine クラスを使用して英文を認識しようとしています。オブジェクトで構築された Grammar クラスのオブジェクトを使用します。 Choice クラスの SpeechRecognitionEngine クラスのオブジェクトには、文法が読み込まれているため、「お元気ですか」、「はい」、「やめてください」などの簡単な英文を認識できます。ただし、.grxmlファイルで構築されたSrgsDocementオブジェクトで構築されたGrammarクラスのオブジェクトを使用すると、文法をロードしたSpeechRecognitionEngineオブジェクトは、いくつかの簡単な英語の文章を認識できず、オーディオ入力のみを検出できます.コードの断片は次のとおりです.

幸いなことに、今日、問題の解決策を見つけました。問題は、英語の言語パックをインストールせず、Grammar オブジェクトを間違って作成したことです。これにより、SpeechRecognitionEngine オブジェクトが英語の文章を認識できなくなりました。解決策の詳細はCodeProjectに投稿しました。

于 2013-03-10T04:08:02.457 に答える