Codec2 ist ein (patent-)freier verlustbehafteter Audio-Codec, der auf verständliche Übertragung menschlicher Sprache bei extrem niedrigen Bitraten spezialisiert ist. Der Codec wurde zur Übertragung von Sprachsignalen über schmalbandige Funkkanäle imAmateurfunk geschaffen. Die Referenzimplementierung unterliegt den Bedingungen von Version 2.1 derGNU Lesser General Public License (LGPL).[1]
Die offene Spezifikation des Verfahrens ermöglicht eine digitale Kommunikation über Amateurfunk-Frequenzen, ohne durch die Verwendung von bisher verfügbarenproprietären Codecs wieAMBE oderMELP zwangsläufig unspezifizierte digitale Inhalte zu übertragen, was Funkamateuren verboten ist.
Codec2 wurde bereits offiziell inFreeSWITCH integriert und es steht einPatch für die Integration inAsterisk zur Verfügung.
Codec2 bietet Modi mit festerBitrate von 3.200, 2.400, 1.600, 1.400, 1.300, 1.200, 700 oder 450 Bit/s. Er verarbeitet und liefertPCM-Daten mit einer Abtastfrequenz von 8 kHz. Die einzelnen (Parameter-)Datenpakete decken jeweils 10 bis 20 (2,4 kBit/s) beziehungsweise 40 (1,4 kBit/s) Millisekunden ab. Die algorithmische Latenz beziffert der Autor auf etwa 100 Millisekunden.DieSprachqualität bewegt sich etwas unter der gewöhnlicher2G-Mobiltelefone und kann sich angeblich bei vergleichsweise deutlich niedrigerer Bitrate mit der von AMBE messen.
DieReferenzimplementierung ist inC programmiert und kommt bisher nicht ohneGleitkomma-Arithmetik aus, wobei das Verfahren an sich dies nicht verlangt.Das Referenz-Software-Paket enthält auch einFDMDV-Software-Modem und eine graphische Oberfläche auf Basis vonFLTK. Die Software wird aufLinux entwickelt und es wird neben einer Linux-Version auch ein mittelsCygwin erstellterWindows-Port angeboten.
Hauptentwickler Rowe vermied grundsätzlich Algorithmen, die von gültigen Patenten betroffen sind, indem er sein Verfahren grundlegend auf jahrzehntelang bekannte Techniken aufbaute. Allerdings ist bis zur Vorstellung auf derlinux.conf.au im Januar 2012 noch keine umfassende Patent-Suche durchgeführt worden.
Das Verfahren arbeitet mit Mitteln derParametrischen Audiokodierung unter Benutzung eines Modells der menschlichen Stimme. Es nutzt unter anderem ein Sinusoidales Modell als Grundverfahren, welches auf Entwicklungen von Robert J. McAulay and Thomas F. Quatieri (MIT Lincoln labs) aus der Mitte der 1980er Jahre zurückgeht und eng mit dem derMulti-Band-Excitation-Codecs verwandt ist.Aus dem Eingangssignal werden Parameter zur Beschreibung von Linienspektrumspaaren (eine Art LPC-Koeffizienten), (Grund-)Tonhöhe, Energie und Stimmhaftigkeit des Signals bestimmt und quantisiert. Auf Empfängerseite wird daraus wieder ein PCM-Signal synthetisiert.Das Sinusoidale Modell stützt sich auf Regelmäßigkeiten (Periodizität) im Muster der Obertonfrequenzen und schichtet harmonisch Sinusoide über einer ermittelten Grundfrequenz.Die Amplituden der Oberfrequenzen werden mitLinear Predictive Coding (LPC) modelliert.
Der prominente Freie-Software-Verfechter undFunkamateurBruce Perens sah den Bedarf an einem freien Sprach-Codec für unter 5 kBit/s. Er sprach 2008Jean-Marc Valin (Speex,Opus) darauf an, welcher ihn mit dem Hauptentwickler David Grant Rowe bekannt machte, der verschiedentlich mit Valin zusammen an Speex gearbeitet hat. Rowe ist selber auch Funkamateur (Rufzeichen VK5DGR) und hat Erfahrung mit der Erstellung und dem Einsatz von Codecs und anderen Signalverarbeitungsalgorithmen für Sprachsignale. Er hat unter anderem in den 1990er-Jahren einen Doktorgrad in Sprachkodierung erlangt und war am Aufbau eines der erstenSatellitentelefonie-Systeme (Mobilesat) beteiligt.
Rowe ließ sich von der Aufgabe überzeugen und gab am 21. August 2009 seine Entscheidung bekannt, an einem entsprechenden Codec arbeiten zu wollen. Er baute auf den Forschungen und Erkenntnissen aus seiner Doktorarbeit[2] auf.[3]Im August 2010 veröffentlichte er Version 0.1 alpha.[4]
Gegen Ende 2011 wurde Version 0.2 veröffentlicht, die einen Modus mit 1.400 Bits/s einführt und wesentliche Verbesserungen bei der Quantisierung bringt.
Im Januar 2012 im Rahmen der linux.conf.au half Jean-Marc Valin mit der Verbesserung der Quantisierung der Linienspektrumspaare, womit sich Rowe weniger auskennt.[5] Nach mehreren Änderungen an den verfügbaren Bitraten-Modi in Winter und Frühjahr 2011/2012 sind seit Mai Modi mit 2.400, 1.400 und 1.200 Bit/s verfügbar.
Im Juli 2018 wurde ein Modus mit 450 Bit/s veröffentlicht, der im Rahmen einer Masterarbeit an der Universität Erlangen-Nürnberg entwickelt wurde. Durch geschicktes Trainieren derVektorquantisierung konnte die Datenrate aufbauend auf dem Prinzip des 700C-Modus weiter verringert werden.