19

Команда say является, пожалуй, самой привлекательной особенностью терминала OS X - она принимает текст как ввод и произносит его через динамики компьютера. Есть ли какой-либо эквивалентный инструмент командной строки в Windows, встроенный или через стороннюю программу?

4 ответа4

5

PTTS - это очень простая программа командной строки Microsoft Windows для преобразования текста в речь. Если используется Microsoft Text to Speech Engine и Microsoft Speech SDK. Механизм преобразования текста в речь устанавливается вместе с Windows XP с одним голосом несколько низкого качества. Программа установки Jampal включает в себя два лучше звучащих голоса. (цитируется с сайта)

Его можно использовать, просто вводя текст в программу перенаправлением или по тексту:

ptts < file.txt
echo Hello there|ptts
2

Я создал простой пакетный скрипт для этого. Вот исходный код

@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 с вашим вводом, а затем говорит это системным голосом. В конце выполнения сценарий будет удален, чтобы освободить место для другого выполнения.

2

Этот вопрос был задан при переполнении стека. Мне нравится ответ с помощью сценария VBS.

Кроме того, espeak доступен для Windows и Linux и был портирован на OS X. Я не верю, что он использует встроенный движок Windows TTS.

1

У них есть эта библиотека в 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')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .