Codec 2 ist ein patentfreier Open- Source - Sprachcodec ( Sprachcodierung ) mit niedriger Bitrate . [ 1 ] Codec 2 komprimiert Sprache mittels Sinuscodierung , einem speziell für die menschliche Sprache entwickelten Verfahren . Bitraten von 3200 bis 450 Bit/s wurden bereits erfolgreich realisiert. Codec 2 wurde für den Einsatz im Amateurfunk und anderen Anwendungen mit hoher Sprachkomprimierung entwickelt.
Überblick
Der Codec wurde von David Grant Rowe unter Mitwirkung und in Zusammenarbeit mit anderen Forschern (z. B. Jean-Marc Valin von Opus ) entwickelt. [ 2 ]
Codec 2 umfasst Codec-Modi mit 3200, 2400, 1600, 1400, 1300, 1200, 700 und 450 Bit/s. Er übertrifft die meisten anderen Sprachcodecs mit niedriger Bitrate . Beispielsweise benötigt er nur die halbe Bandbreite von Advanced Multi-Band Excitation, um Sprache in vergleichbarer Qualität zu codieren. Der Sprachcodec verwendet 16-Bit -PCM- abgetastetes Audio und gibt gepackte digitale Bytes aus. Bei der Übertragung gepackter digitaler Bytes gibt er PCM-abgetastetes Audio aus. Die Audio-Abtastrate ist auf 8 kHz festgelegt.
Die Referenzimplementierung ist Open Source und frei in einem GitHub- Repository verfügbar . [ 3 ] Der Quellcode wird unter den Bedingungen der GNU Lesser General Public License (LGPL) Version 2.1 veröffentlicht. [ 4 ] Er ist in C programmiert und der aktuelle Quellcode erfordert Gleitkommaarithmetik , obwohl der Algorithmus selbst diese nicht benötigt. Das Referenzsoftwarepaket enthält außerdem ein digitales Sprachmodem mit Frequenzmultiplexverfahren (FDMM) und eine grafische Benutzeroberfläche auf Basis von WxWidgets . Die Software wird unter Linux entwickelt; neben einer Version für Apple macOS wird auch eine Portierung für Microsoft Windows mit Cygwin angeboten .
Der Codec wurde auf verschiedenen Konferenzen vorgestellt und erhielt den ARRL Technical Innovation Award 2012 [ 5 ] sowie den Best Presentation Award der Linux Australia Conference [ 6 ] .
Technologie
Intern arbeiten parametrische Audiocodierungsalgorithmen mit 10 ms langen PCM-Frames unter Verwendung eines Modells der menschlichen Stimme. Jedes dieser Audiosegmente wird als stimmhaft (Vokal) oder stimmlos (Konsonant) deklariert.
Codec 2 verwendet Sinuscodierung zur Sprachmodellierung, die eng mit der von Mehrband- Anregungscodecs verwandt ist. Die Sinuscodierung basiert auf Regelmäßigkeiten (Periodizität) im Muster der Obertonfrequenzen und überlagert harmonische Sinuswellen. Gesprochenes Audio wird rekonstruiert, indem Sprache als Summe harmonisch verwandter Sinuswellen mit unabhängigen Amplituden, sogenannten Linienspektralpaaren (LSP), modelliert wird, die der Grundfrequenz (Tonhöhe) der Sprecherstimme überlagert sind. Die (quantisierte) Tonhöhe und die Amplitude (Energie) der Harmonischen werden codiert und zusammen mit den LSPs in einem digitalen Format über einen Kanal übertragen. Die LSP-Koeffizienten repräsentieren das Modell der linearen prädiktiven Codierung (LPC) im Frequenzbereich und ermöglichen eine robuste und effiziente Quantisierung der LPC-Parameter. [ 7 ]
Die digitalen Bytes liegen im Bitfeldformat vor und sind zu Bytes zusammengefasst. Optional werden diese Bitfelder vor der Gruppierung grau codiert . Die Gray-Codierung kann beim Senden von Rohdaten hilfreich sein, normalerweise gibt eine Anwendung die Bitfelder jedoch einfach aus. Die Bitfelder bilden die verschiedenen Parameter, die gespeichert oder ausgetauscht werden (Tonhöhe, Energie, Stimmhaftigkeit, LSPs usw.).
Im Modus 3200 werden beispielsweise 20 ms Audio in 64 Bit umgewandelt. Somit werden alle 20 ms (50 Mal pro Sekunde) 64 Bit ausgegeben, was einer minimalen Datenrate von 3200 Bit/s entspricht. Diese 64 Bit werden als 8 Byte an die Anwendung gesendet, die die Bitfelder entweder entpacken oder die Bytes über einen Datenkanal übertragen muss.
Ein weiteres Beispiel ist Modus 1300, der 40 ms Audio empfängt und alle 40 ms (25 Mal pro Sekunde) 52 Bit ausgibt, was einer minimalen Datenrate von 1300 Bit/s entspricht. Diese 52 Bit werden als 7 Byte an die Anwendung oder den Datenkanal gesendet.
Annahme
Codec 2 wird aktuell in mehreren Funkgeräten und Software Defined Radio Systemen verwendet:
- FreeDV [ 8 ]
- FlexRadio 6000 Serie [ 9 ]
- SM1000 [ 10 ]
- Quisk [ 11 ]
- Projekt M17 [ 12 ]
- DTC Sentry Mesh 6161 MANET-Funkgerät [ 13 ]
Codec 2 wurde auch in FreeSWITCH integriert und es ist ein Patch für die Unterstützung in Asterisk verfügbar .
Auf dem Amateurfunk- CubeSat LilacSat-1 (Rufzeichen ON02CN, QB50- Konstellation), der 2017 von der Internationalen Raumstation aus gestartet und anschließend ausgesetzt wurde, befand sich ein digitaler FM-zu-Codec2-Sprachrepeater in der Erdumlaufbahn. [ 14 ]
Geschichte
Der bekannte Verfechter freier Software und Funkamateur Bruce Perens setzte sich für die Entwicklung eines freien Sprachcodecs für Datenraten unter 5 kbit/s ein. Da Perens selbst nicht über die nötigen Vorkenntnisse verfügte, wandte er sich 2008 an Jean-Marc Valin, der ihn dem leitenden Entwickler David Grant Rowe vorstellte. Rowe hatte bereits mehrfach mit Valin an Speex gearbeitet . Auch er war Funkamateur (Rufzeichen VK5DGR ) und besaß Erfahrung in der Entwicklung und Anwendung von Sprachcodecs und anderen Signalverarbeitungsalgorithmen für Sprachsignale. In den 1990er-Jahren promovierte er im Bereich Sprachcodierung und war an der Entwicklung eines der ersten Satellitentelefonsysteme ( Mobilesat ) beteiligt.
Er sagte zu und gab am 21. August 2009 seine Entscheidung bekannt, an einem Format zu arbeiten. Dabei baute er auf den Forschungsergebnissen seiner Doktorarbeit auf. [ 15 ] [ 16 ] Die zugrundeliegende sinusförmige Modellierung geht auf Entwicklungen von Robert J. McAulay und Thomas F. Quatieri (MIT Lincoln Labs) aus der Mitte der 1980er Jahre zurück.
Im August 2010 veröffentlichte David Rowe die Version 0.1 alpha. [ 17 ] Version 0.2 wurde gegen Ende 2011 veröffentlicht und führte einen Modus mit 1400 Bit/s sowie signifikante Verbesserungen bei der Quantisierung ein.
Im Januar 2012 trug Jean-Marc Valin auf der linux.conf.au zur Verbesserung der Quantisierung von Linienspektralpaaren bei, mit der Rowe weniger vertraut ist. [ 18 ] Nach mehreren Änderungen der verfügbaren Bitratenmodi im Winter und Frühjahr 2011/2012 standen ab Mai desselben Jahres Modi mit 2400, 1400 und 1200 Bit/s zur Verfügung.
Der Codec 2 700C, ein neuer Modus mit einer Bitrate von 700 Bit/s, wurde Anfang 2017 fertiggestellt. [ 19 ]
Im Juli 2018 wurde ein experimenteller 450-Bit/s-Modus demonstriert, der im Rahmen einer Masterarbeit an der Universität Erlangen-Nürnberg entwickelt wurde. Durch geschicktes Training der Vektorquantisierung konnte die Datenrate basierend auf dem Prinzip des 700C-Modus weiter reduziert werden. [ 20 ]
Referenzen
- ^ "DCC2011-Codec2-VK5DGR" (PDF) .
- ^ „Ein Pitch-Energy-Quantisierer für Codec2“ . Archiviert vom Original am 19.06.2015.
- ^ „Repository für Codec 2 Source“ . GitHub . 14. Oktober 2021.
- ^ „Codec2 – ein Open-Source-Sprachcodec mit geringer Bandbreite“ . Slashdot . 21. September 2010.
- ^ „ARRL-Vorstand gibt Preisträger auf der zweiten Sitzung 2012 bekannt“ . www.arrl.org .
- ^ „Linux Australia 2012 Konferenz“ . Abgerufen am 2. August 2012 .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ „Techniken zur harmonischen Sinuscodierung“ (PDF) . Archiviert vom Original (PDF) am 15.05.2013 . Abgerufen am 12.04.2013 .
- ^ "FreeDV: Open Source Amateur Digital Voice – Where Amateur Radio Is Driving The State of the Art" .
- ^ „FreeDV, CODEC2 und die WaveformAPI“ . Archiviert vom Original am 2. April 2015. Abgerufen am 6. März 2015 .
- ^ „Vorstellung des SM1000 Smart Mic – Rowetel“ . 21. Mai 2014.
- ^ "Quisk, ein Software Defined Radio (SDR)" . james.ahlstrom.name .
- ^ „M17-Protokollbeschreibung“ . GitHub .
- ^ https://www.dtccodan.com/products/sentry_mesh_6161#specifications
- ^ „QB-50-Konstellationssatelliten von der ISS ausgesetzt“ . Website der American Radio Relay League . 15.11.2017 . Abgerufen am 31.03.2019 .
- ^ „Techniken zur harmonischen Sinuscodierung“ (PDF) . Archiviert vom Original (PDF) am 15.05.2013 . Abgerufen am 12.04.2013 .
- ^ „Open Source Low Rate Speech Codec Part 1 – Rowetel“ . 21. August 2009.
- ^ "Codec2 V0.1 Alpha veröffentlicht – Rowetel" . 25. August 2010.
- ^ „Ein Pitch-Energy-Quantisierer für Codec2“ .
- ^ „Open-Source-Codec kodiert Sprache mit nur 700 Bit pro Sekunde“ . Slashdot . 13. Januar 2017. Abgerufen am 31. März 2019 .
- ^ „Codec2 HF digitale Sprachübertragung mit 450 bps“ . Southgate Amateur Radio News . 08.07.2018 . Abgerufen am 31.03.2019 .