Hi@all,
auch wenn ich das Gefühl habe, dass dieser Beitrag jetzt völlig OT ist, möchte ich das Thema "TTS" mit einem besonderen Projekt abschliessen, dass nicht nur für Anwender interessant ist (die können damit sogar am wenigsten anfangen), sondern wegen der Vielzahl an Möglichkeiten und der umfangreichen Dokumentation besonders für (Delphi -
-) Programmierer:
Die MBROLA-Sprachsynthese besteht aus drei Komponenten: Einem Programm (unter Windows eine DLL mit vielen Ansprechmöglichkeiten, bequem mit einigen Tools über ein Setup zu installieren), "Databases" mit den eigentlichen "Stimmen" und den - selbst erstellbaren - Sprach-Dateien. Die Sprachausgabe erfolgt über das Standard-Device (Wave-Mapper), oder kann im WAV- oder AU-Format gespeichert werden.
Die Besonderheiten:
a) MBROLA ist
kostenlos,
b) MBROLA kann z. Zt. mit
über 50 Stimmen betrieben werden, davon alleine 8 "deutsche",
c) MBROLA ist für z. Zt. 33 Sprachen verfügbar,
d) MBROLA ist unabhängig von den Microsoft SAPI's,
e) Die Sprachsynthese kann für eigene Zwecke angepasst werden,
f) Die Erstellung eigener "Stimm-Databases" ist recht einfach,
g) MBROLA unterstützt in gewissem Maße auch "emotionale" Laut-Synthestisierung durch besondere Aussprache-Regelungen (also Betonungen beim Vorlesen, z. B. in Abhängigkeit von Satzzeichen), und
h) MBROLA unterstützt eine Vielzahl von Betriebssystemen.
Der Nachteil, der das ganze System für den Standard-Anwender uninteressant machen dürfte: Es ist ohne zusätzliche Installationen von "Fremdherstellern" nicht möglich, einen Text zu tippen, und diesen MBROLA einfach vorlesen zu lassen; bei MBROLA handelt sich in der Grundkonfiguration also nicht im eigentlichen Sinne um ein "Text-to-Speech"-System. Vielmehr arbeitet MBROLA mit "Diphonen", denen "prosodische Informationen" beigefügt werden.
Absolut
grob erklärt bedeutet dieses:
Ein Diphon ist ein Laut, der aus mehreren Lautkombinationen bestehen kann. Beispiel: Das Wort "Stadt" hat - je nach Aussprache (Dialekt) - folgende Laute: sh-t-(kurzes a)-tt. Diphone stellen Laute als "Zeichen" oder Zeichenkombinationen, angelehnt an das Alphabet, dar. Also, im Beispiel, "shtAtt". Groß-Schreibung ist ein besonderes Merkmal für die Aussprache eines Lautes, in meinem Beispiel wurde das "kurze-a" als "A" dargestellt. Das "scharfe T" am Ende wird dargestellt als "tt", auch, weil man beim hinhören während der Aussprache ein nachhallendes "t" hört (klingt am natürlichsten).
Eine prosodische Information steht im direkten Zusammenhang mit dem Diphon; über diese zusätzliche Infomation kann man Schnelligkeit der Aussprache und Tonhöhe auch in Teilen eines Lautes bestimmen: "sh 300 40 100 30 50 10" ergäbe mit der beigefügten prosodischen Information einen 450ms-langen, zum Ende hin leiser werdenden Zischlaut, während "t 300 40 100 30 50 10" selbstverständlich kein "langes T" ergeben kann, sondern eine Pause von 300ms zur Folge hat, nach der man den folgenden Laut lauter wahrnimmt als das gesprochene "t".
Vokal-Laute können besonders gesteuert werden, da man die Stimmhöhe (pitch) berücksichtigen kann: "e 300 100 50 100 90 40 50 80 30" ergäbe so z. B. einen 450ms-langen "e"-Laut, der in einer tiefen Tonlage beginnt, zum Ende hin immer leiser wird, und schliesslich mit einer höheren Tonlage endet.
Hierbei ist besonders interessant: Man kann eine Stimme mit dieser Notation husten lassen (k 60 für K; O 60 30 30 für ein 60ms langes, lautloses kurzes und "hohes" o; ch 30 für einen kurzen ch-Laut). "kOch, kOch" wäre in der Nur-Textfassung ein zweimaliges, kurzes Husten.
Um daraus ein "echtes" TTS zu machen - und so arbeiten Speech-Engines (hier noch
ein Link zu einer umfangreichen Übersicht) - ist also zu den drei vorstehend genannten Komponenten noch eine weitere erforderlich: Die "Laut-Notierung", z. B. eine "Maschine", die normalen Text in Laute "übersetzt". Ein laienhaftes Schema hierzu soll den Weg vom Text zur synthetisierten Ausgabe darstellen:
Texteingabe -> durchläuft zur Prüfung des Textes die Lautnotierung und "wandelt" den Text in "notierte Laute mit vorher festgelegten prosodischen Informationen" um -> Die "notierten Laute" werden an die Sprachausgabe (hier MBROLA.DLL) weitergeleitet, die mit einer voreingestellten Stimme die Lautnotierung wiedergibt (bzw. an eine Ton-Wiedergabe-Bibliothek übergibt).
Auch diese "virtuelle Zeichenfolge-zu-Diphon-Übersetzungsmaschine" ist auf der Basis von MBROLA bereits verfügbar, hierzu kann man sich diesen
Link und diese
Aufstellung einmal zu Gemüte führen.
Alles in allem: Sind alle Komponenten installiert (auch wenn das das eigentlich aufwendige und komplizierte ist), erhält man kostenlos ein Text-to-Speech-System mit verschiedenen, qualitativ guten, anpassbaren und mit "Emotionalität zum Leben" zu erweckenden Stimmen, die besser klingen und wesentlich mehr "Einstellungsmöglichkeiten" haben als diejenigen, die auf Microsoft's "SAPI's" aufbauen. Auch ist das System, einmal aufgebaut, auch auf langsamen Computern wesentlich schneller, deutlicher und an eigene Bedürfnisse anpassbarer als alles, was ich bisher kennen gelernt habe.
Grüße vom Kai (an der TTS-Front)...