Komenda `say` OS X dla Windows


23

sayPolecenia jest chyba OS X terminala najbardziej przekonujące cecha - to trwa tekst jako wejście i mówi jej przez głośniki komputera. Czy w systemie Windows jest dostępne równoważne narzędzie wiersza polecenia, wbudowane lub za pośrednictwem programu innej firmy?



2
Co sprawia, że ​​myślę, może powinienem napisać aplikację zmieniającą głośność wiersza poleceń, na wypadek, gdyby sytuacja kiedykolwiek się pojawiła.
nhinkle

Odpowiedzi:


5

PTTS to bardzo prosty program wiersza polecenia systemu Microsoft Windows do konwersji tekstu na mowę. W przypadku korzystania z aparatu Microsoft Text to Speech Engine i zestawu Microsoft Speech SDK. Mechanizm zamiany tekstu na mowę jest instalowany w systemie Windows XP z jednym głosem nieco złej jakości. Program instalacyjny Jampal obejmuje dwa lepiej brzmiące głosy. (cytowany ze strony internetowej)

Można z niego skorzystać, po prostu wprowadzając tekst do programu przez przekierowanie lub przesyłanie tekstu:

ptts < file.txt
echo Hello there|ptts

@ bubu, wygląda na to, że to oprogramowanie jest w stanie mówić tylko z pliku, chyba że źle rozumiem dokumentację. Czy wiesz, czy jest jakiś sposób, aby akceptował tekst bezpośrednio z wiersza poleceń bez potrzeby tworzenia pliku pośredniego?
nhinkle

2
Nvm, rozgryzłem to. Musisz potokować go do programu. Np echo Hello|ptts.exe. Wolałbym, aby tekst był argumentem polecenia, ale to wystarczy, jeśli nie ma na to sposobu.
nhinkle

@nhinkle tak, jak to czyta ze standardowego wejścia, jednym ze sposobów jest przepuszczenie przez nią rurki
bubu

3

Stworzyłem do tego prosty skrypt wsadowy. Oto kod źródłowy

@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

Zapisz ten skrypt w pliku o nazwie „speak.bat” i przenieś go do katalogu, do którego odwołuje się twoja zmienna PATH.

Ten program tworzy proste vbs z twoim wejściem, a następnie mówi głosem systemowym. Pod koniec wykonania skrypt zostanie usunięty, aby zwolnić miejsce na kolejne wykonanie.


Czy możesz edytować swój post, aby wyjaśnić, jak to działa i jak go używać? Jaki cel ma przeniesienie pliku dla tego rozwiązania?
Cfinley,

@Cfinley: Edytowano post
Alessandro Mascolo,


1

Mają tę bibliotekę w zestawie SDK, gdzie prawdopodobnie można by zrobić bardziej zaawansowane narzędzie z osobistym wysiłkiem.

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

Chociaż jest to prawdopodobnie najwygodniejszy sposób, ponieważ jest wbudowany w system i jest dostępny za pomocą programu PowerShell.

Wywołaj funkcję z przestrzeni nazw ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Utwórz instancję obiektu

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

Wywołaj funkcję i wprowadź słowa jako argument.

 $synth.Speak('hey man')

0

Zmęczyło mnie staranie się, aby przestarzałe narzędzia działały, więc stworzyłem wsay.

Działa to tak say, że możesz wybierać różne głosy i możesz łatwo wyprowadzać dane do pliku wave.

https://github.com/p-groarke/wsay/releases

Twoje zdrowie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.