2011-06-20 2 views
0

Je sauve un fichier audio ci-dessous test.wav deproblème avec Speech Sdk 5.1?

 SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync; 
     SpVoice Voice = new SpVoice(); 

     SaveFileDialog sfd = new SaveFileDialog(); 

     sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav"; 
     sfd.Title = "Save to a wave file"; 
     sfd.FilterIndex = 2; 
     sfd.RestoreDirectory = true; 

     SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite; 

     SpFileStream SpFileStream = new SpFileStream(); 
     SpFileStream.Open(sfd.FileName, SpFileMode, false); 

     Voice.AudioOutputStream = SpFileStream; 
     Voice.Speak(txtSpeakText.Text, SpFlags); 
     Voice.WaitUntilDone(Timeout.Infinite); 
     SpFileStream.Close();    

Lorsque je tente de reteive le fichier et convertir en texte ses différentes

 SpeechRecognitionEngine RecognitionEngine = new SpeechRecognitionEngine(new CultureInfo("en-US", true)); 
     RecognitionEngine.LoadGrammar(new DictationGrammar()); 
     RecognitionEngine.SetInputToWaveFile("test.wav"); 
     RecognitionResult result = RecognitionEngine.Recognize(); 
     Grammar g = result.Grammar; 
     txt_vtc.Text = result.Text; 

Pourquoi ça devient comme ça?

Répondre

0

Cette réponse ne est pas pourquoi votre problème est, mais je voudrais vous recommander d'utiliser le SpeechSynthesizer Class comme le code suivant.

 using (var speechSynthesizer = new SpeechSynthesizer()) 
     { 
      speechSynthesizer.SelectVoice("Please enter your TTS engine name..."); 
      speechSynthesizer.SetOutputToWaveFile("test.wav"); 
      speechSynthesizer.Speak("test"); 
     } 

Pour utiliser SpeechSynthesizer Class, vous auriez deux avantages.

  1. pas besoin de redistribuer les Speech Sdk 5.1 aux clients en raison du fait déjà inclus à la .net framework(4, 3.5, 3.0).
  2. plus simple pour atteindre le but que vous avez mentionné.
Questions connexes