Codec 2 - Codec 2

Codec 2 är en ljud- codec med låg bithastighet ( talkodning ) som är patentfri och öppen källkod . Codec 2 komprimerar tal med sinusformad kodning, en metod specialiserad för mänskligt tal . Bithastigheter på 3200 till 450 bit/s har skapats. Codec 2 har utformats för att användas för amatörradio och andra högkomprimerade röstapplikationer.

Översikt

Codecen utvecklades av David Grant Rowe, med stöd och samarbete från andra forskare (t.ex. Jean-Marc Valin från Opus ).

Codec 2 består av 3200, 2400, 1600, 1400, 1300, 1200, 700 och 450 bit/s codec -lägen. Det överträffar de flesta andra låg bitrate tal codecs . Till exempel använder den halva bandbredden för Advanced Multi-Band Excitation för att koda tal med liknande kvalitet. Talcodec använder 16-bitars PCM- samplat ljud och matar ut digitala byte. När den skickas packade digitala byte matar den ut PCM -samplat ljud. Ljudsamplingshastigheten är fastställd till 8 kHz.

Den referensimplementering är öppen källkod och är fritt tillgänglig i GitHub arkiv. Källkoden släpps enligt villkoren i version 2.1 i GNU Lesser General Public License (LGPL). Den är programmerad i C och nuvarande källkod kräver flytande aritmetik , även om själva algoritmen inte kräver detta. Referensprogramvarupaketet innehåller också ett frekvensdelande multiplex digitalt röstprogramvarumodem och ett grafiskt användargränssnitt baserat på WxWidgets . Programvaran är utvecklad på Linux och en port för Microsoft Windows skapad med Cygwin erbjuds utöver en Apple Macintosh -version.

Codec har presenterats på olika konferenser och har mottagit 2012 ARRL Technical Innovation Award och Linux Australia Conference's Best Presentation Award.

Teknologi

Internt fungerar parametriska ljudkodningsalgoritmer på 10 ms PCM -ramar med hjälp av en modell av den mänskliga rösten. Var och en av dessa ljudsegment förklaras röstade (vokaler) eller ljudlösa (konsonanter).

Codec 2 använder sinusformad kodning för att modellera tal, vilket är nära besläktat med multibandsexcitationskoder . Sinusformad kodning är baserad på regelbundenheter (periodicitet) i mönstret för övertonsfrekvenser och lager harmoniska sinusoider. Talat ljud återskapas genom att modellera tal som en summa av harmoniskt relaterade sinusvågor med oberoende amplituder som kallas linjespektralpar , eller LSP, ovanpå en bestämd grundfrekvens för högtalarens röst (tonhöjd). Den (kvantiserade) tonhöjden och amplituden (energin) hos övertonerna kodas och med LSP: erna utbyts över en kanal i ett digitalt format. LSP -koefficienterna representerar modellen Linear Predictive Coding (LPC) i frekvensområdet och lämpar sig för en robust och effektiv kvantisering av LPC -parametrarna.

De digitala byten har ett bitfältformat som har packats ihop till byte. Dessa bitfält är också valfritt gråkodade innan de grupperas tillsammans. Den grå kodningen kan vara användbar om den skickar rå, men normalt kommer en applikation bara att spränga ut bitfälten. Bitfältet utgör de olika parametrar som lagras eller utbyts (tonhöjd, energi, röstande booleaner, LSP, etc.).

Till exempel har läge 3200 20 ms ljud konverterat till 64 bitar. Så 64 bitar matas ut var 20: e ms (50 gånger per sekund), med en minsta datahastighet på 3200 bit/s. Dessa 64 bitar skickas som 8 byte till applikationen, som måste ta bort bitfälten eller skicka byte över en datakanal.

Ett annat exempel är läge 1300, som skickas med 40 ms ljud och skickar ut 52 bitar var 40 ms (25 gånger per sekund), för en minsta hastighet på 1300 bit/s. Dessa 52 bitar skickas som 7 byte till applikationen eller datakanalen.

Adoption

Codec 2 används för närvarande i flera radioapparater och programvarudefinierade radiosystem

  • FreeDV
  • FlexRadio 6000 -serien
  • SM1000
  • Quisk
  • M17

Codec2 har också integrerats i FreeSWITCH och det finns en patch tillgänglig för stöd i Asterisk .

Det fanns en FM-till-Codec2 digital röstrepeater i jordens bana på amatörradion CubeSat LilacSat-1 (kallesignal ON02CN, QB50- konstellationen), som lanserades och därefter distribuerades från den internationella rymdstationen 2017.

Historia

Den framstående fri programvaruförespråkaren och radioamatören Bruce Perens lobbade för att skapa en codec för yttrandefrihet för drift på mindre än 5 kBit/s. Eftersom han inte hade bakgrunden själv kontaktade han Jean-Marc Valin 2008, som presenterade honom för att leda utvecklaren David Grant Rowe, som har arbetat med Valin på Speex vid flera tillfällen. Rowe själv var också en radioamatör (amatörradio signal VK5DGR) och hade erfarenhet av att skapa och använda röstcodec och andra signalbehandlingsalgoritmer för talsignaler. Han tog en doktorsexamen i talkodning på 1990 -talet och var involverad i utvecklingen av ett av de första satellittelefoni -systemen ( Mobilesat ).

Han gick med på uppgiften och meddelade sitt beslut att arbeta med ett format den 21 augusti 2009. Han byggde på forskningen och resultaten från sin doktorsavhandling. Den bakomliggande sinusformade modelleringen går tillbaka till utvecklingen av Robert J. McAulay och Thomas F. Quatieri (MIT Lincoln labs) från mitten av 1980-talet.

I augusti 2010 publicerade David Rowe version 0.1 alfa. Version 0.2 släpptes mot slutet av 2011 och introducerade ett läge med 1400 bitar/s och betydande förbättringar av kvantiseringen.

I januari 2012, på linux.conf.au , hjälpte Jean-Marc Valin till att förbättra kvantiseringen av linjespektralpar, vilket Rowe är mindre bekant med. Efter flera ändringar av de tillgängliga bithastighetslägena under vintern och våren 2011/2012, var 2.400, 1.400 och 1.200 bit/s -lägen tillgängliga efter maj samma år.

Codec 2 700C, ett nytt läge med en bithastighet på 700 bit/s, slutfördes i början av 2017.

I juli 2018 demonstrerades ett experimentellt 450 bit/s-läge som utvecklades som en del av en masteruppsats vid universitetet i Erlangen-Nürnberg. Genom smart träning av vektorkvantiseringen kan datahastigheten reduceras ytterligare baserat på principen om 700C -läget.

Referenser

externa länkar