μ-Gesetz-Algorithmus - μ-law algorithm


Kompandieren von μ-law- und A-law-Algorithmen

Der μ-law - Algorithmus (manchmal geschrieben mu -law , oft angenähert als u-law ) ist eine Kompandierung Algorithmus verwendet , in erster Linie in 8-Bit - PCM - digitalen Telekommunikationssystemen in Nordamerika und Japan . Es ist eine von zwei Versionen des G.711- Standards von ITU-T , die andere Version ist die ähnliche A-Law . A-Law wird in Regionen verwendet, in denen digitale Telekommunikationssignale auf E-1-Leitungen übertragen werden, z. B. in Europa.

Kompandierend Algorithmen reduziert den Dynamikbereich eines Audiosignals . In analogen Systemen kann dies das bei der Übertragung erreichte Signal-Rausch-Verhältnis (SNR) erhöhen ; im digitalen Bereich kann es den Quantisierungsfehler reduzieren (und somit das Signal-Quantisierungs-Rausch-Verhältnis erhöhen). Diese SNR-Erhöhungen können stattdessen gegen reduzierte Bandbreite für äquivalentes SNR eingetauscht werden.

Algorithmustypen

Der µ-law-Algorithmus kann in analoger Form und in quantisierter digitaler Form beschrieben werden.

Kontinuierlich

Für eine gegebene Eingabe x lautet die Gleichung für die μ-Gesetz-Codierung

wobei μ = 255 in den nordamerikanischen und japanischen Standards und sgn( x ) die Vorzeichenfunktion ist . Es ist wichtig zu beachten, dass der Bereich dieser Funktion –1 bis 1 beträgt.

Die μ-Gesetz-Entwicklung ist dann durch die inverse Gleichung gegeben:

Diskret

Die diskrete Form ist in der ITU-T-Empfehlung G.711 definiert .

G.711 ist unklar, wie die Werte an der Grenze eines Bereichs zu codieren sind (zB ob +31 auf 0xEF oder 0xF0) codiert. G.191 bietet jedoch Beispielcode in der Sprache C für einen µ-Law-Encoder. Die Differenz zwischen positivem und negativem Bereich, zB der negative Bereich, der +30 bis +1 entspricht, beträgt –31 bis –2. Dies wird durch die Verwendung des 1er-Komplements (einfache Bit-Inversion) anstelle des 2er-Komplements berücksichtigt , um einen negativen Wert während der Codierung in einen positiven Wert umzuwandeln.

Quantisierter μ-Gesetz-Algorithmus
14-Bit-Binär-Linear-Eingangscode Komprimierter 8-Bit-Code
+8158 bis +4063 in 16 Intervallen von 256 0x80 + Intervallnummer
+4062 bis +2015 in 16 Intervallen von 128 0x90 + Intervallnummer
+2014 bis +991 in 16 Intervallen von 64 0xA0 + Intervallnummer
+990 bis +479 in 16 Intervallen von 32 0xB0 + Intervallnummer
+478 bis +223 in 16 Intervallen von 16 0xC0 + Intervallnummer
+222 bis +95 in 16 Intervallen von 8 0xD0 + Intervallnummer
+94 bis +31 in 16 Intervallen von 4 0xE0 + Intervallnummer
+30 bis +1 in 15 Intervallen von 2 0xF0 + Intervallnummer
0 0xFF
-1 0x7F
−31 bis −2 in 15 Intervallen von 2 0x70 + Intervallnummer
−95 bis −32 in 16 Intervallen von 4 0x60 + Intervallnummer
−223 bis −96 in 16 Intervallen von 8 0x50 + Intervallnummer
−479 bis −224 in 16 Intervallen von 16 0x40 + Intervallnummer
−991 bis −480 in 16 Intervallen von 32 0x30 + Intervallnummer
−2015 bis −992 in 16 Intervallen von 64 0x20 + Intervallnummer
−4063 bis −2016 in 16 Intervallen von 128 0x10 + Intervallnummer
−8159 bis −4064 in 16 Intervallen von 256 0x00 + Intervallnummer

Implementierung

Der μ-law-Algorithmus kann auf verschiedene Weise implementiert werden:

Analog
Verwenden Sie einen Verstärker mit nichtlinearer Verstärkung, um die Kompandierung vollständig im analogen Bereich zu erreichen.
Nichtlinearer ADC
Verwenden Sie einen Analog-Digital-Wandler mit Quantisierungspegeln, die ungleichmäßig beabstandet sind, um dem μ-law-Algorithmus zu entsprechen.
Digital
Verwenden Sie die quantisierte digitale Version des μ-law-Algorithmus, um Daten zu konvertieren, sobald sie sich im digitalen Bereich befinden.
Software/DSP
Verwenden Sie die kontinuierliche Version des μ-law-Algorithmus, um die kompandierten Werte zu berechnen.

Nutzungsbegründung

Die µ-Gesetz-Codierung wird verwendet, weil Sprache einen großen Dynamikbereich hat . Bei der analogen Signalübertragung gehen bei relativ konstantem Hintergrundrauschen die feineren Details verloren. Da die Detailgenauigkeit ohnehin beeinträchtigt ist und das Signal von einem Menschen als Audio wahrgenommen werden soll, kann man sich die Tatsache zunutze machen, dass die wahrgenommene akustische Intensität oder Lautstärke logarithmisch ist, indem man das Signal mit einem logarithmischen compress komprimiert -Ansprech-Operationsverstärker ( Weber-Fechner-Gesetz ). In Telekommunikationsschaltungen wird das meiste Rauschen in die Leitungen eingespeist, so dass das beabsichtigte Signal nach dem Kompressor im Vergleich zu einer unkomprimierten Quelle als deutlich lauter als das statische Signal wahrgenommen wird. Dies wurde zu einer gängigen Lösung, und so wurde vor der gemeinsamen digitalen Verwendung die μ-law-Spezifikation entwickelt, um einen interoperablen Standard zu definieren.

In digitalen Systemen hatte dieser bereits vorhandene Algorithmus den Effekt, die Anzahl der Bits, die zum Kodieren einer erkennbaren menschlichen Stimme erforderlich sind, erheblich zu reduzieren. Unter Verwendung des μ-Gesetzes konnte ein Sample in nur 8 Bit effektiv codiert werden, eine Samplegröße, die praktischerweise der Symbolgröße der meisten Standardcomputer entsprach.

Die μ-Gesetz-Codierung reduziert effektiv den Dynamikbereich des Signals, wodurch die Codiereffizienz erhöht wird, während das Signal so vorgespannt wird, dass ein Signal-zu- Verzerrungsverhältnis resultiert , das größer ist als das durch lineare Codierung für eine gegebene Anzahl von Bits erhaltene .

μ-Gesetz-Decodierung, wie sie mit der im Internet allgemein verfügbaren C-Sprachroutine g711.c von Sun Microsystems erzeugt wird.

Der μ-law-Algorithmus wird auch im .au-Format verwendet , das mindestens auf die SPARCstation 1 von Sun Microsystems als native Methode zurückgeht, die von der /dev/audio-Schnittstelle verwendet wird, die als De-facto-Standard für Sound unter Unix weit verbreitet ist Systeme. Das au-Format wird auch in verschiedenen gängigen Audio- APIs wie den Klassen im Java-Paket sun.audio in Java 1.1 und in einigen C# -Methoden verwendet.

Dieses Diagramm veranschaulicht, wie das μ-law die Abtastung auf die kleineren (weicheren) Werte konzentriert. Die horizontale Achse repräsentiert die Byte-Werte 0-255 und die vertikale Achse ist der linear decodierte 16-Bit-Wert der µ-Law-Codierung.

Vergleich mit A-Gesetz

Der μ-law-Algorithmus bietet einen etwas größeren Dynamikbereich als der A-law auf Kosten schlechterer proportionaler Verzerrungen für kleine Signale. A-law wird vereinbarungsgemäß für eine internationale Verbindung verwendet, wenn es von mindestens einem Land verwendet wird.

Siehe auch

Verweise

  1. ^ a b "Waveform Coding Techniques - Cisco" . 2006-02-02 . Abgerufen 2020-12-07 .
  2. ^ "ITU-T-Empfehlung G.711" .

 Dieser Artikel enthält  gemeinfreies Material aus dem Dokument General Services Administration : "Federal Standard 1037C" .

Externe Links