3

Я просто пытаюсь запустить простой пример Microsoft для текста в речь, используя Microsoft.Speech.dll;Microsoft.Speech.Synthesis не работает для текста в речь. BUT System.Speech.Synthesis works.Why?

using System; 
using Microsoft.Speech.Synthesis; 

namespace TTS 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Testing TTS!"); 

      // Initialize a new instance of the SpeechSynthesizer. 
      using (SpeechSynthesizer synth = new SpeechSynthesizer()) 
      { 

       // Output information about all of the installed voices. 
       Console.WriteLine("Installed voices -"); 
       foreach (InstalledVoice voice in synth.GetInstalledVoices()) 
       { 
        VoiceInfo info = voice.VoiceInfo; 
        Console.WriteLine(" Voice Name: " + info.Name); 
       } 

       // Select the US English voice. 
       synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (en-GB, Hazel)"); 

       // Build a prompt. 
       PromptBuilder builder = new PromptBuilder(); 
       builder.AppendText("That is a big pizza!"); 

       // Speak the prompt. 
       synth.Speak(builder); 
      } 

      Console.Write("Press any key to continue . . . "); 
      Console.ReadKey(true); 
     } 
    } 
} 

Хотя у меня есть право голоса, это не делает звук. Нет текста для речи (TTS).

enter image description here

Когда я использую Microsoft System.Speech.dll тогда я могу услышать голос. Таким образом, нет проблем со звуком.

using System; 
using System.Speech.Synthesis; 

namespace TTS 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Testing TTS!"); 

      // Initialize a new instance of the SpeechSynthesizer. 
      using (SpeechSynthesizer synth = new SpeechSynthesizer()) 
      { 

       // Output information about all of the installed voices. 
       Console.WriteLine("Installed voices -"); 
       foreach (InstalledVoice voice in synth.GetInstalledVoices()) 
       { 
        VoiceInfo info = voice.VoiceInfo; 
        Console.WriteLine(" Voice Name: " + info.Name); 
       } 

       // Build a prompt. 
       PromptBuilder builder = new PromptBuilder(); 
       builder.AppendText("That is a big pizza!"); 

       // Speak the prompt. 
       synth.Speak(builder); 
      } 

      Console.Write("Press any key to continue . . . "); 
      Console.ReadKey(true); 
     } 
    } 
} 

enter image description here

Вскоре

Почему я не могу слышать голос или сделать Text To Speech (TTS) с Microsoft Speech Platform с помощью Microsoft.Speech? Должен ли я сделать дополнительную конфигурацию ?

ответ

4

Потому что вы используете два разных двигателя TTS. Microsoft.Speech использует голоса сервера TTS; System.Speech использует настольные голоса TTS. См. Обсуждение here.

Windows Vista и выше имеют зарегистрированные TTS голоса, зарегистрированные по умолчанию, но не имеют голоса TTS сервера. Когда вы устанавливаете Server Speech Platform Runtime, который, как мне кажется, вам нужно сделать, чтобы загрузить файл Microsoft.Speech.dll, вы должны иметь возможность устанавливать и некоторые голоса TTS-сервера.

+0

Я установил серверные голоса tts ... И моя программа тестирования Microsoft.Speech перечислила их. Я вижу неповрежденные голоса и проверяю их в реестре Windows. –

+1

Вы вызвали [SetOutputToDefaultAudioDevice] (http://msdn.microsoft.com/en-us/library/lync/microsoft.speech.synthesis.speechsynthesizer.setoutputtodefaultaudiodevice (v = office.13) .aspx)? Это не происходит по умолчанию с помощью механизма Microsoft.Speech, в то время как он работает с механизмом System.Speech. –

0

на зрительный Выбор проект студии, а затем выберите команду Добавить ссылку, затем установите флажок рядом с System.Speech

В вашей программе использования system.speech, а также.

Работы хорошо для меня.