Команда say
, возможно, является наиболее убедительной функцией терминала OS X — она принимает текст в качестве ввода и произносит его через динамики компьютера. Есть ли эквивалентный инструмент командной строки в Windows, встроенный или через стороннюю программу?
решение1
ПТТСочень простая программа командной строки Microsoft Windows для преобразования текста в речь. Она использует Microsoft Text to Speech Engine и Microsoft Speech SDK. Text to Speech Engine устанавливается вместе с Windows XP с одним голосом довольно низкого качества. Программа установки Jampal включает два голоса с лучшим звучанием. (цитата с веб-сайта)
Его можно использовать, просто введя текст в программу путем перенаправления или путем передачи текста по конвейеру:
ptts < file.txt
echo Hello there|ptts
решение2
Мне надоело пытаться заставить работать устаревшие инструменты, поэтому я создал wsay
.
Работает он примерно так say
: можно выбирать разные голоса и легко выводить их в файл WAV.
https://github.com/p-groarke/wsay/releases
Ваше здоровье
решение3
Я создал простой пакетный скрипт для этого. Вот исходный код
@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 с вашим вводом, затем озвучивает его системным голосом. В конце выполнения скрипт будет удален, чтобы освободить место для другого выполнения.
решение4
У них есть эта библиотека в 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)
# Call the function from the namespace
Add-Type -AssemblyName System.Speech
# Instantiate the Object
$synth = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer
# Call the function and input your words as it's argument.
$synth.Speak('hey man')