3

私はこのSAPIv5.1ライブラリで遊んでいました。だから私は私が持っているサンプルWAVファイルをテストしていました。(ここからダウンロードしてください)。とにかく、そのファイルのサウンドはクリアで簡単です。3番目の単語が1つだけ含まれています。次のコードを実行すると、8番または「8」が表示されます。削除すると7になります。リストをランダム化しようとすると、さまざまな結果が得られます。私は本当に混乱していて、SAPIライブラリのSpeachRecognitionがまったく機能しないと思い始めました...

とにかくここで私がしていることです、

    private void button1_Click(object sender, EventArgs e)
    {
        //Add choices to grammar.
        Choices mychoices = new Choices();
        mychoices.Add("one");
        mychoices.Add("two");
        mychoices.Add("three");
        mychoices.Add("four");
        mychoices.Add("five");
        mychoices.Add("six");
        mychoices.Add("seven");
        mychoices.Add("eight");
        mychoices.Add("nine");
        mychoices.Add("zero");
        mychoices.Add("1");
        mychoices.Add("2");
        mychoices.Add("3");
        mychoices.Add("4");
        mychoices.Add("5");
        mychoices.Add("6");
        mychoices.Add("7");
        mychoices.Add("8");
        mychoices.Add("9");
        mychoices.Add("0");

        Grammar myGrammar = new Grammar(new GrammarBuilder(mychoices));

        //Create the engine.
        SpeechRecognitionEngine reco = new SpeechRecognitionEngine();

        //Read audio stream from wav file.
        reco.SetInputToWaveFile("3.wav");
        reco.LoadGrammar(myGrammar);

        //Get the recognized value.
        reco.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(reco_SpeechRecognized);

        reco.RecognizeAsync(RecognizeMode.Multiple);
    }

    void reco_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        MessageBox.Show(e.Result.Text);
    }
4

1 に答える 1

5

どのようにしてWAVファイルを作成しましたか?ビットレートが高いようです。レコグナイザーでサポートされているのは特定の形式のみです。試す:

  • サンプルあたり8ビット
  • シングルチャンネルモノ
  • 1秒あたり22,050サンプル
  • PCMエンコーディング

音声は約3秒で、ファイルサイズは520KBです。サポートされている形式には大きすぎるようです。

RecognizerInfoクラスを使用して、レコグナイザーでサポートされているオーディオ形式(SupportedAudioFormats)を見つけることができます--RecognizerInfo.SupportedAudioFormatsプロパティ

アップデート:

あなたのオーディオファイルはちょっと混乱しています。とてもうるさいです。また、サポートされていない形式です。Audacityはそれをステレオ、44.1 kHz、および32ビット浮動小数点として報告します。最初と最後のノイズを消音し、22.050 kHzにリサンプリングし、ステレオトラックを削除してから、非圧縮の8ビット符号なしWAVとしてエクスポートしました。その後、正常に動作します。

私のWindows7マシンでは、デフォルトのレコグナイザーは次のオーディオ形式のみをサポートしています。

  0:
  Encodingformat = Pcm
  BitsPerSample = 8
  BlockAlign = 1
  ChannelCount = 1
  SamplesPerSecond  = 16000

  1:
  Encodingformat = Pcm
  BitsPerSample = 16
  BlockAlign = 2
  ChannelCount = 1
  SamplesPerSecond  = 16000

  2:
  Encodingformat = Pcm
  BitsPerSample = 8
  BlockAlign = 1
  ChannelCount = 1
  SamplesPerSecond  = 22050

  3:
  Encodingformat = Pcm
  BitsPerSample = 16
  BlockAlign = 2
  ChannelCount = 1
  SamplesPerSecond  = 22050

  4:
  Encodingformat = ALaw
  BitsPerSample = 8
  BlockAlign = 1
  ChannelCount = 1
  SamplesPerSecond  = 22050

  5:
  Encodingformat = ULaw
  BitsPerSample = 8
  BlockAlign = 1
  ChannelCount = 1
  SamplesPerSecond  = 22050

また、文法から数値の選択肢を削除する必要があります。現在、レコグナイザーは「3」と「3」の2つの代替を返します。これはおそらくあなたが望むものではありません。文法でセマンティック結果値を使用して、単語「three」の数値3を返すことができます。

于 2011-06-01T15:17:56.547 に答える