Pergunta

Existe uma maneira de usar o utilitário MS Discurso de linha de comando? Eu posso fazer isso em um Mac, mas não consegue encontrar qualquer referência a ele no Windows XP.

Graças.

Foi útil?

Solução

Eu não acho que há uma ferramenta de linha de comando para ele, mas alguém escreveu um:

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

Outras dicas

Meus 2 centavos sobre o tema, linha de comando one-liners:

  • no Win usando PowerShell.exe

    PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('hello');"
    
  • no Win usando mshta.exe

    mshta vbscript:Execute("CreateObject(""SAPI.SpVoice"").Speak(""Hello"")(window.close)")
    
  • no OSX usando say

    say "hello"
    
  • Ubuntu Desktop (> = 2015) usando spd-say nativa

    spd-say "hello"
    
  • em qualquer outro Linux

  • em Raspberry Pi, Win, OSX usando Node-Red

    npm i node-red-contrib-sysmessage

Há um programa de código aberto agradável que faz o que você está pedindo no Windows chamado Texto de Pedro to Speech disponível aqui: http://jampal.sourceforge.net/ptts.html

Ele contém um binário chamado ptts.exe que vai falar texto da entrada padrão, para que você possa executá-lo como este:

echo hello there | ptts.exe

Como alternativa, você poderia usar o seguinte script VBS três linhas para obter TTS básicos semelhantes:

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

E você poderia invocar que a partir da linha de comando como este:

cscript say.vbs "hello there"

Se você vai a rota script, você provavelmente vai querer encontrar alguns exemplos de código mais extensa, com um tratamento de tempo limite variável e erro.

Hope isso ajuda.

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

Se você não consegue encontrar um comando que você sempre pode embrulhar o System.Speech.Synthesis.SpeechSynthesizer de .Net 3.0 (não se esqueça de referência "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);
        }
    }
}

Há uma maneira PowerShell também:

Crie um arquivo chamado speak.ps1

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

Em seguida, você pode chamá-lo

.\speak.ps1 "I'm sorry Dave, I'm afraid I can't do that"

Seu melhor abordagem é escrever um pequeno utilitário de linha de comando que vai fazer isso por você. Não seria um monte de trabalho -. Apenas ler o texto e, em seguida, usar as ms tts biblioteca

Outra alternativa é usar Cepstral . Ele vem com um utilitário agradável linha de comando e soa anos-luz melhor do que os tts ms.

Há também Balabolca : http: // www. cross-plus-a.com/bconsole.htm Ele tem uma ferramenta de linha de comando balcon.exe. Você pode usá-lo como este:

  1. vozes Lista:

    balcon.exe -l
    
  2. arquivo fala:

    balcon.exe -n "IVONA 2 Jennifer" -f file.txt
    
  3. Speak partir da linha de comando:

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

Mais opções de linha de comando estão disponíveis. Eu tentei no Ubuntu com SAPI5 instalado no Wine. Ele funciona muito bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top