MP3-Kompression: einfache Erklärung



  • Ich suche eine einfache Erklärung der MP3-Kompression. Wikipedia ist mir zu komplex und die anderen Googlesuchergebnisse zu unkonkret.

    Wenn ich das recht verstehe, macht man eine Fouriertransformation und wirft niedrige und hohe Frequenzen raus? Und dann eine Huffmankodierung?



  • Die zwei Grundprinzipien, die dahinter stehen sind
    (1) Irrelevanzreduktion
    (2) Redundanzreduktion

    Bei dem ersten geht's darum, nur das "nötigste" zu übertragen. Im Falle von MP3 passiert das u.a. durch Wegschneiden typischerweise hoher Frequenzen aber hauptsächlich durch das "ungenaue Abspeichern" des Rests. Das Fachwort dafür ist Quantisierung. Beispiel: Wenn Du 16-Bit PCM nach 8-Bit PCM konvertierst, dann ist das Ergebnis nur noch halb so groß aber auch etwas verrauschter. Aber Rauschen fällt uns immer nur dort auf, wo "sonst nichts anderes ist". In einem MP3-Encoder gibt es einen Schritt, der für verschiedene Zeit/Frequenzbereiche zu berechnen versucht, wie stark das Signal an dieser Stelle quantisiert werden darf, ohne dass wir einen Unterschied hören. Meistens soll das Quantisierungsrauschen nämlich "unter" dem Nutzsignal bleiben.

    Bei dem, was übrig bleibt, gilt es, es noch möglichst kompakt zu kodieren. Dazu werden bei MP3 "variable-length codes" benutzt (ähnlich wie Morse Codes, die oft vorkommende Buchstaben wie z.B. das E auf etwas sehr kurzes abbildet). Das nennt man auch "entropy coding". Ein Beispiel ist das Huffman-Verfahren, was bei MP3 zum Einsatz kommt. Im MP3-Standard stehen vordefinierte Code-Tabellen, die wahrscheinlich per Huffman-Algorithmus mal berechnet worden sind.

    Die sogenannte Filterbank, die MP3 verwendet, ist dazu da, das Signal in einer anderen Form darzustellen, die (1) und (2) vereinfachen; denn es ist in dieser Darstellung einfacher unterschiedliche Frequenzbereiche unterschiedlich stark zu quantisieren zum Beispiel. Diese Transformation ist auch gleichzeitig eine Art "Dekorrelation", was eine Art von Redundanzreduktion ist. Genaueres dazu erfährt man, wenn man nach "transform coding" sucht.

    Einfach genug?



  • Danke. Was mich besonders interessiert ist der verlustbehaftete Teil von MP3. Kannst du noch etwas mehr zur Quantisierung sagen?



  • Das Signal wird in ein (diskretes) Frequenzspektrum umgewandelt (was noch verlustfrei ist).
    D.h. du hast da eine Reihe von Frequenzen, und zu jeder Frequenz die Info wie laut diese in dem aktuellen Block ist.

    Dabei kann es verflixt viele verschiedene Lautstärken geben, bei 16 Bit sind das zigtausende.
    Unterschiede von weniger als 0.5 dB kann man aber quasi nicht hören - was auf den gesamten möglichen Dynamikumfang eines 16 Bit Signals hochgerechnet weniger als 200 verschiedene Stufen sind.

    Also quantisiert man diese zigtausenden Levels. D.h. man fasst mehrere benachbarte zu einem zusammen. Bei JPEG wird das selbe gemacht, dort passiert es einfach indem die Levels durch einen Divisor geteilt werden. Also linear. Wie das bei MP3 funktioniert weiss ich nicht, könnte sein dass es hier nicht linear gemacht wird.

    Und dann werden noch Frequenzen komplett auf 0 (="still") gesetzt wo das psychoakustische Modell des Encoders der Meinung ist dass man sie eh nicht hören kann. z.B. wenn 1000 Hz gerade mit 90dB spielen, und 900 Hz gerade mit 50 dB, dann kannst du die 900 Hz vermutlich nicht hören. Also *gar nicht* - man hört schlicht den Unterschied zwischen einem reinen 1000 Hz Ton und einem mit nem 40 dB leiseren 900 Hz Ton daneben nicht.
    (Die Zahlen sind jetzt aus der Luft gegriffen - mag sein dass man in diesem konkreten Beispiel den Unterschied doch hören kann. Aber das Prinzip stimmt, und darum geht's ja.)

    Dadurch ergeben sich dann:
    * Viele Einträge die Null sind
    * Viel weniger verschiedene Zahlen ungleich Null
    Und das lässt sich dann gut komprimieren.



  • 👍 thx



  • Eine "Beobachtung", weil's hier gerade dazupasst...

    Bei MP3 (und vielen anderen verlustbehafteten Kompressions-Formaten) werden die Daten also erstmal in eine andere Darstellung transformiert, in der man dann gezielt Modifikationen vornehmen kann.

    Die Transformation selbst ist dabei oft verlustfrei oder "fast" verlustfrei ("fast" verlustfrei wäre z.B. wenn die rücktransformierten Daten durch Rundungsfehler nicht auf das Bit genau gleich dem Original sind, aber die Unterschied minimal sind -- Unterschied in der letzten Stelle oder so).

    Und in dieser anderen Darstellung modifiziert man die Daten dann so, dass sie danach besser mit einem verlustfreien Algorithmus (z.B. Entropy-Coder etc.) komprimiert werden können.

    Der "Trick" dabei ist nur dass man eine Darstellung + Modifikationsregeln finden muss, die zu guter Kompression führen, aber gleichzeitig kaum bis gar nicht für Menschen mit "unbewaffneten" Sinnesorganen merkbar sind.

    Und weil's hier auch mehr oder weniger dazupasst: Bei MP3 (wie auch den meisten Formaten die ähnliche Techniken verwenden) wurde relativ viel offen gelassen. Wie eben z.B. die Regeln anhand derer bestimmt wird was komplett weggeschnitten werden darf (=Amplitude auf 0 gesetzt) und was nicht. Oder welcher Block wie stark quantisiert wird.

    Da MP3 das beliebteste Musikformat ist (weil es so-gut-wie überall funktioniert), wurde massiv viel Zeit in MP3 Encoder investiert. Und zwar genau in die Modelle/Algorithmen die bestimmen was genau weggeschnitten/quanisiert werden soll etc.

    Was dann zu einer (für mich) überrsachenden Situation führt: MP3 schneidet in Tests bei mittleren Bitraten (100~200 kbps für 44.1 kHz Stereo) signifikant besser ab als die meisten anderen Kompressionsformate -- obwohl die anderen (neueren) Formate technisch weit überlegen sind.
    Einzig OGG hat (ganz knapp) die Nase vorne.



  • hustbaer schrieb:

    Was dann zu einer (für mich) überrsachenden Situation führt: MP3 schneidet in Tests bei mittleren Bitraten (100~200 kbps für 44.1 kHz Stereo) signifikant besser ab als die meisten anderen Kompressionsformate -- obwohl die anderen (neueren) Formate technisch weit überlegen sind.

    für manche Leute klingen Röhrenverstärker und -Bandmaschinen besser als ein Transistorverstärker mit nahezu 0% Verzerrung. Die meßtechnisch neutralste Tonwiedergabe ist nicht zwingend die für jeden subjektiv bestklingende.



  • Ich hab' den Link leider nimmer, aber ich gehe mal davon aus dass die ABX getestet haben.
    Dabei misst man die Fähigkeit zwei verschiedene Signale (oder Verstärker, Kabel, ...) unterscheiden zu können.
    Besser abschneiden heisst dann: konnte von weniger Kandidaten unterschieden werden.

    Man misst also sehr wohl "Neutralität" und nicht was "gut klingt".



  • was "Man misst", entscheiden diejenigen, die messen

    - zum Beispiel ich. Ich habe früher Blindtests mit verschiedenen Kompressionsraten und Bitlängen durchgeführt, und dabei spielte neben der Nullhypothese sehr wohl der subjektive Klangeindruck eine Rolle.


Anmelden zum Antworten