Синтезатор речи в .Net Framework на c#

/ 15 октября, 2020/ Programming

В .Net Framework определено пространство имен System.Speech.Synthesis, которое содержит класс для взаимодействия с программным обеспечением сентезатора речи (TTS — text-to-speech). Обычно TTS установлен на машине под ОС Windows и пригоден для использования в приложениях.
tts

Как использовать TTS в .Net?

TTS синтезатор находится в System.Speech.Synthesis, но не принадлежит списку стандартным пространств имен. Поэтому следует добавить ссылку на соответственную библиотеку:

  • В Visual Studio Solution explorer ПКМ на References
  • Нажать на Add reference…
  • Assemblies — Framework — System.Speech — Ok
  • Добавить using System.Speech.Synthesis;

Как установить локализированные голоса для TTS на Windows 10?

tts support

  • Открыть Speech settings (з меню Пуск)
  • Во вкладке Speech приведены все установленные голоса
  • Во вкладке Language можно выбрать язык, который поддерживает Speech, и установить его

Как показать установленные голоса?

Класс SpeechSynthesizer содержит метод GetInstalledVoices, который возвращает коллекцию экземпляров класса InstalledVoice. Класс InstalledVoice содержит член класса VoiceInfo, который представляет информацию про голос:

  • Name
  • Age
  • Gender
  • Culture
  • и др.
...
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
   //получить коллекцию установленных голосов
   ReadOnlyCollection voices = synthesizer.GetInstalledVoices();

   foreach(var voice in voices)
   {
        string name = voice.VoiceInfo.Name; //получить название голоса

        Console.WriteLine(name); //вывести в консоль название голоса
   }

synthesizer.Dispose();
...

Как выбрать голос для TTS?

Для использования определенного голоса для синтеза необходимо активировать его и выбрать (по имени) в экземпляре класса SpeechSynthesizer.

...
public static void TestVoice(InstalledVoice voice)
        {
            voice.Enabled = true;
            
            using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
            {
                synthesizer.SelectVoice(voice.VoiceInfo.Name);
                ...
            }
        }
...

Как прослушать текст используя TTS?

...
   SpeechSynthesizer synthesizer = new SpeechSynthesizer();
   
   ReadOnlyCollection voices = synthesizer.GetInstalledVoices();

   InstalledVoice voice = voices[0];

   voice.Enabled = true;
            
   synthesizer.SelectVoice(voice.VoiceInfo.Name);
   synthesizer.SetOutputToDefaultAudioDevice();
   synthesizer.Speak($"Hello, my name is {voice.VoiceInfo.Name}.");
...

Как синтезировать из текста речь и сохранить в аудиофайле?

...
  synthesizer.SetOutputToWaveFile("speech.wav"); //путь сохранения файла .wav
  synthesizer.Speak("Hello, i am talking from an audio file!");
...

Как установить громкость голоса?

...
   synthesizer.Volume = 50; //Volume is a value from 0 to 100
...

Как установить быстроту речи?

...
   synthesizer.Rate = 5; //from -10 to 10
...
Поделиться этой записью