Codec 2 - Codec 2
Codec 2 er en lyd-bit- codec med lav bitrate ( talekodning ), der er patentfri og open source . Codec 2 komprimerer tale ved hjælp af sinusformet kodning, en metode specialiseret til menneskelig tale . Bithastigheder på 3200 til 450 bit/s er blevet oprettet. Codec 2 blev designet til at blive brugt til amatørradio og andre højkomprimerede stemmeapplikationer.
Oversigt
Codec blev udviklet af David Grant Rowe, med støtte og samarbejde fra andre forskere (f.eks. Jean-Marc Valin fra Opus ).
Codec 2 består af 3200, 2400, 1600, 1400, 1300, 1200, 700 og 450 bit/s codec -tilstande. Det overgår de fleste andre lav-bitrate tale-codecs . For eksempel bruger den halvdelen af båndbredden ved Advanced Multi-Band Excitation til at kode tale med lignende kvalitet. Talecodec bruger 16-bit PCM- samplet lyd og udsender pakkede digitale bytes. Når den sendes pakket digitale bytes, udsender den PCM -samplet lyd. Lydprøvehastigheden er fastsat til 8 kHz.
Den henvisning implementering er open source og er frit tilgængelig i en GitHub repository. Kildekoden frigives under betingelserne i version 2.1 i GNU Lesser General Public License (LGPL). Det er programmeret i C, og den aktuelle kildekode kræver flydende aritmetik , selvom algoritmen selv ikke kræver dette. Referencesoftwarepakken indeholder også et frekvensopdelingsmultiplex digitalt stemmesoftwaremodem og en grafisk brugergrænseflade baseret på WxWidgets . Softwaren er udviklet på Linux, og en port til Microsoft Windows oprettet med Cygwin tilbydes ud over en Apple Macintosh -version.
Codec er blevet præsenteret på forskellige konferencer og har modtaget 2012 ARRL Technical Innovation Award og Linux Australia Conference's Best Presentation Award.
Teknologi
Internt fungerer parametriske lydkodningsalgoritmer på 10 ms PCM -rammer ved hjælp af en model af den menneskelige stemme. Hvert af disse lydsegmenter er erklæret stemt (vokal) eller ikke -stemt (konsonant).
Codec 2 bruger sinusformet kodning til at modellere tale, som er tæt forbundet med multi-bånds excitationscodecs . Sinusformet kodning er baseret på regelmæssigheder (periodicitet) i mønsteret for overtonefrekvenser og lag harmoniske sinusoider. Talt lyd genskabes ved at modellere tale som en sum af harmonisk relaterede sinusbølger med uafhængige amplituder kaldet Line -spektralpar eller LSP oven på en bestemt grundlæggende frekvens for højttalerens stemme (tonehøjde). Harmonikkenes (kvantiserede) tonehøjde og amplitude (energi) er kodet, og med LSP'erne udveksles på tværs af en kanal i et digitalt format. LSP -koefficienterne repræsenterer modellen Linear Predictive Coding (LPC) i frekvensdomænet og egner sig til en robust og effektiv kvantisering af LPC -parametrene.
De digitale bytes er i et bit-field-format, der er blevet pakket sammen til bytes. Disse bitfelter er også valgfrit gråkodede, før de grupperes sammen. Den grå kodning kan være nyttig, hvis den sender rå, men normalt vil et program bare sprænge bitfelterne ud. Bitfelterne udgør de forskellige parametre, der lagres eller udveksles (tonehøjde, energi, stemme booleans, LSP'er osv.).
For eksempel har Mode 3200 20 ms lyd konverteret til 64 bit. Så 64 bit udsendes hver 20. ms (50 gange i sekundet) med en minimum datahastighed på 3200 bit/s. Disse 64 bit sendes som 8 bytes til applikationen, som skal pakke bitfelterne ud eller sende bytes over en datakanal.
Et andet eksempel er tilstand 1300, der sendes 40 ms lyd og udsender 52 bit hver 40 ms (25 gange i sekundet) for en minimumshastighed på 1300 bit/s. Disse 52 bit sendes som 7 bytes til applikationen eller datakanalen.
Adoption
Codec 2 bruges i øjeblikket i flere radioer og software -definerede radiosystemer
- FreeDV
- FlexRadio 6000 -serien
- SM1000
- Quisk
- M17
Codec2 er også blevet integreret i FreeSWITCH, og der er en patch tilgængelig for support i Asterisk .
Der var en FM-til-Codec2 digital stemme repeater i jordens kredsløb på amatørradio CubeSat LilacSat-1 (kaldesignal ON02CN, QB50 konstellation), som blev lanceret og efterfølgende indsat fra den internationale rumstation i 2017.
Historie
Den fremtrædende advokat for fri software og radioamatør Bruce Perens lobbyede for oprettelsen af en ytringsfri codec til drift på mindre end 5 kBit/s. Da han ikke selv havde baggrunden, henvendte han sig til Jean-Marc Valin i 2008, som introducerede ham til at lede udvikleren David Grant Rowe, der har arbejdet sammen med Valin på Speex ved flere lejligheder. Rowe selv var også en radioamatør (amatørradio kaldesignal VK5DGR) og havde erfaring i at skabe og bruge tale-codecs og andre signalbehandlingsalgoritmer til talesignaler. Han opnåede en ph.d. i talekodning i 1990'erne og var involveret i udviklingen af et af de første satellittelefoni -systemer ( Mobilesat ).
Han accepterede opgaven og meddelte sin beslutning om at arbejde med et format den 21. august 2009. Han byggede videre på forskningen og resultaterne fra sin doktorafhandling. Den underliggende sinusformede modellering går tilbage til udviklingen af Robert J. McAulay og Thomas F. Quatieri (MIT Lincoln labs) fra midten af 1980'erne.
I august 2010 offentliggjorde David Rowe version 0.1 alpha. Version 0.2 blev frigivet i slutningen af 2011, og introducerede en tilstand med 1.400 bits/s og betydelige forbedringer i kvantisering.
I januar 2012 hjalp Jean-Marc Valin på linux.conf.au med at forbedre kvantiseringen af linjespektrale par, som Rowe er mindre fortrolig med. Efter flere ændringer af de tilgængelige bithastighedstilstande om vinteren og foråret 2011/2012 var 2.400, 1.400 og 1.200 bit/s -tilstande tilgængelige efter maj samme år.
Codec 2 700C, en ny tilstand med en bithastighed på 700 bit/s, blev færdig i begyndelsen af 2017.
I juli 2018 blev der demonstreret en eksperimentel 450 bit/s-tilstand, som blev udviklet som en del af en masteropgave ved universitetet i Erlangen-Nürnberg. Ved smart træning af vektorkvantiseringen kunne datahastigheden reduceres yderligere baseret på princippet om 700C -tilstanden.