Comando OS X `say` para Windows

22

O saycomando talvez seja o recurso mais atraente do terminal OS X - ele pega o texto como entrada e o fala pelos alto-falantes do computador. Existe alguma ferramenta de linha de comando equivalente no Windows, interna ou por meio de um programa de terceiros?

nhinkle
fonte
2
O que me faz pensar que talvez eu deva escrever um aplicativo de alteração de volume da linha de comando, caso a situação deva surgir.
nhinkle

Respostas:

5

PTTS é um programa de linha de comando do Microsoft Windows muito simples para converter texto em fala. Se usar o Microsoft Text to Speech Engine e o Microsoft Speech SDK. O mecanismo de conversão de texto em fala é instalado no Windows XP com uma voz de baixa qualidade. O programa de instalação do Jampal inclui duas vozes com melhor som. (citado no site)

Pode-se usá-lo simplesmente inserindo o texto no programa por redirecionamento ou canalizando o texto:

ptts < file.txt
echo Hello there|ptts
bubu
fonte
@ubu, parece que este software só é capaz de falar de um arquivo, a menos que eu esteja entendendo mal a documentação. Você sabe se existe alguma maneira de aceitar texto diretamente da linha de comando sem precisar criar um arquivo intermediário?
nhinkle
2
Nvm, descobri. Você precisa canalizá-lo para o programa. Por exemplo echo Hello|ptts.exe. Eu preferiria uma maneira de o texto ser um argumento do comando, mas isso será suficiente se não houver maneira de fazer isso.
nhinkle
@nhinkle sim como se lê da entrada padrão apenas uma das formas é a tubulação através dele
bubu
3

Eu criei um script em lote simples para fazer isso. Aqui está o código fonte

@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

Salve esse script em um arquivo chamado "speak.bat" e mova-o para um diretório referenciado pela sua variável PATH.

Este programa cria um vbs simples com a sua entrada e depois fala com a voz do sistema. No final da execução, o script será excluído para dar espaço para outra execução.

Alessandro Mascolo
fonte
Você pode editar sua postagem para explicar como isso funciona e como usá-la? Além disso, qual o objetivo da movimentação do arquivo para esta solução?
Cfinley
@Cfinley: Postagem editada
Alessandro Mascolo
2

Esta pergunta foi feita no Stack Overflow. Eu gosto da resposta com o script VBS .

Além disso, espeakestá disponível para Windows e Linux e foi portado para o OS X. Não acredito que ele use o mecanismo Windows TTS embutido.

Pausado até novo aviso.
fonte
1

Eles possuem essa biblioteca no SDK, onde você provavelmente poderia criar um utilitário mais avançado com algum esforço pessoal.

https://www.microsoft.com/en-us/download/details.aspx?id=27224

Embora essa seja provavelmente a maneira mais conveniente, pois é nativa do sistema e pode ser acessada via PowerShell.

Chame a função no namespace ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Instanciar o objeto

 $synth = New-Object -TypeName
 System.Speech.Synthesis.SpeechSynthesizer

Chame a função e insira suas palavras como argumento.

 $synth.Speak('hey man')
ÉGIDE
fonte