Sprachkomprimierung - Wie funktioniert der lineare Vorhersagefilter in LPC auf allgemeiner Ebene?

7

Hallo, ich nehme an einem Multimedia-Systemkurs teil und bereite mich auf meine Prüfung am Dienstag vor. Ich versuche, mich allgemein mit der LPC-Komprimierung zu befassen, aber ich habe Probleme mit dem, was mit dem linearen Vorhersagefilterteil vor sich geht. Dies ist mein bisheriges Verständnis:

LPC digitalisiert das analoge Signal und teilt es in Segmente auf. Für jedes der Segmente bestimmen wir die Hauptmerkmale des Signals und versuchen, diese so genau wie möglich zu codieren. Die Hauptmerkmale sind die Tonhöhe des Signals (dh die Grundformantfrequenz), die Lautstärke des Signals und ob der Ton stimmhaft oder stimmlos ist. Es werden auch Parameter bestimmt, die als Anregungsparameter für den Vokaltrakt bezeichnet werden und im Vokaltraktmodell verwendet werden, um den Zustand des Vokaltrakts, der den Schall erzeugt hat, besser zu modellieren. Diese Daten werden über das Netzwerk übertragen und am Empfänger dekodiert. Die Tonhöhe des Signals wird als Eingang für einen stimmhaften oder stimmlosen Synthesizer verwendet, und die Lautheitsdaten werden verwendet, um die Amplitude dieses resultierenden Signals zu erhöhen.

In meinen Notizen heißt es, dass das Vokaltraktmodell ein lineares Vorhersagefilter verwendet und dass das n-te Sample eine lineare Kombination der vorherigen p-Samples plus eines Fehlerterms ist, der vom Synthesizer stammt.

  • Bedeutet dies, dass wir sowohl beim Codierer als auch beim Decodierer einen laufenden Durchschnitt der letzten p Abtastwerte beibehalten? Damit wir am Encoder nur Daten übertragen, die der Differenz zwischen diesem Durchschnitts- und dem tatsächlichen Signal entsprechen?

  • Warum ist es eine lineare Kombination dieser vorherigen Stichproben? Mein Verständnis ist, dass wir die Lautstärke, Frequenz und die stimmhafte / stimmlose Natur des Klangs extrahieren und dann diese Anregungsparameter für den Vokaltrakt erzeugen, indem wir sie so auswählen, dass der Unterschied zwischen dem tatsächlichen Signal und dem vorhergesagten Signal so gering wie möglich ist. Sicherlich wäre ein Durchschnitt dieser vorherigen Proben ein besserer Hinweis auf die nächste Probe?

Wenn es irgendwelche Lücken in meinem Verständnis gibt, wenn Sie darauf hinweisen könnten, wäre das großartig! Danke im Voraus!

user1058210
quelle

Antworten:

13

LPC-Sprachcodierer (beginnend mit dem alten LPC10-Standard, auf den Sie sich hier beziehen) basieren auf dem Quellfiltermodell der Sprachproduktion. Sprache kann durch die folgenden Eigenschaften charakterisiert werden:

  • Der rohe Klang, der vom Kehlkopf abgegeben wird (durch Vibration der Stimmlippen oder nur durch ihn strömende Luft, wobei die Stimmlippen geöffnet werden).
  • Die Übertragungsfunktion des Filters wird durch das Artikulationssystem erreicht, wodurch dieser Rohton weiter gefiltert wird.

Frühe LPC-Codierer (LPC10) verwenden das folgende Modell dieser beiden Schritte:

  • Der Kehlkopf sendet entweder weißes Rauschen aus, das durch eine Amplitude gekennzeichnet ist σ;; oder ein periodischer Impulszug, der durch eine Amplitude gekennzeichnet istσ und eine Frequenz f0
  • Die Übertragungsfunktion des Artikulationssystems hat die Form 11- -keinkz- -kund ist somit vollständig durch die Koeffizienten gekennzeichnet eink

Das Prinzip früher LPC-Codierer (wie LPC10) besteht daher darin, diese Parameter aus Blöcken des eingehenden Audiosignals zu schätzen; diese über das Netzwerk übertragen; und lassen Sie einen Tongenerator einen Ton aus diesen Parametern auf dem Empfänger wiedergeben. Beachten Sie, dass bei diesem Vorgang nichts von den ursprünglichen Audio-Samples tatsächlich übertragen wird. Um eine musikalische Analogie zu ziehen, ist es, als würde man eine Klavieraufführung hören, transkribieren, die Partitur senden und jemanden dazu bringen, sie am anderen Ende zu spielen ... Das Ergebnis am anderen Ende wird der ursprünglichen Aufführung nahe kommen, aber Es wurde nur eine Darstellung gesendet.

Bedeutet dies, dass wir sowohl beim Codierer als auch beim Decodierer einen laufenden Durchschnitt der letzten p Abtastwerte beibehalten?

Nein, so funktioniert das nicht. Auf der Encoderseite führen wir einen Prozess aus, der als AR-Schätzung (autoregressive Schätzung) bekannt ist, um den Koeffizientensatz des AR-Filters zu schätzen, der am besten mit der spektralen Hüllkurve des Eingangssignals übereinstimmt. Dies ist ein Versuch, die Koeffizienten der Filterung wiederherzustellen, die vom Artikulationssystem durchgeführt wurden.

Diese Koeffizienten werden über das Netzwerk gesendet (zusammen mit Tonhöhe, Sprach- / Stimmlos-Flag und Lautstärke). Der Decodierer verwendet diese Koeffizienten, um ein synthetisches Anregungssignal zu filtern, das entweder weißes Rauschen (stimmloser Rahmen) oder ein Kamm periodischer Impulse (stimmhafter Rahmen) sein kann. Diese Koeffizienten werden auf folgende Weise am Decoder verwendet, um das Ausgangssignal wiederherzustelleny(n)::

y(n)=excichteintichÖn(n)- -keinky(n- -k)

Beachten Sie, dass die linear kombinierten Proben frühere Proben sind, die vom Filter erzeugt wurden, da es sich um ein einpoliges IIR-Filter handelt.

Damit wir am Encoder nur Daten übertragen, die der Differenz zwischen diesem Durchschnitts- und dem tatsächlichen Signal entsprechen?

Es gibt keine "Mittelung" und es gibt keine Übertragung eines Differenzsignals. Der Decoder ist ein Klangsynthesizer mit einigen Parametern; und der Codierer sucht nach dem Parametersatz für diesen Synthesizer, der dem Eingangssignal am ehesten entspricht.

Warum ist es eine lineare Kombination dieser vorherigen Stichproben?

Andere Optionen wären hier zwar möglich, aber der Vorteil der Verwendung eines automatisch regressiven Modells ist der folgende:

  • In diesem Modell verwenden wir einen einpoligen IIR-Filter, um das Artikulationssystem zu simulieren. Dies ist ein gutes Modell, da es starke spektrale Einbrüche und Spitzen mit einer kleinen Anzahl von Koeffizienten erfassen kann. und das Artikulationssystem ist tatsächlich in der Lage, schmale Frequenzbänder hervorzuheben / abzuschwächen (siehe Formanten ). Wenn wir ein FIR-Filter mit Nullen verwendet hätten, hätten wir viel mehr Koeffizienten benötigt, um die Art der Filterantworten, die das Artikulationssystem erzielen kann, genau zu erfassen.
  • Auf der Encoder-Seite ist das Problem der Schätzung der Filterkoeffizienten rechnerisch effizient - es kann unter Verwendung der Levinson-Durbin-Rekursion für die ersten paar Abtastwerte der Autokorrelation durchgeführt werden. Komplexere lineare Modelle (ARMA) oder nichtlineare Modelle sind rechenintensiver oder unlösbarer.
  • Auf der Decoderseite ist die Synthese in der Tat sehr einfach - wir brauchen nur genügend Speicher, um die n vorherigen vom Decoder emittierten Abtastwerte zu verfolgen.

Sicherlich wäre ein Durchschnitt dieser vorherigen Proben ein besserer Hinweis auf die nächste Probe?

Das ist nicht wahr. Angenommen, das Eingangssignal ist eine Sinuswelle. Die Vorhersagey^(n)=(2- -ω2)y(n- -1)- -y(n- -2) hat null Fehler, während y^(n)=y(n- -1)+y(n- -2)2 ist die meiste Zeit falsch (insbesondere erfasst es nicht die Tatsache, dass die Sinuswelle die Hälfte der Zeit streng zunimmt und den Rest der Zeit streng verringert, also y(n)sollte nicht "zwischen" den vorherigen Werten liegen). Sprachsignale sind natürlich keine Sinuswellen - aber mit können Sie viel mehr Modellierungsleistung aus einem Modell herausholenp Parameter (Ordnung p AR), als aus einem Modell mit Null (Mittelwertbildung).

Es ist auch zu beachten, dass es eine mathematische Definition von "besser" gibt (Minimierung des erwarteten Wertes des Quadrats des Fehlers), die ein Verfahren zum Ermitteln des optimalen Wertes der Koeffizienten ergibt.

Pichenettes
quelle