Codec 2 - Codec 2
Codec 2 er en lav bitrate tale audiokodek ( talekoding ) som er patent fri og åpen kilde . Codec 2 komprimerer tale ved hjelp av sinusformet koding, en metode spesialisert for menneskelig tale . Bithastigheter på 3200 til 450 bit/s har blitt opprettet. Codec 2 ble designet for å brukes til amatørradio og andre høykomprimerte stemme -applikasjoner.
Oversikt
Kodeken ble utviklet av David Grant Rowe, med støtte og samarbeid fra andre forskere (f.eks. Jean-Marc Valin fra Opus ).
Codec 2 består av 3200, 2400, 1600, 1400, 1300, 1200, 700 og 450 bit/s codec -moduser. Det overgår de fleste andre lav-bitrate talekodeker . For eksempel bruker den halve båndbredden til Advanced Multi-Band Excitation for å kode tale med lignende kvalitet. Talekodeken bruker 16-biters PCM- samplet lyd og sender ut digitale byte. Når den sendes pakket digitale byte, sender den ut PCM -samplet lyd. Lydprøvehastigheten er fast til 8 kHz.
Den implementasjon er åpen kilde og er fritt tilgjengelig i en GitHub depot. Kildekoden er utgitt under vilkårene i versjon 2.1 i GNU Lesser General Public License (LGPL). Den er programmert i C og gjeldende kildekode krever flytende aritmetikk , selv om algoritmen i seg selv ikke krever dette. Referanseprogramvarepakken inneholder også et frekvensdivisjons multiplex digitalt taleprogramvaremodem og et grafisk brukergrensesnitt basert på WxWidgets . Programvaren er utviklet på Linux, og en port for Microsoft Windows opprettet med Cygwin tilbys i tillegg til en Apple Macintosh -versjon.
Kodeken har blitt presentert på forskjellige konferanser og har mottatt 2012 ARRL Technical Innovation Award, og Linux Australia Conference's Best Presentation Award.
Teknologi
Internt opererer parametriske lydkodingsalgoritmer på 10 ms PCM -rammer ved hjelp av en modell av den menneskelige stemmen. Hvert av disse lydsegmentene er erklært stemt (vokal) eller ikke -stemme (konsonant).
Codec 2 bruker sinusformet koding for å modellere tale, som er nært knyttet til multibånds eksitasjonskodeker . Sinusformet koding er basert på regelmessigheter (periodisitet) i mønsteret for overtonefrekvenser og lag harmoniske sinusoider. Talt lyd gjenskapes ved å modellere tale som en sum av harmonisk relaterte sinusbølger med uavhengige amplituder kalt Line spectral pair , eller LSP, på toppen av en bestemt grunnfrekvens for høyttalerens stemme (tonehøyde). Den (kvantiserte) tonehøyden og amplituden (energien) til harmonikerne er kodet, og med LSP -ene utveksles over en kanal i et digitalt format. LSP -koeffisientene representerer modellen Linear Predictive Coding (LPC) i frekvensområdet, og egner seg til en robust og effektiv kvantisering av LPC -parameterne.
De digitale byte er i et bitfeltformat som er pakket sammen til byte. Disse bitfeltene er også eventuelt gråkodede før de grupperes sammen. Den grå kodingen kan være nyttig hvis du sender rå, men normalt vil et program bare sprekke bitfeltene ut. Bitfeltene utgjør de forskjellige parameterne som lagres eller utveksles (tonehøyde, energi, stemme booleans, LSP, etc.).
For eksempel har modus 3200 20 ms lyd konvertert til 64 bit. Så det sendes ut 64 Bits hver 20. ms (50 ganger i sekundet), med en minimum datahastighet på 3200 bit/s. Disse 64 bitene sendes som 8 byte til applikasjonen, som må pakke ut bitfeltene, eller sende byte over en datakanal.
Et annet eksempel er modus 1300, som sendes 40 ms lyd, og sender ut 52 bit hver 40 ms (25 ganger i sekundet), for en minimumshastighet på 1300 bit/s. Disse 52 bitene sendes som 7 byte til applikasjonen eller datakanalen.
Adopsjon
Codec 2 brukes for tiden i flere radioer og programvaredefinerte radiosystemer
- FreeDV
- FlexRadio 6000 -serien
- SM1000
- Quisk
- M17
Codec2 har også blitt integrert i FreeSWITCH, og det er en oppdatering tilgjengelig for støtte i Asterisk .
Det var en FM-til-Codec2 digital stemmeforsterker i jordens bane på amatørradio CubeSat LilacSat-1 (kallesignal ON02CN, QB50 konstellasjon), som ble lansert og deretter distribuert fra den internasjonale romstasjonen i 2017.
Historie
Den fremtredende advokaten for fri programvare og radioamatør Bruce Perens lobbyet for opprettelsen av en ytringsfri kodek for drift på mindre enn 5 kBit/s. Siden han ikke hadde bakgrunnen selv, henvendte han seg til Jean-Marc Valin i 2008, som introduserte ham for lederutvikler David Grant Rowe, som har jobbet med Valin på Speex ved flere anledninger. Rowe selv var også en radioamatør (amatør radio kallesignal VK5DGR) og hadde erfaring i å skape og bruke talekodeker og andre signalbehandlingsalgoritmer for talesignaler. Han tok en doktorgrad i talekoding på 1990 -tallet og var involvert i utviklingen av et av de første satellitttelefonisystemene ( Mobilesat ).
Han takket ja til oppgaven og kunngjorde sin beslutning om å jobbe med et format 21. august 2009. Han bygde på forskningen og funnene fra doktorgradsavhandlingen. Den underliggende sinusformede modellen går tilbake til utviklingen av Robert J. McAulay og Thomas F. Quatieri (MIT Lincoln labs) fra midten av 1980-tallet.
I august 2010 publiserte David Rowe versjon 0.1 alfa. Versjon 0.2 ble utgitt mot slutten av 2011, og introduserte en modus med 1400 bits/s og betydelige forbedringer i kvantisering.
I januar 2012, på linux.conf.au , hjalp Jean-Marc Valin med å forbedre kvantiseringen av linjespektralpar, som Rowe er mindre kjent med. Etter flere endringer i de tilgjengelige bithastighetsmodusene vinteren og våren 2011/2012, var 2.400, 1.400 og 1.200 bit/s -moduser tilgjengelige etter mai samme år.
Codec 2 700C, en ny modus med en bithastighet på 700 bit/s, ble ferdig tidlig i 2017.
I juli 2018 ble det demonstrert en eksperimentell 450 bit/s-modus, som ble utviklet som en del av en masteroppgave ved Universitetet i Erlangen-Nürnberg. Ved smart trening av vektorkvantiseringen kan datahastigheten reduseres ytterligere basert på prinsippet om 700C -modus.