RealSinger
Technischer Hintergrund
|
|
Anmerkung:
Diese Seite ist nur ein kurzer Überblick über die Methoden,
die RealSinger für die Stimmerzeugung verwendet.
Sie müssen dieses Kapitel nicht lesen, um RealSinger verwenden zu
können.
Es ist dazu gedacht, die technischen Fragen einiger Benutzer über die
internen Algorythmen zu beantworten, es ist aber nicht notwendig für das
Arbeiten mit RealSinger. |
|
Einführung
|
|
Wenn man eine realistische Gesangssynthese herstellen will, kommt dem
Programmierer als erste Idee, eine Sammlung aufgenommener Phoneme zu
verwenden und diese zu benutzen, um die Stimme zu erzeugen.
Dies führt allerdings sehr schnell zu drei Problemen:
-
Der Algorythmus muß in der Lage sein, das Phonem in jeder
Tonhöhe zu erzeugen (Grundfrequenz). Alle Phoneme in jeder
möglichen Tonhöhe aufzunehmen, wäre nicht befriedigend,
denn das würde zu einem langwierigen und komplexen Lernprozess
führen. Außerdem wären die Stimmdateien sehr groß.
-
Der Algorythmus muß in der Lage sein, die Phoneme beliebig zu verlängern.
-
Der Algorythmus muß in der Lage sein, sanfte Übergänge
von einem Phonem zum anderen zu erzeugen, um realistische Koartikulation
zu simulieren (das nächste Phonem kann schon gehört werden,
während das vorherige noch nicht vollkommen beendet ist).
In der Computer-Literatur kann für jedes dieser Probleme eine
Lösung gefunden werden.
Für die Probleme 1 und 2 wurden bereits einige
effiziente Algorythmen entdeckt. Sie bearbeiten das digitale Signal
direkt vom aufgenommenen Beispiel und ermöglichen die
Änderung von Frequenz (Pitch) und Dauer.
Diese Algorythmen werden in den meisten bekannten Klang-Editoren
verwendet, um die Tonhöhe oder die Geschwindigkeit einer Klangdatei
unabhängig voneinander zu verändern. Sie werden auch
erfolgreich bei der Sprach-Synthese eingesetzt, da die Änderungen
der Sprach-Frequenzen ziemlich klein sind.
Wie dem auch sei, im Falle von gesungener Stimme können diese
Algorythmen nicht verwendet werden, da sie nicht effizient genug sind,
wenn die Tonhöhenänderung sehr groß ist. Das Ergebnis
selbst ist nicht falsch, aber die Stimme ist verzerrt, als würde
man ein Tonband mit zu großer Geschwindigkeit abspielen
(Enten-Stimme).
Für Problem 3 gibt es gewöhnlich folgenden
Weg. Man nimmt nicht nur die einzelnen Phoneme einer Sprache auf,
sondern alle möglichen Kombinationen von zwei oder drei Phonemen
(Diphoneme/Triphoneme). Dieses System speichert den
Koartikulationseffekt und macht die synthetisierte Stimme
realistischer. Allerdings ist auch hier der Lernprozess sehr lang und
hart, und manchmal benötigt der Sprecher mehrere Stunden für
die Aufnahmen. Die resultierende Datei ist oft sehr groß (mehrere
Megabyte).
RealSinger benutzt eigene Algorythmen, um diese drei
Probleme gleichzeitig zu lösen, und zwar durch Manipulation der
Frequenz-Spektren.
Einige Sprach-Synthesizer haben schon versucht, Frequenz-Spektren zur
Erzeugung von Stimmen zu benutzen.
Es hat sich aber herausgestellt, daß diese Methode schwer zu
implementieren ist, denn für die Widerherstellung eines Signals aus einem bearbeiteten Spektrum
mit Hilfe der "inverse fast Fourier Transformation" (IFFT),
müssen die "Phasen"-Werte entsprechend
ausgerichtet werden. Ansonsten passen zusammengehörende Teile
eines Signals nicht zusammen und ungewollte Hintergrundgeräusche
werden hörbar.
Stimm-Spektrum
|
|
Beim Sprechen oder Singen ist die stimmliche Grundwellenform (Klang der
von den Stimmbändern erzeugt wird durch den Luftstrom aus den
Lungen) eine Kombination
von Oberschwingungen (Vielfache der Grundfrequend f0).
In einem Lautstärke/Frequenz-Graph sieht dieser
stimmliche Grundklang wie ein Kamm aus. Jeder Zahn des Kammes zeigt
eine Frequenz, die ein vielfaches der Grundfrequenz f0 ist:
Wenn die Tonhöhe der Stimme steigt, schiebt sich die
Grundfrequenz f0 nach rechts (höhere Frequenz) und der
Frequenzabstand zwischen zwei aufeinanderfolgenden Oberschwingungen steigt
ebenfalls, um gleich zu f0 zu bleiben.
Beim Passieren des Stimmtraktes werden einige Frequenzen durch
kavitative Resonanzen verstärkt, andere werden abgeschwächt. Daraus folgt,
daß manche Oberschwingungen laut, andere gedämpfter sind. Dieses Stimmtrakt-Spektrum
ist abhängig von dem gesungenen oder gesprochenen
Phonem und ist mehr oder weniger unverändert, wenn die Frequenz
wechselt.
Die Verschmelzung dieser beiden Spektren (Stimmquelle und Stimm-Trakt)
ergibt das resultierende Spektrum, in dem der Hörer das Phonem
(was gesagt wird) und die Tonhöhe (gesungene Note) erkennt.
RealSinger Grundlagen
|
|
Die Absicht von RealSinger ist es, für jedes Phonem einer
gegebenen Sprache das aufgenommene Signal so zu entschlüsseln, daß
die Spektren von Stimmquelle und Stimmtrakt getrennt werden
können. Nur das Stimmtrakt-Spektrum wird dann gespeichert und
eine generierte Stimmquelle wird auf dieses Spektrum angwandt, um das
original aufgenommene Phonem in jeder Tonhöhe zu simulieren.
Der Lern-Prozess
|
|
-
Der Sprecher wird aufgefordert, für jedes Phonem einer gegebenen
Sprache ein Wort auszusprechen.
-
Jedes Wort wird als reguläre Klang-Datei gespeichert.
-
Dann wird das Phonem innerhalb des Wortes isoliert und das Signal wird
gestutzt, um nur diesen Teil zu behalten.
-
Ein durchschnittliches Frequenzspektrum des Klanges wird erzeugt.
-
Dieses Spektrum wird aufgeschlüsselt, um den Einflußfaktor der
Stimmquelle zu entfernen und nur die Resonanzkurve des Stimmtraktes zu behalten.
-
Dieses Pseudo-Spektrum wird gespeichert (weniger als 100
Fließkomma-Werte für jedes Phonem)
-
Für zeitlich variierende Phoneme, wie Explosivlaute, werden
mehrere Pseudo-Spektren gespeichert, um Informationen über die
Änderungen im Spektrum zu erhalten.
Dieser Algorythmus benötigt nur wenige Werte für jedes Phonem,
was sehr kleine Stimm-Dateien zur Folge hat (weniger als 40 Kb
nach der Kompression).
Erzeugung der Stimme
|
|
-
Für jedes zu singende Phonem wird das passende Pseudo-Spektrum
extrahiert.
Für den überlappenden Teil zwischen zwei Phonemen werden
beide Pseudo-Spektren verzerrt und dann verschmolzen, um den
Koartikulationseffekt zu simulieren.
-
Eine synthetische Stimmquelle wird in der benötigten Tonhöhe
erzeugt. Das Spektrum der Stimmquelle kann hier leicht modifiziert
werden, um das Stimm-Timbre zu verändern (zur klanglichen
Verbesserung oder um verschiedene Vocoder-Effekte anzuwenden).
-
Diese Quelle wird wieder mit dem Pseudo-Spektrum verbunden.
-
Das Spektrum wird dann von einer phasenfreien, inversen Transformation
bearbeitet, um eine reguläre Klang-Datei zu erhalten.
Dieser Algorythmus simuliert Koartikulationseffekte. Deshalb ist es
nicht nötig, die ganze Gruppe der Diphoneme und Triphoneme
aufzunehmen. Nur einfache Phoneme werden benötigt.
|