Для работы с голосовым синтезатором существуют программы по типу Speech2Go. В ней доступны все те же параметры, о которых пойдет речь дальше, но на момент написания статьи за Speech2Go просят 30$ и это просто смешно.
Если вы захотите использовать озвучивание текста в своих скриптах, то давайте разберемся как это сделать
Add-Type -AssemblyName System.speech $Voice = New-Object System.Speech.Synthesis.SpeechSynthesizer
Сначала посмотрим список доступных в системе «голосов»
$Voice.GetInstalledVoices().VoiceInfo.Name
Я установил синтезатор от сторонних разработчиков IVONA(на сайте можно послушать пример звучания), на мой взгляд звучащий самым правдоподобным образом.
Имеется мужской голос Maxim и женский Tatyana.
Выбираем голос, из представленных на ваш выбор в прошлой команде
$Voice.SelectVoice('IVONA 2 Tatyana OEM')
Можно задать параметры синтезатора речи
# Ускорить $Voice.Rate = 2 # Или определить уровень громкости (по умолчанию 100) $Voice.Volume = 70
Если есть необходимость сохранить сохранить зачитанный текст в файл, то сначала следует определить этот файл, а после запустить команду на воспроизведение
$Voice.SetOutputToWaveFile("C:\temp\test.wav")
Синтезируем голос
$Voice.Speak("Говори говорю! Кому говорят говори говорю!")
Можно передавать синтезатору текст по конвееру
"$env:USERNAME, я твой отец" | % { $Voice.Speak($_) }
Освобождаем ресурсы.
Вместе с этим мы прекращаем взаимодействие сеанса PoSh с файлом, задействованным синтезатором, и самим синтезатором.
$Voice.Dispose()