TAK

steht für (T)om's verlustfreier (A)udio(k)ompressor. Nebenbei ist es eine Reminiszenz an eine (nicht sehr menschenfreundliche) Figur aus Stephen King's "Regulators". Frühe halböffentliche Evaluationsversionen firmierten unter dem Arbeitstitel YALAC.

Merkmale

Links zu TAK

Download

Das folgende ZIP-Archiv enthält die aktuelle Version TAK 2.3.0 incl. Zubehör (Winamp plugin, SDK usw.):

TAK_2.3.0 Final Größe: 947 KB

Applikationen mit TAK-Unterstützung

caudec - Multiprozess Transcoder
dsfTAKSource - TAK DirectShow Source Filter
Plugin für die Wiedergabe in jedem Media Player, der DirectShow unterstützt (z.B. Windows Media Player, MediaPlayerClassic, …).
Exact Audio Copy (EAC) - Audio grabber
Kann die Audiodaten im TAK-Format speichern. Die folgenden Anleitungen zeigen, wie es geht: EAC and TAK auf Hydrogenaudio.org und EAC+TAK encoder+foobar2000 auf hqshare.net.
Foobar2000 - Audioplayer
Enkodierung, Dekodierung, Tagging und Wiedergabe. Die folgenden Anleitungen zeigen, wie es geht: TAK Wiki auf hydrogenaudio.org sowie EAC+TAK encoder+foobar2000 auf hqshare.net. Das benötigte Wiedergabeplugin gibt es hier: TAK Decoder 0.4.7
GermaniX Transcoder - Transcoder
ImgBurn - Images brennen
Mp3tag - Tag Editor
Quintessential Player - Media Player
Wiedergabe von TAK-Dateien. Das benötigte Plugin gibt es hier.
shntool - Verarbeitung und Analyse von (komprimierten) WAVE-Audiodateien
Winamp - Media Player
Wiedergabe von TAK-Dateien. Benötigt mein Winamp-Plugin (s. Download).
XMPlay - Audio Player
Wiedergabe von TAK-Dateien. Benötigt mein Winamp-Plugin (s. Download).
xrecode II - Transcoder

Informationen und Support

Ich bin regelmäßig im Forum "Lossless / Other Codecs" auf Hydrogenaudio aktiv. Dies ist derzeit der beste Ort um Unterstützung zu bekommen, Verbesserungsvorschäge zu machen oder Fehler zu berichten.

Vergleichstests

ktf's Vergleichstest. Nach meiner Ansicht aktuell der aussagekräftigste Test.
"Comparisons" auf der offiziellen FLAC-Homepage. Zitiert ktf's Test (s.o.).
Squeeze Chart - Audio

Audiokompression

Audiokompressoren (nicht zu verwechseln mit Dynamikkompressoren!) werden eingesetzt, um den Platzbedarf von Audiodateien (z.B. Musik) zu reduzieren. Durch den Vorgang der Kompression bzw. Kodierung wird eine möglichst kompakte Repräsentation der Daten erzeugt und in eine Datei geschrieben. Das Gegenstück stellt die Dekomprimierung bzw. Dekodierung dar, die die komprimierten Daten wieder in eine Form zurückverwandelt, die zur Wiedergabe oder Weiterverarbeitung in Audiosoftware geeignet ist.

Verlustfrei vs. verlustbehaftet

TAK gehört zur Famile der verlustfreien Audiokompressoren wie auch z.B. Flac, WavPack, Monkey's Audio usw. Im Gegensatz zu verlustbehafteten Audiokompressionsverfahren wie z.B. MP3 erlauben sie eine originalgetreue Wiederherstellung der Originaldatei aus den komprimierten Daten. Dabei entstehen keinerlei Verluste; das Ergebnis stellt eine bitgenaue Kopie des Originals dar. Verlustfreie Audiokompressoren verhalten sich also ähnlich wie die bekannten ZIP-Pack-Programme, die ja in der Lage sind, ihnen anvertraute Daten wie z.B. Texte unverfälscht zu reproduzieren.

Verlustbehaftete Audiokompressoren dagegen entfernen unwiederbringlich Bestandteile des urspünglichen Audiosignals, die von Menschen mit normalem Hörvermögen üblicherweise nicht wahrgenommen werden. Das Originalsignal kann also nicht wiederhergestellt werden.

Dafür erzielen verlustbehaftete Audiokompressoren deutlich höhere Kompressionsraten, erzeugen also deutlich kleinere Dateien als verlustfreie Kompressoren. Eine MP3-Datei, die mit der gängigen konstanten Bitrate von 128 KBit komprimiert wurde, ist um etwa den Faktor 11 kleiner als die Originaldatei im CD-Audio Format. Verlustfreie Kompressoren erzielen dagegen im Schnitt nur eine Reduktion um den Faktor 2. (Tatsächlich schwankt der Kompressionsfaktor in Abhängigkeit vom Audiomaterial: So lassen sich z.B. leisere Audiosignale leichter komprimieren als laute).

Anwendungsgebiete verlustfreier Audiokompression

Während der Umgang mit verlustbehafteten Audiokompressionsverfahren wie MP3 heutzutage für die meisten Musikliebhaber und Computernutzer alltäglich ist, fristen verlustfreie Verfahren bislang eher ein Nischendasein. Nichtdestotrotz sind sie den verlustbehafteten Verfahren in vielen Fällen überlegen oder können sie hervorragend ergänzen, z.B.:

Musikproduktion

Bei der Musikproduktion durchläuft das Originalsignal meist eine Vielzahl von Bearbeitungsschritten. Sollen Zwischenergebnisse zunächst gespeichert und später weiterverarbeitet werden, sind Verluste gänzlich inakzeptabel, da die Verluste aller Speichervorgänge kumulieren und schnell zu hörbaren Verfälschungen führen. Ferner werden Signalveränderungen der verlustbehafteten Kompression, die normalerweise nicht hörbar sind, durch die üblichen Klangmanipulationen der Produktion schnell über die Wahrnehmungsgrenze gehoben.

Archivierung

Bei der Archivierung privater Musikbestände mag eine verlustbehaftete Kompression in einem Format, das für den Anwender keine hörbaren Artefakte erzeugt, zunächst ausreichend erscheinen. Soll aber später ein Wechsel zu einem anderen verlustbehafteten Format durchgeführt werden (z.B. um Kompatibilität zu neueren Wiedergabegeräten herzustellen), besteht die Gefahr, daß die Kumulation der Signalverfälschungen des ursprünglichen sowie des neuen Kompressionsverfahrens eben doch zu hörbaren Artefakten führt.

Garantierte Klangqualität

Trotz aller beeindruckenden Fortschritte der verlustbehafteten Kompressionsverfahren lassen sich fast immer Musikstücke finden, die zu hörbaren Artefakten führen. Derzeit können nur verlustfreie Verfahren eine unverfälschte Klangqualität garantieren.

Funktionsprinzip

Prädiktion

Um eine kompaktere Repräsentation -also Kompression- der Daten zu erreichen, suchen alle verlustfreien Audiokompressoren nach Regelmäßigkeiten im Audiosignal. So besteht zumeist eine starke Abhängigkeit zwischen aufeinanderfolgenden Signalwerten, so daß nachfolgende Werte aus den vorangegangenen vorhergesagt werden können. Dazu müssen einige geeignete Parameter berechnet werden, die die Art der Abhängigkeit möglichst gut beschreiben. Diese können dann zur Vorhersage bzw. Prädiktion eingesetzt werden. Anstelle der Originaldaten speichert der Kodierer dann die Differenzen zwischen der Vorhersage und dem Originalsignal, also den Prädiktionsfehler. Da die Differenzen bei einer guten Prädiktion viel kleiner sind als die Originalwerte und da kleinere Werte weniger Speicherplatz benötigen, erzielt man eine Kompression.

Im Dekodierer wird dieselbe Prädiktion vorgenommen, wobei der vom Kodierer gespeicherte Prädiktionsfehler zu den vorhergesagten Werten addiert wird, um die Originalwerte zurückzuerhalten.

Die Berechnung der otpimalen Parameter für die Prädiktion ist der zeitaufwendigste Vorgang der Kompression.

Adaption

Prädiktionsparameter müssen zu dem Signal passen, für dessen Vorhersage sie eingesetzt werden sollen. Verändern sich entscheidende Aspekte des Audiosignals, muß eine Neuberechnung bzw. Adaption der Prädiktionsparameter durchgeführt werden.

Asymmetrische vs. symmetrische Kompressoren

TAK basiert im wesentlichen auf adaptiver linearer Vorwärts-Prädiktion. Dieselbe Technik wird z.B. von FLAC, LPAC, Mpeg4Als (in der Standardeinstellung) und Shorten verwendet.

Alle genannten Programme gehören zur Klasse der asymmetrischen Audiokompressoren. Die Asymmetrie bezieht sich auf den unterschiedlichen Rechenaufwand für den Vorgang der Kodierung und Dekodierung.

Alle für die Kompression relevanten Parameter (vor allem die der Prädiktion) werden einmalig während der Kodierung berechnet und in der komprimierten Datei gespeichert. Der Dekodierer liest diese Parameter einfach aus der Datei, braucht die entsprechenden Berechnungen also nicht zu wiederholen und kann so sehr hohe Geschwindigkeiten erzielen. Ferner ist es möglich, den Rechenaufwand im Kodierer zu erhöhen, um bessere Parameter für eine stärkere Kompression zu erhalten, ohne daß dies den Rechenaufwand im Dekodierer signifikant steigern würde. In der Folge sinkt die Verarbeitungsgeschwindigkeit des Kodierers, während die des Dekodierers konstant (hoch) bleibt.

Bei symmetrischen Verfahren (eingesetzt z.B. in WavPack, Monkey's Audio, OptimFrog, LA) dagegen werden die Berechnungen der Kompressionsparameter sowohl im Kodierer als auch im Dekodierer durchgeführt, sodaß auf beiden Seiten ungefähr derselbe Rechenaufwand entsteht. Wird der Rechenaufwand im Enkodierer erhöht, um die Kompressionsleistung zu verbessern, steigt der Rechenaufwand im Dekodierer gleichermaßen.

Aber symmetrische Verfahren bieten auch Vorteile. Sie verwenden in der Regel die sogenannte Rückwärtsprädiktion, die die Kompressionsparameter kontinuierlich aufgrund des vorangegangenen Signals berechnet. Da dies gleichermaßen im Kodierer wie im Dekodierer geschieht, brauchen die Kompressionsparameter nicht gespeichert werden, was Platz spart und die Kompressionsrate erhöht. Und da die Parameter nicht gespeichert werden müssen, können sie beliebig oft bzw. schnell an Veränderungen des Audiosignal angepaßt werden, was die Kompressionsrate weiter erhöht. Symmetrische Verfahren mit Vorwärts-Prädiktion dagegen können diese Adaption nur in größeren Intervallen vornehmen, da andernfalls der Speicherbedarf für die häufiger aktualisierten Kompressionsparameter den Gewinn der schnellen Anpassung übersteigen würde.

Anmerkung: Auf die Möglichkeit, beide Verfahren zu kombinieren, soll an dieser Stelle nicht eingegangen werden.

Leistungsvergleich der Verfahren

Vergleichstests der Leistung aktuell gängiger verlustfreier Kompressionsprogramme bestätigen im großen und ganzen die Vorhersagen, die sich aus den unterschiedlichen Funktionsprinzipien ergeben: Asymmetrische Verfahren dekodieren deutlich schneller, während symmetrische Verfahren die höchsten Kompressionsraten erzielen können, wenn auch auf Kosten der Dekodiergeschwindigkeit.

TAK's Technologie

Kompressor

Bei der Entwicklung von TAK standen diese Anforderungen in Vordergrund:

Das gesamte Design wurde auf hohe Geschwindigkeit ausgerichtet und unterscheidet sich in einigen Punkten deutlich von dem anderer asymmetrischer Kompressoren.

Einige Merkmale:

Containerformat

Die vom Enkodierer erzeugten komprimierten Frames werden in ein eigenes, proprietäres Containerformat verpackt, das folgende Merkmale aufweist:

Zukunft

Meine To-Do-Liste

geplanter Erweiterungen:

Die Position in der Liste wird durch wenistens zwei Faktoren bestimmt: die Priorität, die eine Erweiterung für mich (und die Anwender) hat, sowie durch den erforderlichen Aufwand. So messe ich der Unterstützung für andere Plattformen eigentlich eine recht hohe Bedeutung zu, habe sie aber aufgrund des beträchtlichen Aufwandes zunächst zurückgestellt.

Entwicklungsgeschichte

Meine ersten Gehversuche im Bereich (verlustbehafteter) Audiokompression erfolgten bereits 1994. Ich erfoschte eine Reihe eher simpler Verfahren, die zunächst mehr oder weniger auf ADPCM (Adaptive Delta Pulse Code Modulation) basierten und von mir zur Kompression von Sprachaufnahmen eingesetzt wurden.

Etwa 1996 wandte ich mich der verlustfreien Audiokompression mittels linearer Prädiktion zu. Da ich kaum Ahnung von den Standardverfahren der digitalen Signalverarbeitung hatte, nutzte ich zunächst eine (laaangsame) multiple Regression zur Bestimmung der Pädiktionskoeffizienten.

1997 brachte mir einen Internetzugang und es dauerte nicht lange, bis ich auf den Audiokompressor Shorten stieß. Auch wenn Shorten aus heutiger Sicht nicht mehr konkurrenzfähig ist, sollte seine Bedeutung für die Entwicklung der Audiokompression keinesfalls unterschätzt werden. Zum einen war es der erste Quasi-Standard für den Austauch verlustfrei komprimierter Audiodateien via Internet, zum anderen haben sein Quellcode und die ausführliche Dokumentation der eingesetzten Verfahren sicher vielen Entwicklern anderer Kompressoren als Einstig und Anregung gedient. Mir jedenfalls zeigte es ein schnelleres Verfahren zur Berechnung der Prädiktionskoeffizienten, nämlich den Levinson-Durbin-Algorithmus.

Mein anfängliche Euphorie darüber, wie leicht es mir fiel, mittels meiner Verfahren deutlich bessere Kompressionsergebnisse als Shorten zu erzielen, war dahin, als ich auf Monkey's Audio stieß. Es war meinem damaligen Entwicklungsstand in jeder Hinsicht überlegen: Es komprimierte nicht nur besser sondern dazu auch noch mit höherer Geschwindigkeit! In den Folgejahren konzentrierte sich meine Entwicklungsarbeit darauf, diesen Vorsprung aufzuholen.

Ende März 2006 war -salopp gesagt- "die Luft raus". Ich hatte meine Ziele erreicht und sah keine Möglichkeit mehr, aus meinem Design deutliche Verbesserungen herauszuarbeiten. Da ich mir nicht sicher war, was ich nun sinnvolles mit dem Ergebnis meiner Arbeit anstellen sollte, fragte ich meine potentielle Zielgruppe im renomierten Audioforum hydrogenaudio.org: Yet another lossless audio compressor: Braucht die Welt ein weiteres verlustfreies Audiokompressionsverfahren?

Dieser Post brachte einiges an Dynamik in die weitere Entwicklungsgeschichte. Zunächst versorgte mich die überwiegend positive Resonanz auf die von mir veröffentlichten Daten zur Kompressionsleistung mit neuer Motivation. Weiterer Antrieb erwuchs aus meinem ausgesprochen schlechten Timing: Wer als Neuling ausgerechnet am 1. April überraschend gute Ergebnisse seines unveröffentlichten Programmes postet, darf sich nicht beklagen, wenn ihm die Hälfte der Leser nicht glaubt...

Da ich mich nun in Beweisnot sah, entwickelte ich innerhalb weniger Tage einen funktionsfähigen Prototypen (YALAC V0.01) und schickte ihn an einen kleinen Kreis interessierter Tester aus den Reihen der Forumsmitglieder.

Versehen mit neuer Motivation und mit teilweise unglaublich umfangreicher Unterstützung der Tester verbrachte ich die folgenden Monate mit Verbesserungen der Kompressionsleistung und vor allem der Geschwindigkeit (es war doch noch einiges rauszukitzeln...). Die Optimierungen wurden bis zur Version V0.10 fortgesetzt. Danach begann die Arbeit am Streaming-Support, der Finalisierung des Dateiformates sowie an der Verbesserung der Anwenderfreundlichkeit.

Die erste finale Version 1.0 wurde am 26.1.07 veröffentlicht.

Links zu anderen Audiokompressoren

FLAC
La
Lpac
Monkey's Audio
Mpeg4Als
OptimFrog
Shorten
WavPack