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 ) = e x c i t a t i o 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.