Zusammenfassung - Universität Ulm
Transcription
Zusammenfassung - Universität Ulm
Merkmalsextraktion mit Hilfe des LPC-Modells Stephanie Wist Fakultät für Informatik Universität Ulm Abstract Im folgenden werde ich mit möglichst wenigen mathematischen Hilfsmittlen den Aufbau und die Funktionsweise des LPC-Modells erläutern. Dazu zuerst ein kurzer Überblick über das LPC-Verfahren, seine Vorgehensweise und seine Anwendungsgebiete. Danach wird auf die einzelnen Merkmale eingegangen, die mit dem LPCModell bestimmt werden können, und wie diese Erkennung im einzelnen funktioniert. 1 Was ist LPC? LPC steht für Linear Predictive Coding, zu deutsch: Lineare Prädiktion. Es ist ein Verfahren um analoge Signale - speziell menschliche Sprache - zu analysieren und auf Parameter abzubilden, indem ein spezieller Wert mit Hilfe einer linearen Funktion aus zeitlich vorhergehenden Werten vorhergesagt wird. Dabei wird ausgenutzt, dass das menschliche Sprachsignal über verhältnismässig lange Zeiträume (bis zu 22ms) fast unveränderlich ist, und auch der Vokaltrakt, der die Sprache moduliert, sich nur langsam und stetig ändern kann. Die Anzahl der verwendeten Parameter schwankt zwischen den verschiedenen LPC-Verfahren. Es hat sich jedoch gezeigt, dass die Wahl von vielen Filterkoeffizienten die Sprachqualität nicht wesentlich verbessert, da die wesentlichen Merkmale bereits in den ersten 12 Parametern vertreten sind. Dabei gilt die Faustformel, dass zwei Paramter für die Nachbildung der Stimmritze und jeweils zwei Parameter für einen Formanten benötigt werden. Die die menschliche Sprache nur bis zu fünf Formanten besitzt, reichen demzufolge 12 Parameter für eine gute Näherung aus (vgl Fig. 7). Ein LPC-Verfahren, dass zur Analyse p Parameter verwendet, wird oft als LPC-Verfahren p-ter Ordnung bezeichnet. bezeichnet. Das älteste LPC-Verfahren zur Spracherkennung – LPC-10 – wurde erstmals 1984 vorgeschlagen und verwendet 10 Parameter für stimmhafte Laute und 4 für stimmlose und besitzt somit die Ordnung 10. 29 November 2004 2 Das LPC-Modell Fig. 1. Quelle-Filter-Modell für das LPC-Verfahren Das LPC-Verfahren basiert auf einem einfachen Quelle-Filter-Modell. Das Modell ist der menschlichen Sprachbildung nachempfunden. Die menschliche Sprache wird erzeugt, indem der Luftstrom aus den Lungen durch die Stimmritze und an den Stimmbändern vorbei gepresst wird und diese bei stimmhaften Lauten zum Schwingen gebracht werden. Danach findet eine zusätzliche Artikulierung durch die Form der Mund- und Nasenhöhle statt. Für das QuelleFilter-Modell wird die menschliche Lunge als Quelle betrachtet, die entweder ein periodisches Signal u(n) – für stimmhafte Laute – oder weisses Rauschen für stimmlose Laute erzeugt, und die Stimmbänder, Rachen und Mundhöhle als eine Röhre mit variablem Durchmesser gesehen. Die Erzeugung spezieller Laute geschieht nun beim Quelle-Filter-Modell dadurch, dass das digitale Filter durch die entsprechenden variablen Parameter der Form dieser virtuellen Röhre so angepasst wird, dass es das Signal möglichst orginalgetreu moduliert. Da auch die Lautstärke, dh. das Volumen an Luft, dass aus der Lunge gepresst wird, eine wichtige Rolle bei der menschlichen Sprache spielt, wird im Quelle-Filter-Modell das periodische oder aperiodische Signal u(n) zusätzlich mit einem Verstärkungsfaktor G multipliziert. 3 Schritte zur Durchführung einer LPC-Analyse In diesem Abschnitt sollen nochmals kurz alle Schritte aufgeführt werden, die für eine LPC-Analyse notwendig sind. Zuerst wird das einkommende Signal abgetastet und geglättet. Danach wird das Signal in Segmente mit jeweils N Abtastwerten zerlegt. Dabei gilt, dass das nächste Segment M Abtastwerte nach dem Anfang des jeweiligen Segments beginnt. Ist M kleiner als N , so findet eine Überlappung statt, so dass einige Abtastwerte bei zwei oder mehr Segmenten die Filterkoeffizienten beeinflussen. Ist M grösser als N , so gibt es 2 Fig. 2. Schritte zur Analyse und Synthese von Sprachsignalen Abtastwerte, die in der Analyse ignoriert werden. Allgemein hängt die Wahl von M und N von der Genauigkeit und Menge der Daten ab, die gewünscht sind. Die einzelnen Segmente werden mit einer Fensterfunktion w mutlipliziert, so dass bei der Berechnung der Filterparameter alle Werte ausserhalb des Bereiches als 0 angesehen werden. Für die Fensterfunktion wird meist eine Hammingfunktion verwendet, da sich herausgestellt hat, das bei Multiplikation mit einem reinen Rechteckssignal der Fehler bei der Vorhersage speziell am Anfang und am Ende eines Segmentes sehr gross war. Das liegt daran, das die ersten Werte am Anfang eines Segments mit Hilfe von Werten vorhergesagt werden sollen, die ausserhalb dieses Segements liegen und deshalb 0 sind. Genauso verhält es sich am Ende des Segments. Hier sollen Werte ausserhalb des Segmentes vorhergesagt werden, die durch die Multiplikation mit der Fensterfunktion 0 sind. Die Hammingfunktion dämpft die Werte am Anfang und am Ende des Segments und verhindert so einen übermässig grossen Fehler bei der Prädiktion. Anschliessend wird für jedes Segment zuerst die Autokorrelation berechnet, und anschliessend die Merkmale und Filterkoeffizienten extrahiert. An dieser Stelle sind die Filterkoeffizienten und die Sprachmerkmale aus dem Signal extrahiert. Die beiden letzten Schritte in Fig. 2 dienen hauptsächlich der Stabilisierung der Cepstral-Koeffizienten und sollen hier nicht weiter betrachtet werden. Fig. 3. Beispiel für überlappende Segmente. Es gilt: M = 1/3N 3 4 Erkennen von Sprachmerkmalen 4.1 Welche Merkmale können mit dem LPC-Modell erkannt werden? Während der Analyse wird von den einzelnen Segmenten Parameter bestimmt, die für eine spätere Rekonstruktion nötig sind. Dies beinhaltet speziell: • die Lautstärke des aktuellen Segments. Dies entspricht dem Verstärkungsfaktor G. • die darin enthaltene Energie. • die Klassifizierung in stimmhafte und stimmlose Laute. Dies entspricht den beiden Formen von u(n). • die Periodendauer bei stimmhaften Signalen. • und speziell die Filterkoeffizienten, durch die das Sprachsignal beschrieben werden kann. 4.2 Bestimmung von stimmhaften und stimmlosen Lauten Die Unterscheidung zwischen stimmhaften und stimmlosen Lauten ist für die Spracherkennung und vor allem für die Synthese von Sprachsignalen wichtig, da ihnen unterschiedliche Signalformen zugrunde liegen. Fig. 4. Stimmhaftes ”e” im Wort ”Test” Fig. 5. Stimmloses ”s” im Wort ”Test” Das wichtigste Unterscheidungsmerkmal zwischen stimmhaften und stimmlosen Lauten ist die Wellenform, die Energie und der Frequenzbereich des Segments. Stimmhafte Laute bestehen aus einem periodischen Signal mit hoher Energie und einen Frequenzbereich um 800-1600 Hz. Stimmlose Laute hingegen haben meistens eine sehr zufällige und chaotische Wellenform und werden deshalb beim LPC-Modell auch mit weissem Rauschen nachgebildet. 4 Desweiteren ist die Energie in stimmlosen Lauten sehr viel niedriger als bei den stimmhaften und auch der Frequenzbereich liegt mit etwa 2400-3200 Hz deutlich höher. Diese Unterschiede werden von dem LPC-Modell direkt zur Klassifikation eines Lautes in stimmhaft oder stimmlos benutzt. Zunächst wird versucht, den Laut über seine Energie einzuordnen. Dazu wird eine voreingestellte Schranke benötigt, nach der die Unterscheidung vorgenommen wird. Jedoch lassen sich nicht alle Signale direkt nach ihrer Energie einsortieren. Auch wird diese Methode bei lauter Sprache bzw. lauten Hintergrundgeräuschen – durch ihre hohe Energie – sehr viele Signale falsch klassifizieren. Deshalb wird in einem zweiten Schritt ausgenutzt, dass stimmhafte Laute eine hohe Energie aber niedrige Frequenzen, und stimmlose Laute jedoch hohe Frequenzen besitzen. Dies bedeutet aber auch, dass das Signal bei stimmlosen Lauten sehr viel häufiger die x-Achse schneidet als bei stimmhaften Lauten. Deshalb wird zusätzlich die Anzahl der Nulldurchgänge ermittelt und mit Durchschnittswerten von typisch stimmhaften und stimmlosen Segmenten verglichen. Desweiteren werden bei der Klassifikation Segmente nicht einzeln betrachtet, sonder möglichst immer in ihrem Umfeld. Damit soll verhindert werden, dass in einer Gruppe stimmhafter Segmente ein stimmloses Segment ist (oder umgekehrt). 4.3 Berechnung der Filterkoeffizienten Wie weiter oben erwähnt wurde, versucht das LPC-Verfahren, das aktuelle Sprachsignal aus den vorangehenden Signalen zu berechnen. Dazu werden die Filterkoeffizienten möglichst passend aus abgetasteten Signalwerten bestimmt. Dabei werden die Koeffizienten derart gewählt, dass die Fehlerquadratsumme über die letzten so berechneten N Abtastwerte minimal wird. Wie man auch in Fig. 6 sieht, ist die Vorhersage für einen stimmhaften Laut genauer möglich, als für einen stimmlosen. Dies liegt am Signal-Charakter des stimmlosen Lautes, da es einen sehr chaotischen und zufälligen Verlauf hat, und sich demzufolge nur bedingt durch zeitlich davorliegende Abtastwerte voraussagen lässt. Auch spielt die Anzahl der Signalwerte eine Rolle, die zur Vorhersage herangezogen werden (vgl. Fig. 7). Im folgenden werde ich von p abgetasteten Signalwerten ausgehen. Für das aktuell abgetastete Signal gilt: s(n) = p X ak s(n − k) + Gu(n) (1) k=1 Betrachtet man nun das aktuelle Signal als Linearkombination aus den vorherigen Werten, so erhält man als Näherungswert s̃(n): s̃(n) = p X ak s(n − k) (2) k=1 5 Den auftretenten Fehler zu jedem Zeitpunkt kann man nun wie folgt berechnen: p X en = s(n) − s̃(n) = s(n) − ak s(n − k) (3) k=1 Im Idealfall entspräche der Fehler Gu(n). Dies wird jedoch in der Praxis kaum erreicht, da das Signal in einem Segment nicht gleichförmig ist, sondern leichten Schwankungen unterworfen ist. Im folgenden soll die Fehlerquadratsumme über N Abtastwerte minimiert werden. Dazu wird das aktuelle Sprachsegment mit einer Fensterfunktion w multipliziert, mit: s(n + m)w(m) s(n + m) = 0 0≤m≤N −1 (4) sonst Das heisst: E= N −1 X e2n n=0 = N −1 X (s(n) − n=0 p X ak s(n − k))2 (5) k=1 Da E eine Linearkombination von quadratischen Funktionen ist, und E für sehr grosse positive oder negative Werte von ak grösser wird, ist dieser Extrempunkt das einzige Minimum von E. E wird minimal für: p N −1 X X ∂E =0=− 2(s(n) − ak s(n − k))s(n − i) ∂ai n=0 k=1 = −2 N −1 X s(n)s(n − i) + 2 n=0 p N −1 X X ! für i = 1..p (6) ak s(n − k)s(n − i) (7) n=0 k=1 Durch Umformung erhält man: N −1 X n=0 s(n)s(n − i) = p X k=1 ak N −1 X s(n − k)s(n − i) (8) n=0 Aus diesen p Gleichungen lassen sich nun die p Koeffizienten bzw Filterparameter berechnen. Dafür gibt es verschiedene Verfahren. Die beiden meistbenutzen sind zum einen die Berechnung über die Autokorrelation des Signals, zum anderen über die Kovarianz. Die Methode über die Autokorrelation ist einfacher zu berechnen und hat auch noch einige weitere Vorteile, auf die ich 6 im Laufe dieses Abschnittes eingehen möchte. Die ersten Schritte sind jedoch gleich. Zuerst wird die Kovarianzmatrix über ihre Elemente φi,k definiert als: φi,k = N −1 X s(n − i)s(n − k) (9) n=0 und: φi,0 = p X φi,k ak (10) k=1 In Matrixform ergibt dies für die p Gleichungen: φ1,0 φ2,0 φ 3,0 ··· = φ2,1 φ 3,1 ··· a φ2,2 φ2,3 · · · φ2,p 2 φ3,2 φ3,3 · · · φ3,p a3 (11) ··· ··· ··· ··· ··· ap φp,1 φp,2 φp,3 · · · φp,p φp,0 φ1,1 φ1,2 φ1,3 · · · φ1,p a1 oder: Φ0 = Φa (12) Die Filterkoeffizienten kann man an dieser Stelle mit Hilfe der Kovarianzmethode bestimmen, indem man die inverse Matrix von Φ berechnet. Diese existiert aufgrund der Symmetrie von Φ, da φi,k = φk,i . Es gilt dann: a = Φ−1 Φ0 (13) An dieser Stelle kann man die Kovarianzmatrix auch in eine Autokorrelationsmatrix umformen. Durch die Multiplikation mit w(m) kann man φi,j umschreiben zu: N −1−(i−j) φi,j = X s(n)s(n + (i − j)) (14) n=0 da für Werte ausserhalb des Fensters s(n) = 0 gesetzt wurde. Nun hängt φi,j nicht mehr direkt von i und j sondern nur noch von der Differenz i − j ab. 7 Damit lässt sich φi,j schreiben als: φi,j = ri−j (15) und damit gilt: ri,j = rk = N −1−k X s(n)s(n + k) (16) n=0 Nun erhält man für Φ eine Toeplitz-Matrix: r1 r1 r 3 ··· = rp r1 r2 r 3 ··· r1 r1 · · · r1 a 1 ··· ··· a r2 r2 · · · r2 2 r3 r3 · · · r3 a3 ··· ··· ··· rp rp rp · · · rp (17) ap Toeplitz-Matrizen haben den Vorteil, dass sie sich sehr schnell berechnen lassen. Im Folgenden ist der Durbin − Algorithmus angegeben, der diese Matrix schnell und effizient löst und dabei die einzelnen Kovarianz-Parameter berechnet, die stabiler sind als die eigentlichen Filterkoeffizienten und deshalb teilweise auch zur Analyse und Synthese des Sprachsignals herangezogen werden. Durbin-Algorithmus (iterativ, mit i = 1, 2, .., p) : E (0) = r0 k i = r i − (18) i−1 X j=1 αji−1 r|i−j| /E (i−1) (19) (i) αi = k i (i) (20) αj = αji−1 − ki αi−j (i−1) (21) E (i) = (1 − ki2 )E (i−1) (22) Dabei gilt: (p) am = Filterkoeffizienten = αm (23) 8 km = PARCOR Koeffizienten (24) 1 − km gm = log area Koeffizienten = log 1 + km ! (25) 4.4 Bestimmung der Grundfrequenz bei stimmhaften Segmenten Die Grundfrequenz im Sprachsignal entsteht durch die periodische Vibration der Stimmbänder. Diese sind bei einem stimmlosen Laut nicht beteiligt, was sich auch an ihrem aperiodischen Charakter sehen lässt. Aus diesem Grund wird und kann man die Grundfrequenz nur bei stimmhaften Signalen bestimmen. Jedoch ist diese Berechnung äusserst aufwendig. • Zum einen lässt sich die Grundfrequenz direkt über die Autokorrelationskoeffizienten rk bestimmen. Denn rk besitzt ein Maximum, wenn k der Grundfrequenz entspricht. Jedoch ist diese Methode sehr fehleranfällig. Das Maximum wird meist durch einen Vergleich des Signals mit einem Schwellenwert ermittelt. Das muss aber nicht zwangsweise die Grundfrequenz sein. Auch durch sonstige Resonanzen im Vokaltrakt oder Interferenzen kann dieser Schwellenwert überschritten werden. • LPC-10 verwendet einen anderen Ansatz. Es benutzt die average magnitude difference function - kurz AM DF - mit: 0 +n 1 kX |yi − yi−p | AM DF (p) = N i=k0 mit Grundperiode p (26) Da die Grundperiode bei der menschlichen Sprache zwischen 2.5ms und 19.5ms liegen muss, kann man verschiedene Werte für p einsetzen und so das Minimum etwa durch Ausprobieren ermitteln. Für Signale, die mit 8kHz abgetastet werden wie z.B. bei LPC-10, bedeutet dies: 20 ≤ p ≤ 120. Die Grundfrequenz selbst ist reziprok zur Grundperiode. • Eine weiter Möglichkeit ist die Berechnung über das Cepstrum. Dabei wird ausgenutzt, dass die Grundfrequenz zwischen 50 und 400 Hz liegt, also im tiefen Frequenzspektrum. Diese werden beim Cepstrum hervorgehoben und deutlich weiter rechts auf der Frequenzachse abgebildet, als die höheren Frequenzen. Die Grundperiode macht sich nun als deutliche Spitze im Bereich zwischen 2.5ms und 19.5 bemerkbar, und kann somit leicht ermittelt werden. Bei stimmlosen Signalen fehlt diese charakteristische Spitze. 9 4.5 Berechnung der Verstärkung G Zur Berechnung des Verstärkungsfaktor G muss folgende Gleichung gelöst werden: G2 = 1 − p 1 X a k rk r0 k=1 (27) Wurde die Bestimmung der Filterkoeffizienten über die Autokorrelation des Signals und den Durbin-Algorithmus vorgenommen, so lässt sich G aus deren Zwischenergebnissen berechnen als: G= q E (0) /E (p) (28) 4.6 Berechnung der Energie im Segment Die Energie im Segment lässt sich sehr einfach über die Autokorrelation berechnen. Es gilt: E = r0 = N −1 X s2 (n) (29) n=0 Wurden die Filterkoeffizienten bereits über die Autokorrelationsmethode berechnet, so fällt die Energie bei der Berechnung automatisch als Nebenprodukt ab. 4.7 Berechnung des Cepstrum Das Cepstrum lässt sich direkt aus den Filterkoeffizienten berechnen. Und zwar als: X 1 k−1 ck = a k = ici ak−i k i=1 mit1 ≤ k ≤ p (30) Das Cepstrum ist eine weitere Möglichkeit zur Darstellung und Analyse von Sprachsignalen. Die Parameter entsprechen der Rücktransformierten des logarithmisch dargestellten Betragsspektrums und sind im allgemeinen stabiler als die Filterkoeffizienten selbst. 10 4.8 Probleme des LPC-Modells Das LPC-Modell ist ein stark vereinfachtes Modell für die menschliche Spracherzeugung. Es ist sehr gut geeignet, um stimmhafte Laute nachzubilden und zu erkennen, und auch stimmlose Laute können noch mit guter Näherung reproduziert werden. Jedoch liegen in der Vereinfachung des Modells auch Probleme. Diese beziehen sich hauptsächlich auf folgende Punkte: • Durch Approximation des Stimmbereichs als einfache Röhre wird ignoriert, dass neben der Mundhöhle auch der Nasenraum an der Sprachbildung beteiligt ist. Da dieser in die Analyse und Synthese nicht miteinfliesst, kann man mit dem LPC-Modell nasale Laute nur sehr schlecht erkennen bzw. unterscheiden. • Im LPC-Modell wird nur zwischen stimmhaften und stimmlosen Lauten unterschieden. Allerdings gibt es auch in der deutschen Sprache Laute, die sowohl stimmhafte als auch stimmlose Merkmale aufweisen. Diese Laute werden vom LPC-Modell aber entweder als stimmhaft oder als stimmlos klassifiziert, so dass sie bei der Synthese nicht korrekt reproduziert werden können, da sie eigentlich eine Mischform darstellen. • Die Merkmalserkennung kann speziell bei lauten Hintergrundgeräuschen schnell fehlerhaft werden, da LPC diese nicht als solches erkennen kann und sie deshalb in die Analyse des eigentliches Sprachsignals mit einfliessen. • Das LPC-Verfahren eignet sich nur für das Komprimieren und Erkennen von menschlicher Sprache. Bei anderen analogen Signalen ist im Normalfall die Fehlerrate zu gross, da diese im Gegensatz zur menschlichen Sprache meist nicht partiell konstant sind und nicht durch ein dem Quelle-Filter-Modell entsprechenden Verfahren erzeugt werden können. 5 Fazit Das LPC-Modell analysiert das Sprachsignal, indem es versucht, den Weg der menschlichen Spracherzeugung nachzubilden. Dazu werden Filterkoeffizienten berechnet, die es erlauben, den menschlichen Vokaltrakt möglichst gut zu simulieren. Ebenso wird bestimmt, ob ein Signal stimmhaft oder stimmlos ist, wieviel Energie es enthält und was seine Grundfrequenz ist. Durch diese Fülle von Parametern eignet sich meiner Meinung nach das LPC-Verfahren sehr gut zur Spracherkennung, da es die speziefischen Merkmale aus dem Sprachsignal extrahiert. Diese Parameter lassen sich nun im Folgenden mit den unterschiedlichsten Methoden auswerten und verarbeiten. Die Sprachübertragung bei der die Parameter übertragen werden und an der anderen Seite wieder synthetisiert werden ist nur eine Anwendungsmöglichkeit. Genauso kann man die Parameter analysieren und auf das Sprachsignal reagieren. Man denke hier 11 zum Beispiel an Spracherkennungssoftware, die es erlaubt, vom Nutzer per Sprache ferngesteuert zu werden. References [1] L.R. Rabiner und R.W. Schafer Digital Processing of Speech Signals (Prentice Hall, Englewood Cliffs, New Jersey, 1978) [2] Jeremy Bradbury Linear Predictive Coding (December 2000) [3] Bernd Eppinger und Eberhard Herter Sprachverarbeitung (Carl Hanser Verlag, München, Wien) [4] http://mi.eng.cam.ac.uk/∼ajr/SpeechAnalysis 12 Fig. 6. Änderung des Vorhersagefehlers bezüglich der Anzahl der Parameter 13 Fig. 7. Spektrum für einen stimmhaften Laut für verschiedene Vorhersage-Ordnungen p 14