
Синтезатор речи в .Net Framework на c#
В .Net Framework определено пространство имен System.Speech.Synthesis, которое содержит класс для взаимодействия с программным обеспечением сентезатора речи (TTS — text-to-speech). Обычно TTS установлен на машине под ОС Windows и пригоден для использования в приложениях.
Как использовать 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?
- Открыть 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 ...