2013-06-03 4 views
1

В моей программе я могу использовать лексиконы, текст, слова и многое другое, используя голос пользователей. Но есть ли способ получить голос пользователя? Я использую API речи Windows с C#.Как получить речевые данные?

Ниже приводится часть кода, который я использую, чтобы получить голосовые данные

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Speech.Recognition; 
using System.Speech.Synthesis; 
using System.Windows.Forms; 
using System.IO; 

namespace Speech_Recognizer 
{ 
    public class RecognizeSpeech 
    { 
     private SpeechRecognitionEngine sEngine; //Speech recognition engine 
     private SpeechSynthesizer sSpeak; //Speech synthesizer 
     string text3 = ""; 

     public RecognizeSpeech() 
     { 
      //Make the recognizer ready 
      sEngine = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")); 


      //Load grammar 
      Choices sentences = new Choices(); 
      sentences.Add(new string[] { "I am hungry" }); 

      GrammarBuilder gBuilder = new GrammarBuilder(sentences); 

      Grammar g = new Grammar(gBuilder); 

      sEngine.LoadGrammar(g); 

      //Add a handler 
      sEngine.SpeechRecognized +=new EventHandler<SpeechRecognizedEventArgs>(sEngine_SpeechRecognized); 


      sSpeak = new SpeechSynthesizer(); 
      sSpeak.Rate = -2; 



      //Computer speaks the words to get the phones 
      Stream stream = new MemoryStream(); 
      sSpeak.SetOutputToWaveStream(stream); 


      sSpeak.Speak("I was hungry"); 
      stream.Position = 0; 
      sSpeak.SetOutputToNull(); 


      //Configure the recognizer to stream 
      sEngine.SetInputToWaveStream(stream); 

      sEngine.RecognizeAsync(RecognizeMode.Single); 


     } 


     //Start the speech recognition task 
     private void sEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      string text = ""; 

      if (e.Result.Text == "I am hungry") 
      { 
       foreach (RecognizedWordUnit wordUnit in e.Result.Words) 
       { 
        text = text + wordUnit.Pronunciation + "\n"; 
       } 

       MessageBox.Show(e.Result.Text + "\n" + text); 
      } 


     } 
    } 
} 

Как вы можете видеть, SpeechSynthesizer можно установить и получить скорость речи, звука и т.д., как получить шаг от речи пользователя ? любую информацию о нем, которую я могу взять?

ответ

2

Нет, механизм Microsoft SR не возвращает данные тангажа из голоса пользователя.

+0

После долгого времени у меня есть ответ. Большое спасибо :) –

Смежные вопросы