OS X-Befehl `say` für Windows

21

Der sayBefehl ist vielleicht die überzeugendste Funktion des OS X-Terminals - er verwendet Text als Eingabe und spricht ihn über die Lautsprecher des Computers. Gibt es ein gleichwertiges Befehlszeilentool unter Windows, entweder integriert oder über ein Programm eines Drittanbieters?

nhinkle
quelle
2
Das bringt mich zum Nachdenken, vielleicht sollte ich eine Kommandozeilenanwendung zum Ändern des Volumens schreiben, falls die Situation jemals eintreten sollte.
nhinkle

Antworten:

5

PTTS ist ein sehr einfaches Microsoft Windows-Befehlszeilenprogramm zum Konvertieren von Text in Sprache. Verwendet die Microsoft Text to Speech Engine und das Microsoft Speech SDK. Die Text-to-Speech-Engine wird unter Windows XP mit einer Stimme von etwas schlechter Qualität installiert. Das Jampal-Installationsprogramm enthält zwei besser klingende Stimmen. (zitiert von der Website)

Man kann es verwenden, indem man einfach den Text in das Programm eingibt, indem man ihn umleitet oder indem man den Text einfügt:

ptts < file.txt
echo Hello there|ptts
bubu
quelle
@bubu, es sieht so aus, als ob diese Software nur aus einer Datei sprechen kann, es sei denn, ich verstehe die Dokumentation falsch. Wissen Sie, ob es eine Möglichkeit gibt, Text direkt von der Befehlszeile aus zu akzeptieren, ohne eine Zwischendatei erstellen zu müssen?
nhinkle
1
Nvm, habe es herausgefunden. Sie müssen es an das Programm weiterleiten. Eg echo Hello|ptts.exe. Ich würde es vorziehen, wenn der Text ein Argument des Befehls ist, aber dies reicht aus, wenn es keine Möglichkeit gibt, dies zu tun.
nhinkle
@nhinkle ja, wie es aus stdin liest, ist einer der Wege, durch es zu
leiten
2

Diese Frage wurde bei Stack Overflow gestellt. Ich mag die Antwort mit dem VBS-Skript .

Es espeakist auch für Windows und Linux verfügbar und wurde auf OS X portiert. Ich glaube nicht, dass es die integrierte Windows TTS-Engine verwendet.

Bis auf weiteres angehalten.
quelle
2

Ich habe dafür ein einfaches Batch-Skript erstellt. Hier ist der Quellcode

@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

Speichern Sie dieses Skript in einer Datei mit dem Namen "speak.bat" und verschieben Sie es in ein Verzeichnis, auf das Ihre PATH-Variable verweist.

Dieses Programm erstellt ein einfaches VBS mit Ihrer Eingabe und spricht es dann mit Systemstimme. Am Ende der Ausführung wird das Skript gelöscht, um Platz für eine weitere Ausführung zu schaffen.

Alessandro Mascolo
quelle
Können Sie bitte Ihren Beitrag bearbeiten, um zu erklären, wie dies funktioniert und wie es verwendet wird? Welchen Zweck hat das Verschieben der Datei für diese Lösung?
Cfinley
@Cfinley: Beitrag bearbeitet
Alessandro Mascolo
1

Sie haben diese Bibliothek im SDK, wo Sie mit einigem persönlichen Aufwand wahrscheinlich ein erweitertes Dienstprogramm erstellen können.

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

Obwohl dies wahrscheinlich der bequemste Weg ist, da es von Haus aus in das System integriert ist und über Powershell zugänglich ist.

Rufen Sie die Funktion über den Namespace auf ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx ).

Add-Type -AssemblyName System.Speech

Instanziiere das Objekt

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

Rufen Sie die Funktion auf und geben Sie Ihre Wörter als Argument ein.

 $synth.Speak('hey man')
ÄGIDE
quelle