使用语音识别来计算音节

问题描述 投票:2回答:1

我试图找出我是否可以使用System.Speech.SpeechRecognitionEngine在5秒的时间间隔内计算音节或单词。

我一直在用SpeechRecognitionEngine做一些测试,使用DictationGrammarSpeechRecognized事件。

我需要创建一个应用程序,让你知道如果你说的太慢,这就是为什么我想要计算每5秒说出多少单词。

任何帮助,将不胜感激

谢谢

speech-recognition
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.
}
© www.soinside.com 2019 - 2024. All rights reserved.