Powershell. Использование голосового синтезатора

Для работы с голосовым синтезатором существуют программы по типу 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()
В противном случае взаимодействие с этим файлом в эксплорере будет недоступно

Добавить комментарий

Ваш адрес email не будет опубликован.