Aus der MSDN Hotline: Text-To-Speech auf Deutsch
-
Montag, 16. November 2009 13:49
Hallo zusammen,
heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:
Ich möchte eine Text-To-Speech Anwendung mit C# entwickeln. Aber als Stimme ist nur "Microsoft Anna" (en-US) installiert. Kann ich auch eine deutsche Stimme verwenden?
Unsere Antwort darauf war:
Ja, eine solche Stimme gibt es. Installieren Sie dazu zunächst den MS Reader [1], sofern noch nicht vorhanden. Als Teil dieses Pakets gibt es dann unter [2] das deutsche Sprachpaket. Nach der Installation sind die Stimmen "LH Anna" und "LH Stefan" verfügbar und können wie gewohnt über die Speech-API [3] verwendet werden.
Hier ist noch ein kleines Beispiel, zur einfachen Ausgabe eines Texts mit .NET 3.5 in C# (alternativ geht das auch mit einem Aufruf an COM oder gleich mit nativem Code):
SpeechSynthesizer syn = new SpeechSynthesizer();
syn.SelectVoice("LH Stefan");
syn.Speak("Hallo Welt!");
Um in den Genuss der deutschen Sprache zu kommen, muss die die Stimme auf eine der deutschen „InstalledVoices“ geändert werden, hier also in Zeile 2. Die installierten Stimmen können mit diesem Befehl im Debugger betrachtet werden:
System.Collections.ObjectModel.ReadOnlyCollection<InstalledVoice> coll = syn.GetInstalledVoices();
[1] http://www.microsoft.com/reader/de/downloads/pc.mspx
[2] http://www.microsoft.com/reader/de/downloads/tts.mspx
[3] http://msdn.microsoft.com/de-de/library/system.speech.synthesis.speechsynthesizer_members.aspx
Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.
Grüße,
Jonathan Best
MSDN Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.- Bearbeitet Kay GizaMicrosoft Employee Mittwoch, 18. November 2009 14:35 Hyperlink bearbeitet
- Verschoben Kay GizaMicrosoft Employee Samstag, 26. Juni 2010 08:06 (aus:Aus der MSDN Hotline: Häufig gestellte Fragen und deren Antworten)
Alle Antworten
-
Freitag, 26. November 2010 10:55
Hallo,
ich stehe heute vor dem gleichen Problem, nur die englische Standardstimme zur Auswahl zu haben, allerdings habe ich den MS Reader und das deutsche TTS Paket bereits installiert (und danach neugestartet).
TTS-Software wie "Balabolka" findet die Stimmen auf Anhieb, doch meine .NET 3.5 Anwendung kann weder "LH Stefan" noch "LH Anna" finden und/oder verwenden. Der Aufruf von GetInstalledVoices() liefert nur die englische Stimme "Microsoft Anna" als Ergebnis.
Ich habe den MS Reader und das deutsche TTS Paket auch schon deinstalliert um es erneut zu installieren. Doch eine Veränderung brachte dies nicht.
Als Betriebssystem verwende ich Windows7 x64.Vielen Dank.
-
Freitag, 26. November 2010 12:56Hallo P
für welchen Zielprozessor (x86/x64/AnyCPU) ist deine .NET 3.5 App compiliert?
Denn AFAIK:
- für 64-Bit Prozesse gibt es noch kaum Speech-Provider (ausser engl/Anna).
- all jene zusätzliche "TTS-Stimmen" müssen vermutlich auf Stand SAPI5 (bzw gar 5.3) sein, damit unter WinV+7 brauchbar.
http://stackoverflow.com/questions/3208617/ -
Freitag, 26. November 2010 14:57
Hallo auch,
das war wirklich ein ausgezeichneter Hinweis!
Ich habe es nun statt für AnyCPU für x86 kompilieren lassen und fortan werden die deutschen Stimmen erkannt.Vielen herzlichen Dank, für die schnelle und kompetente Hilfestellung!
-
Montag, 14. Mai 2012 20:32
moin moin.
Ich habe leider das Problem das selbst bei einer einstellung auf ein x86 prozessor, die stimme einfach Stumpf nicht erkannt wird und eine Exeption geworfen wird.
Code:
C++
Z599 SpeechSynthesizer^ syn = gcnew SpeechSynthesizer();
Z600 syn->SelectVoice("LH Anna");
Z601 syn->SpeakAsync("Hello to the Newsticker");Fehler:
System.ArgumentException: Cannot set voice. No matching voice is installed or the voice was disabled.
at System.Speech.Synthesis.SpeechSynthesizer.SelectVoice(String name)
at JgNewsticker.Anmelden.Anmelden_Load(Object sender, EventArgs e) in c:\users\user\documents\visual studio 2008\projects\jgnewsticker\jgnewsticker\anmelden.h:line 600
Edit:
Wenn es nicht geht, einfach diesyn->SelectVoice("LH Anna");
Weglassen. ich hab ich zwar immernoch nicht die Deutsche stimme aber sei redet mit mir.
Edit 2:
Ich habe es jetz geschafft mithilfe dieses Codes:
Code C++:
SpeechSynthesizer^ syn = gcnew SpeechSynthesizer();
System::Collections::ObjectModel::ReadOnlyCollection<InstalledVoice^ >^ coll = syn->GetInstalledVoices();
for(int x = 0; x < coll->Count; x++)
{
VoiceInfo^ info = coll[x]->VoiceInfo;
richTextBox1->Text += info->Name + "\n";
}//Ergebniss
//LH Anna Geht nicht
//LH Stefan Geht nicht
//Microsoft Anna Geht
//Microsoft Mary Geht nicht
//Microsoft Mike Geh nicht
//SampleTTSVoice geht
alle Stimmen auszugeben. Keine davon auser MS Anna und SampleTTSVoice gehen
- Bearbeitet GerVenson Montag, 14. Mai 2012 21:30
-
Dienstag, 15. Mai 2012 13:27Tut uns Leid, GerVenson. Wir konnten zu diesem Problem leider nichts finden.
-
Donnerstag, 22. November 2012 21:03
Hallo Jonny Best,
ich weiss, dass der Beitrag schon etwas älter ist. Aber ich habe eventuell etwas gefunden, was vielleicht in Indiez dafür sein kann, warum bei GerVenson und bei mir die Ausgabe mit deutschen Stimmen nicht funktioniert.
Ich habe mir auch "LH Anna" und "LH Stefan" über die genannten Links heruntergeladen. Will ich eine der beiden Stimmen verwenden bekomme ich die Fehlermeldung:
"Die Stimme kann nicht festgelegt werden. Es ist keine passende Stimme installiert, oder die Stimme wurde deaktiviert."
Die Stimmen wurden allerdings installiert und sind aktiviert.
Rufe ich die installierten Stimmen auf, werden auch drei Stück gefunden ("Microsoft Anna", "LH Anna", "LH Stefan"). Bei den deutschen Stimmen sind jedoch im Bereich VoiceInfo.SupportedAudioFormats keine hinterlegt (Count = 0). Bei "Microsoft Anna" ist das was vorhanden (Count = 1).
Vielleicht liegt es daran. Im Netz habe ich bislang noch nichts darüber gefunden.
Gruss
Matt
-
Dienstag, 18. Dezember 2012 10:38
Hallo,
ich vermute mal, dass die deutschen Stimmen nur in der 32-Bit Version funktionieren. Ich habe bei meiner VS 2012 Express Version in den Projekteigenschaften -> Kompilieren den Haken bei 32-Bit bevorzugen gesetzt und schon redet mein Programm mit mir deutsch.
Grüsse
Ronald

