Kodek 2 - Codec 2
Codec 2 je zvukový kodek pro řeč s nízkým datovým tokem ( kódování řeči ), který je bez patentů a má otevřený zdroj . Codec 2 komprimuje řeč pomocí sinusového kódování, metody specializované na lidskou řeč . Bitové rychlosti 3200 až 450 bit/s byly úspěšně vytvořeny. Codec 2 byl navržen pro použití v amatérském rádiu a dalších hlasových aplikacích s vysokou kompresí.
Přehled
Kodek vyvinul David Grant Rowe za podpory a spolupráce dalších výzkumných pracovníků (např. Jean-Marc Valin ze společnosti Opus ).
Codec 2 se skládá z režimů kodeků 3200, 2400, 1600, 1400, 1300, 1200, 700 a 450 bit/s. Překonává většinu ostatních kodeků řeči s nízkou přenosovou rychlostí . Například používá poloviční šířku pásma Advanced Multi-Band Excitation ke kódování řeči s podobnou kvalitou. Řečový kodek používá 16bitový zvuk vzorkovaný PCM a vydává zabalené digitální bajty. Při odeslání zabalených digitálních bajtů vydává zvuk vzorkovaný PCM. Vzorkovací frekvence zvuku je pevně nastavena na 8 kHz.
Referenční implementace je open source a je volně k dispozici v GitHub repozitáři. Zdrojový kód je vydán za podmínek verze 2.1 GNU Lesser General Public License (LGPL). Je naprogramován v jazyce C a aktuální zdrojový kód vyžaduje aritmetiku s pohyblivou řádovou čárkou , ačkoli to samotný algoritmus nevyžaduje. Balíček referenčního softwaru také obsahuje softwarový modem digitálního hlasového multiplexu s frekvenčním dělením a grafické uživatelské rozhraní založené na WxWidgets . Software je vyvíjen pro Linux a kromě verze Apple Macintosh je nabízen port pro Microsoft Windows vytvořený pomocí Cygwin .
Kodek byl představen na různých konferencích a získal cenu ARRL za technickou inovaci 2012 a cenu za nejlepší prezentaci konference Linux Australia Conference.
Technologie
Interně parametrické algoritmy kódování zvuku fungují na 10 ms rámcích PCM pomocí modelu lidského hlasu. Každý z těchto zvukových segmentů deklarovaných vyjádřen (samohlásku) nebo neznělé (souhlásky).
Codec 2 používá k modelování řeči sinusové kódování , které je úzce příbuzné kodexům vícepásmových buzení . Sinusové kódování je založeno na pravidelnostech (periodicitě) ve vzoru frekvencí a vrstev harmonických sinusoidů. Mluvený zvuk je znovu vytvořen modelováním řeči jako součtu harmonicky souvisejících sinusových vln s nezávislými amplitudami nazývanými Line spektrální páry nebo LSP, nad stanovenou základní frekvencí hlasu mluvčího (výška tónu). (Kvantifikovaná) výška a amplituda (energie) harmonických jsou kódovány a s LSP jsou vyměňovány přes kanál v digitálním formátu. Koeficienty LSP představují model lineárního prediktivního kódování (LPC) ve frekvenční oblasti a nabízejí robustní a efektivní kvantifikaci parametrů LPC.
Digitální bajty jsou ve formátu bitového pole, které byly zabaleny do bajtů. Tato bitová pole jsou před seskupením také volitelně kódována šedě . Šedé kódování může být užitečné při odesílání nezpracovaných, ale obvykle aplikace pouze vybije bitová pole. Bitová pole tvoří různé parametry, které jsou ukládány nebo vyměňovány (výška, energie, booleans, LSP atd.).
Například režim 3200 má 20 ms zvuku převedeného na 64 bitů. Každých 20 ms (50krát za sekundu) bude tedy vycházet 64 bitů s minimální přenosovou rychlostí 3200 bit/s. Těchto 64 bitů je odesláno jako 8 bajtů do aplikace, která musí rozbalit bitová pole nebo odeslat bajty přes datový kanál.
Dalším příkladem je režim 1300, který je odeslán 40 ms zvuku a vydává 52 bitů každých 40 ms (25krát za sekundu), s minimální rychlostí 1300 bit/s. Těchto 52 bitů je odesláno jako 7 bytů do aplikace nebo datového kanálu.
Přijetí
Codec 2 se v současné době používá v několika rádiích a softwarově definovaných rádiových systémech
- FreeDV
- Řada FlexRadio 6000
- SM1000
- Quisk
- M17
Codec2 byl také integrován do FreeSWITCH a pro podporu v Asterisku je k dispozici oprava .
Na oběžné dráze Země se na amatérské radii CubeSat LilacSat-1 (volací znak ON02CN, souhvězdí QB50 ) na oběžné dráze Země objevil digitální hlasový opakovač FM-to-Codec2 , který byl vypuštěn a následně nasazen z Mezinárodní vesmírné stanice v roce 2017.
Dějiny
Významný obhájce svobodného softwaru a radioamatér Bruce Perens loboval za vytvoření kodeku volné řeči pro provoz s rychlostí menší než 5 kBit/s. Protože sám neměl zázemí, v roce 2008 oslovil Jean-Marca Valina, který mu představil vedoucího vývojáře Davida Granta Rowea, který s Valinem na Speexu několikrát spolupracoval . Sám Rowe byl také radioamatérem (radioamatérský volací znak VK5DGR) a měl zkušenosti s vytvářením a používáním hlasových kodeků a dalších algoritmů pro zpracování signálu pro řečové signály. V devadesátých letech získal doktorát z kódování řeči a podílel se na vývoji jednoho z prvních systémů satelitního telefonování ( Mobilesat ).
Souhlasil s úkolem a oznámil své rozhodnutí pracovat na formátu 21. srpna 2009. Navázal na výzkum a poznatky ze své doktorské práce. Základní sinusové modelování sahá k vývoji Roberta J. McAulaye a Thomase F. Quatieriho (laboratoře MIT Lincoln) od poloviny 80. let minulého století.
V srpnu 2010 David Rowe publikoval verzi 0,1 alfa. Koncem roku 2011 byla vydána verze 0.2, která zavedla režim s 1 400 bity/s a významná vylepšení v kvantování.
V lednu 2012 na linux.conf.au pomohl Jean-Marc Valin zlepšit kvantování liniových spektrálních párů, což Rowe méně zná. Po několika změnách dostupných režimů přenosové rychlosti v zimě a na jaře 2011/2012 bylo po květnu téhož roku k dispozici 2400, 1400 a 1200 bit/s režimů.
Codec 2 700C, nový režim s přenosovou rychlostí 700 bit/s, byl dokončen na začátku roku 2017.
V červenci 2018 byl předveden experimentální režim 450 bit/s, který byl vyvinut jako součást diplomové práce na univerzitě v Erlangenu-Norimberku. Chytrým tréninkem kvantování vektorů by bylo možné rychlost dat dále snížit na principu režimu 700C.