2

System.Speech.SpeechRecognitionEngine 5 秒のタイムラプスで音節や単語を数えられるかどうかを調べようとしています。

、 、およびイベントSpeechRecognitionEngineを使用して、いくつかのテストを行ってきました。DictationGrammarSpeechRecognized

話すのが遅すぎるかどうかを知らせるアプリを作成する必要があるため、5 秒ごとに何語話されているかをカウントしたいと考えています。

どんな助けも高く評価されます

ありがとう

4

1 に答える 1

1

どのプラットフォームを使用しようとしているかは 100% わかりませんが、これは Windows のようです。

そのため、MSDN のコード サンプルは、認識イベント情報を取得し、音声情報を取得するのに適した場所です。

http://msdn.microsoft.com/en-us/library/system.speech.recognition.recognitionresult.aspx

// Display information about the words in the recognition result.
  foreach (RecognizedWordUnit word in e.Result.Words)
  {
    RecognizedAudio audio = e.Result.GetAudioForWordRange(word, word);
    Console.WriteLine(" {0,-10} {1,-10} {2,-10} {3} ({4})",
      word.Text, word.LexicalForm, word.Pronunciation,
      audio.Duration, word.DisplayAttributes);
  }

ただし、人の話し方が遅すぎるかどうかを検出するには、AudioSignalProblem 列挙を使用することもできます。これの唯一の欠点は、構成できないことです。このリンクからのコード: http://msdn.microsoft.com/en-us/library/system.speech.recognition.audiosignalproblem.aspx

// Initialize the speech recognition engine.
private void Initialize()
{
  sre = new SpeechRecognitionEngine();

  // Add a handler for the AudioSignalProblemOccurred event.
  sre.AudioSignalProblemOccurred += new EventHandler<AudioSignalProblemOccurredEventArgs>(sre_AudioSignalProblemOccurred);
}

// Gather information when the AudioSignalProblemOccurred event is raised.
void sre_AudioSignalProblemOccurred(object sender, AudioSignalProblemOccurredEventArgs e)
{
  StringBuilder details = new StringBuilder();

  details.AppendLine("Audio signal problem information:");
  details.AppendFormat(
    " Audio level:               {0}" + Environment.NewLine +
    " Audio position:            {1}" + Environment.NewLine +
    " Audio signal problem:      {2}" + Environment.NewLine +
    " Recognition engine audio position: {3}" + Environment.NewLine,
    e.AudioLevel, e.AudioPosition, e.AudioSignalProblem,
    e.recoEngineAudioPosition);

  // Insert additional event handler code here.
}
于 2013-05-05T16:23:29.520 に答える