OS X comando `say` per Windows


22

Il saycomando è forse la funzionalità più interessante del terminale OS X: accetta il testo come input e lo pronuncia attraverso gli altoparlanti del computer. Esiste uno strumento da riga di comando equivalente su Windows, integrato o tramite un programma di terze parti?



2
Il che mi fa pensare, forse dovrei scrivere un'applicazione per la modifica del volume della riga di comando, nel caso in cui dovesse sorgere la situazione.
Pensa

Risposte:


5

PTTS è un programma da riga di comando di Microsoft Windows molto semplice per convertire il testo in parlato. Se utilizza il motore di sintesi vocale Microsoft e l'SDK di Microsoft Speech. Il motore di sintesi vocale è installato con Windows XP con una voce di qualità piuttosto scadente. Il programma di installazione di Jampal include due voci dal suono migliore. (citato dal sito Web)

Si può usare semplicemente inserendo il testo nel programma tramite reindirizzamento o eseguendo il piping nel testo:

ptts < file.txt
echo Hello there|ptts

@bubu, sembra che questo software sia in grado di parlare solo da un file, a meno che non fraintenda la documentazione. Sai se esiste un modo per accettare il testo direttamente dalla riga di comando senza la necessità di creare un file intermedio?
Pensa

2
Nvm, capito. Devi reindirizzarlo al programma. Es echo Hello|ptts.exe. Preferirei un modo per far sì che il testo sia un argomento del comando, ma questo sarà sufficiente se non c'è modo di farlo.
nhinkle

@ninkink sì, come si legge dallo stdin, uno dei modi è quello di
convogliarlo

3

Per questo ho creato un semplice script batch. Ecco il codice sorgente

@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

Salvare questo script in un file chiamato "speak.bat" e spostarlo in una directory a cui fa riferimento la variabile PATH.

Questo programma crea un semplice vbs con il tuo input, quindi lo parla con la voce di sistema. Alla fine dell'esecuzione, lo script verrà eliminato per dare spazio a un'altra esecuzione.


Puoi per favore modificare il tuo post per spiegare come funziona e come usarlo? Inoltre, quale scopo ha lo spostamento del file per questa soluzione?
Cfinley,

@Cfinley: Post modificato
Alessandro Mascolo


1

Hanno questa libreria nell'SDK, dove probabilmente potresti creare un'utilità più avanzata con un certo sforzo personale.

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

Anche se questo è probabilmente il modo più conveniente in quanto è nativamente integrato nel sistema ed è accessibile tramite PowerShell.

Chiamare la funzione dallo spazio dei nomi ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Crea un'istanza dell'oggetto

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

Chiama la funzione e inserisci le tue parole come argomento.

 $synth.Speak('hey man')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.