Команда say
является, пожалуй, самой привлекательной особенностью терминала OS X - она принимает текст как ввод и произносит его через динамики компьютера. Есть ли какой-либо эквивалентный инструмент командной строки в Windows, встроенный или через стороннюю программу?
4 ответа
PTTS - это очень простая программа командной строки Microsoft Windows для преобразования текста в речь. Если используется Microsoft Text to Speech Engine и Microsoft Speech SDK. Механизм преобразования текста в речь устанавливается вместе с Windows XP с одним голосом несколько низкого качества. Программа установки Jampal включает в себя два лучше звучащих голоса. (цитируется с сайта)
Его можно использовать, просто вводя текст в программу перенаправлением или по тексту:
ptts < file.txt
echo Hello there|ptts
Я создал простой пакетный скрипт для этого. Вот исходный код
@echo off
echo Dim Speak >> %HOMEPATH%\speak.vbs
echo Set Speak=CreateObject("sapi.spvoice") >> %HOMEPATH%\speak.vbs
echo Speak.Speak "%*">> %HOMEPATH%\speak.vbs
%HOMEPATH%\speak.vbs
del %HOMEPATH%\speak.vbs
Сохраните этот сценарий в файле с именем «speak.bat» и переместите его в каталог, на который ссылается ваша переменная PATH.
Эта программа создает простой VBS с вашим вводом, а затем говорит это системным голосом. В конце выполнения сценарий будет удален, чтобы освободить место для другого выполнения.
Этот вопрос был задан при переполнении стека. Мне нравится ответ с помощью сценария VBS.
Кроме того, espeak
доступен для Windows и Linux и был портирован на OS X. Я не верю, что он использует встроенный движок Windows TTS.
У них есть эта библиотека в SDK, где вы, возможно, сможете сделать более продвинутую утилиту с некоторыми личными усилиями.
https://www.microsoft.com/en-us/download/details.aspx?id=27224
Хотя это, вероятно, наиболее удобный способ, поскольку он встроен в систему и доступен через powershell.
Вызовите функцию из пространства имен (https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx)
Add-Type -AssemblyName System.Speech
Создание объекта
$synth = New-Object -TypeName
System.Speech.Synthesis.SpeechSynthesizer
Вызовите функцию и введите свои слова в качестве аргумента.
$synth.Speak('hey man')