мс речь из командной строки - PullRequest
26 голосов
/ 25 июня 2009

Есть ли способ использовать утилиту MS Speech из командной строки? Я могу сделать это на Mac, но не могу найти ссылку на него в Windows XP.

Спасибо.

Ответы [ 8 ]

31 голосов
/ 22 сентября 2016

Мои 2 цента по теме, одна строка в командной строке:

23 голосов
/ 25 июня 2009

Есть хорошая программа с открытым исходным кодом, которая делает то, что вы просите в Windows, под названием Peter's Text to Speech, доступная здесь: http://jampal.sourceforge.net/ptts.html

Он содержит двоичный файл ptts.exe, который будет произносить текст со стандартного ввода, поэтому вы можете запустить его следующим образом:

echo hello there | ptts.exe

В качестве альтернативы вы можете использовать следующий трехстрочный VBS-скрипт для получения аналогичного базового TTS:

'say.vbs
set s = CreateObject("SAPI.SpVoice")
s.Speak Wscript.Arguments(0), 3
s.WaitUntilDone(1000)

И вы можете вызвать это из командной строки следующим образом:

cscript say.vbs "hello there"

Если вы пойдете по сценарию, вы, вероятно, захотите найти более подробные примеры кода с переменным временем ожидания и обработкой ошибок.

Надеюсь, это поможет.

4 голосов
/ 25 июня 2009

Не думаю, что есть инструмент для командной строки, но кто-то написал:

http://krolik.net/post/Say-exe-a-simple-command-line-text-to-speech-program-for-Windows.aspx

3 голосов
/ 09 апреля 2016

Есть способ PowerShell также:

Создайте файл с именем speak.ps1

param([string]$inputText)
Add-Type –AssemblyName System.Speech 
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
$synth.Speak($inputText);

Тогда вы можете назвать это

.\speak.ps1 "I'm sorry Dave, I'm afraid I can't do that"
3 голосов
/ 03 февраля 2014
rem The user decides what to convert here
 :input
 cls
 echo Type in what you want the computer to say and then press the enter key.
 echo.
 set /p text=

 rem Making the temp file
 :num
 set num=%random%
 if exist temp%num%.vbs goto num
 echo ' > "temp%num%.vbs"
 echo set speech = Wscript.CreateObject("SAPI.spVoice") >> "temp%num%.vbs"
 echo speech.speak "%text%" >> "temp%num%.vbs"
 start temp%num%.vbs
 pause
 del temp%num%.vbs
 goto input



pause
3 голосов
/ 25 июня 2009

Если вы не можете найти команду, вы всегда можете обернуть System.Speech.Synthesis.SpeechSynthesizer из .Net 3.0 (не забудьте сослаться на "System.Speech")

using System.Speech.Synthesis;

namespace Talk
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var ss = new SpeechSynthesizer())
                foreach (var toSay in args)
                    ss.Speak(toSay);
        }
    }
}
2 голосов
/ 08 августа 2017

Там также Балаболка : http://www.cross -plus-a.com / bconsole.htm У него есть инструмент командной строки balcon.exe. Вы можете использовать это так:

  1. Список голосов:

    balcon.exe -l
    
  2. Поговорить файл:

    balcon.exe -n "IVONA 2 Jennifer" -f file.txt
    
  3. Говорить из командной строки:

    balcon.exe -n "IVONA 2 Jennifer" -t "hello there"
    

Доступны дополнительные параметры командной строки. Я попробовал это на Ubuntu с установленной SAP Wine в Wine. Работает просто отлично.

2 голосов
/ 25 июня 2009

Ваш лучший подход - написать небольшую утилиту командной строки, которая сделает это за вас. Это не будет большой работой - просто прочитайте текст, а затем используйте библиотеку ms tts.

Другой альтернативой является использование Cepstral . Он поставляется с хорошей утилитой командной строки и звучит световыми годами лучше, чем MS TTS.

...