Текстомовний перетворювач у .Net Framework

/ 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
...
Share this Post