1

kinectSDK音声認識を使用してMetroUIからアプリケーションを実行したい。たとえば、「ニュース」という単語を言うと、MetroUIからニュースのアプリケーションが実行されます。

みんなありがとう!

よろしく!

4

1 に答える 1

2

まず、オーディオストリームと接続して、リスニングを開始する必要があります。

    private KinectAudioSource source;
    private SpeechRecognitionEngine sre;
    private Stream stream;

private void CaptureAudio()
        {

            this.source = KinectSensor.KinectSensors[0].AudioSource;
            this.source.AutomaticGainControlEnabled = false;
            this.source.EchoCancellationMode = EchoCancellationMode.CancellationOnly;
            this.source.BeamAngleMode = BeamAngleMode.Adaptive;

        RecognizerInfo info = SpeechRecognitionEngine.InstalledRecognizers()
            .Where(r => r.Culture.TwoLetterISOLanguageName.Equals("en"))
            .FirstOrDefault();

        if (info == null) { return; }
        this.sre = new SpeechRecognitionEngine(info.Id);

        if(!isInitialized) CreateDefaultGrammars();

        sre.LoadGrammar(CreateGrammars()); //Important step

        this.sre.SpeechRecognized +=
            new EventHandler<SpeechRecognizedEventArgs>
                (sre_SpeechRecognized);
        this.sre.SpeechHypothesized +=
            new EventHandler<SpeechHypothesizedEventArgs>
                (sre_SpeechHypothesized);
        this.stream = this.source.Start();
        this.sre.SetInputToAudioStream(this.stream, new SpeechAudioFormatInfo(
            EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
        this.sre.RecognizeAsync(RecognizeMode.Multiple);

    }

sre.LoadGrammar(CreateGrammars());まず、サンプルで、文法を作成してロードする重要なステップが1つあることがわかります。そのため、メソッドを作成する必要がありCreateGrammars()ます。

private Grammar CreateGrammars()
        {

        var KLgb = new GrammarBuilder();
        KLgb.Culture = sre.RecognizerInfo.Culture;
        KLgb.Append("News");
        return Grammar(KLgb);

    }

上記のサンプルは、「ニュース」という単語をリッスンする文法を作成します。それが認識されると(あなたの文法でその単語が1つである確率がしきい値よりも高い)、音声認識エンジン(sre)はSpeechRecognizedイベントを発生させます。

もちろん、2つのイベント(Hypothetize、Recognize)に適切なハンドラーを追加する必要があります。

    private void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {

        this.RecognizedWord = e.Result.Text;
        if (e.Result.Confidence > 0.65) InterpretCommand(e);
    }

あなたがしなければならないのはInterpretCommandあなたが望むことを何でもするメソッドを書くことです(メトロアプリを実行するように;))。辞書に複数の単語がある場合、メソッドは認識されたテキストを解析し、これが認識されたニュースの単語であることを確認する必要があります。

ここでは、Kinectに関するすばらしい本のサンプルをダウンロードできます:Microsoft Kinect SDKを使用したKinectプログラミングの開始(残念ながら、本自体は無料ではありません)。Chapter7 \ PutThatThereComplete \フォルダーには、インスピレーションを得られるオーディオを使用したサンプルがあります。

于 2012-07-02T11:58:03.467 に答える