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?



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, 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

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.


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')
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.