Batch Datei text to speak?

1 Antwort

Für SAPI.SpVoice sind lediglich die unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens installierten Stimmen verfügbar. Für ein deutschsprachiges System ist das lediglich "Hedda" . Wenn auch das En-US-Sprachpacket installiert sein sollte, sind auch die Stimmen "David" und "Zira" verfügbar.

Zum Wählen der Stimme ändere den Code:

@echo off
 rem Umlaute erlauben
chcp 65001>nul
 rem pfad für das Hilfsscript
set "sayJS=%temp%\say.js"
set "Speed=-1"
set "Volume=100" 
set "Voice=0"  &rem Ausprobieren  welche Nummer  welcher Stimme/Sprache  entspricht
echo s=new ActiveXObject('SAPI.SpVoice');s.Voice = s.GetVoices().Item(%Voice%);s.Rate=%Speed%;s.Volume=%Volume%;a='';for (i=0;i^<WScript.Arguments.length;i++){a+=WScript.Arguments(i)+' '};s.Speak(a,0)>"%sayJS%"
set talk=cscript //nologo "%sayJS%"
%talk% Hallo Welt!

...ist der Wert für Voice nicht verfügbar. wird ein Fehlermeldung in der Console ausgegeben: ...say.js(1, 37) (null): 0x80045039

Das folgende ist nicht Systemkonform und könnte in anderen Programmen mit Sprachausgabe zu unvorhersehbaren Nebenwirkungen oder Abstürzen führen

Um die Stimmen aus HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens auch für SpVoice verfügbar machen, kann man die gewünschten Sprachschlüssel (mit Unterschlüsseln) nach HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens kopieren. (Deutsche Stimmen: Katja und Stefan.) Adminrechte benötigt!

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren