2

SpeechRecognitionEngine ( https://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.speechdetected(v=vs. 110).aspx ).

サンプルコードは次のとおりです。

using System;
using System.Speech.Recognition;

namespace SampleRecognition
{
class Program
{
    static void Main(string[] args)

    // Initialize an in-process speech recognition engine.
    {
        using (SpeechRecognitionEngine recognizer =
           new SpeechRecognitionEngine())
        {

            // Create a grammar.
            Choices cities = new Choices(new string[] { 
            "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });

            GrammarBuilder gb = new GrammarBuilder();
            gb.Culture = new System.Globalization.CultureInfo("en-GB");
            gb.Append("I would like to fly from");
            gb.Append(cities);
            gb.Append("to");
            gb.Append(cities);

            // Create a Grammar object and load it to the recognizer.
            Grammar g = new Grammar(gb);
            g.Name = ("City Chooser");
            recognizer.LoadGrammarAsync(g);

            // Attach event handlers.
            recognizer.LoadGrammarCompleted +=
              new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
            recognizer.SpeechDetected +=
              new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);
            recognizer.SpeechRecognized +=
              new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

            // Set the input to the recognizer.
            recognizer.SetInputToDefaultAudioDevice();

            // Start recognition.
            recognizer.RecognizeAsync();

            // Keep the console window open.
            Console.ReadLine();
        }
    }

    // Handle the SpeechDetected event.
    static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
    {
        Console.WriteLine("  Speech detected at AudioPosition = {0}", e.AudioPosition);
    }

    // Handle the LoadGrammarCompleted event.
    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
        Console.WriteLine("Grammar loaded: " + e.Grammar.Name);
    }

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        Console.WriteLine("  Speech recognized: " + e.Result.Text);
    }
  }
}

私は多くの異なる例を試し、これを機能させるために一日中費やしました。たとえば、 RecognizeAsync()EmulateRecognizeAsync("I would like to fly to Chicago from Miami") に置き換えると、期待どおりに動作します。しかし、プログラムがマイクからの入力を取得していないようです。

詳細は次のとおりです。

  • Windows 8.1
  • .NET 4.0
  • Lenovo ThinkPad 内蔵マイク
  • ビジュアル スタジオ 2012
  • プログラムからの出力には、文法がロードされたときに書き出される次の情報メッセージがあることに注意してください。

    ConsoleApplication1.vshost.exe Information: 0 : SAPI does not implement phonetic alphabet selection.
    

何か不足していますか?もっと良いマイクが必要ですか?マイクをデフォルトのマイクにする以外に、ハードウェアをセットアップする必要がありますか? Windows 8 では別のライブラリを使用する必要がありますか? 私はアイデアがありません。

よろしくお願いします!

4

1 に答える 1

1

結局のところ、ラップトップに組み込まれているマイクは、Windows 音声認識にはまったく使用できません...

今日新しいヘッドセットを受け取りましたが、すべて問題なく動作しています。まだ情報メッセージが表示されます

ConsoleApplication1.vshost.exe Information: 0 : SAPI does not implement phonetic alphabet selection.

...しかし、すべてが機能しているようです。

于 2015-07-07T16:26:57.703 に答える