1. Co je audio formát iLBC?
The Internet Low Bitrate Codec byl původně vytvořen společností Global IP Solutions (GIPS) — švédskou firmou zabývající se audio inženýrstvím, kterou v roce 2010 získala společnost Google. Definován Internet Engineering Task Force pod RFC 3951 s popisem zapouzdření RTP payloadu v RFC 3952, iLBC byl navržen speciálně pro spolehlivý přenos řeči přes nestabilní IP spojení.
Zatímco moderní webové prohlížeče často používají kodek Opus pro současnou komunikaci v reálném čase, iLBC zůstává klíčovým, bezlicenčním standardem začleněným do podnikových telefonních stacků, SIP klientů, profilů zpětné kompatibility WebRTC a starších VoIP zařízení vyráběných společnostmi Cisco, Polycom a systémy Asterisk PBX.
2. Klíčové charakteristiky iLBC
| Parametr | Specifikace |
|---|---|
| Standardizace | IETF RFC 3951 (Kodek), RFC 3952 (RTP Payload) |
| Běžné přípony souborů | .ilbc, .lbc |
| MIME typ média | audio/iLBC |
| Vzorkovací frekvence | $8\text{ kHz}$ (Úzkopásmový) |
| Rozlišení kvantizace | 16bitový lineární PCM |
| Audio kanály | Mono (Jednokanalová řeč) |
| Podporované délky rámců | $20\text{ ms}$ režim a $30\text{ ms}$ režim |
| Provozní bitrate | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Bitů užitečného zatížení na blok | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Identifikátor magické hlavičky | #!iLBC20\n ($20\text{ ms}$) nebo #!iLBC30\n ($30\text{ ms}$) |
| Licencování | Bez licenčních poplatků (open source BSD se 3 klauzulemi přes WebRTC) |
3. Podrobné funkce a architektonický design
Nezávislé kódování rámců (žádná propagace chyb)
Tradiční formáty komprese řeči, jako jsou G.729 a kodeky rodiny CELP, využívají inter-frame prediction, kde každý audio rámec závisí na stavových informacích a vektorech prediktoru výšky tónu z předchozího rámce. Pokud na přetížené síti dojde k ztrátě paketu, chybějící stav se šíří dál a narušuje audio následovníků po několik set milisekund.
iLBC tuto závislost eliminuje. Každý řečový rámec v iLBC je kódován nezávisle. Pokud během přenosu dojde ke ztrátě paketu $N$, paket $N+1$ se dekóduje s plnou akustickou věrností.
Dva provozní režimy ($20\text{ ms}$ vs. $30\text{ ms}$)
Aby telekomunikační inženýři měli flexibilní řízení latence, iLBC definuje dva povinné provozní režimy:
- $20\text{ ms}$ Rámcový režim ($15.20\text{ kbit/s}$):
- Kóduje 160 audio vzorků na rámec do 38 bytů ($304\text{ bits}$).
- Poskytuje nižší algoritmickou latenci vyrovnávací paměti, což jej činí vhodným pro interaktivní komunikaci.
- $30\text{ ms}$ Rámcový režim ($13.33\text{ kbit/s}$):
- Kóduje 240 audio vzorků na rámec do 50 bytů ($400\text{ bits}$).
- Snižuje spotřebu bitů přibližně o $12%$, optimalizuje efektivitu síťového zatížení při dlouhých spojích.
Pokročilé maskování ztráty paketů (PLC)
Když dojde k ztrátě paketů, iLBC využívá stavový proměnný LPC (Lineární prediktivní kódování) syntézní filtr, který rekonstruuje chybějící reprezentace cyklů výšky pomocí hraničních stavů ze sousedních rámců. Místo vytváření kliknutí, digitálních prasknutí nebo tvrdých ztlumení se ztracené hlasové pakety degradují plynule.
Kvalita zvuku vs. profil bitrate
Za ideálních síťových podmínek (0 % ztráty paketů) iLBC dosahuje průměrného hodnocení posluchačské spokojenosti (MOS) přibližně 4.14 (z 5.0). Přestože je mírně pod nekomprimovaným G.711 PCM ($\mu$-law při $\sim 4.3$), iLBC si zachovává srozumitelnost hlasu i při ztrátě paketů až $5%\text{ to }10%$, kde se srozumitelnost G.729 nebo G.711 výrazně snižuje.
4. Jak otevřít a přehrát audio soubory .ilbc
Protože .ilbc je specializovaný formát surového telefonního streamu, nikoli obecný kontejner pro spotřebitelská média (jako MP3 nebo WAV), běžní spotřebitelské přehrávače jej nemusí vždy rozpoznat bez speciálních balíčků kodeků.
Metoda 1: Použití Audacity (Import surových dat)
Audacity může importovat surové PCM výpisy nebo dekódované iLBC hlasové soubory:
- Spusťte Audacity.
- Přejděte na Soubor > Importovat > Raw Data…
- Vyberte soubor a nastavte kódování na Signed 16-bit PCM, pořadí bajtů na Little-endian, 1 kanál (Mono) a vzorkovací frekvenci na 8000 Hz.
Metoda 2: Přehrávání z příkazové řádky pomocí FFplay
Pokud je vaše verze FFmpeg zkompilována s rozšířením libilbc:
ffplay -f ilbc sample.ilbc
Metoda 3: Vyhrazené analyzátory VoIP
Síťové diagnostické nástroje, jako je Wireshark, mohou přímo z zachycených SIP/RTP paketových relací extrahovat a rekonstruovat .ilbc hlasové payloady a přehrát je pomocí vestavěného nástroje RTP Player.
5. Jak vytvořit a převést audio soubory .ilbc
Práce s audio formátem .ilbc vyžaduje 16‑bitový, jednokanálový vstupní audio signál s frekvencí $8000\text{ Hz}$.
Kódování do iLBC pomocí FFmpeg
Pro převod existujícího audio vzorku ve formátu .wav nebo .mp3 do bitového proudu .ilbc:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Převzorkuje audio na požadovanou rychlost 8 kHz.-ac 1: Sníží vícekanálové audio na mono.-c:a libilbc: Používá referenční enkodérlibilbc.
Určení režimu rámce ($20\text{ ms}$ nebo $30\text{ ms}$)
Můžete zvolit režim rámců pomocí příznaku -mode:
# Encode using 30ms mode (13.33 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 30 output_30ms.ilbc
# Encode using 20ms mode (15.20 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 20 output_20ms.ilbc
Dekódování souboru .ilbc zpět na standardní WAV
Pro převod souboru .ilbc na nekomprimovaný WAV soubor, který lze přehrát kdekoliv:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Často kladené otázky (FAQ)
Q1: Jaký hlavní problém byl formátem iLBC audio vytvořen k vyřešení?
Formát iLBC byl navržen tak, aby zachoval srozumitelnost řeči v IP sítích tím, že učiní každý audio rámec nezávislým, čímž zabrání chybám ztráty paketů šířit se do následujících rámců řeči.
Q2: Jaké jsou dva provozní datové rychlosti souboru .ilbc?
Datový tok .ilbc pracuje buď při $13.33\text{ kbit/s}$ při použití $30\text{ ms}$ rámců, nebo při $15.20\text{ kbit/s}$ při konfiguraci na $20\text{ ms}$ rámce.
Q3: Lze formát iLBC použít pro streamování hudby s vysokou kvalitou?
Ne, iLBC je úzkopásmový hlasový kodek striktně omezený na vzorkovací frekvenci $8\text{ kHz}$, optimalizovaný výhradně pro lidskou řeč v rozmezí $90\text{ Hz}$ až $4000\text{ Hz}$.
Q4: Je audio kodek iLBC bez licenčních poplatků?
Ano, iLBC je plně standardizován podle IETF RFC 3951 a vydán pod open-source, bezlicenční licencí 3-klauzule BSD prostřednictvím projektu WebRTC.
Q5: Jak se iLBC srovnává s moderním kodekem Opus?
Zatímco iLBC poskytoval skrytí ztráty paketů pro úzkopásmový VoIP v raných širokopásmových sítích, moderní kodek Opus podporuje dynamické bitrate, plno‑pásmový ($48\text{ kHz}$) zvuk a nižší algoritmickou latenci.
7. Oficiální specifikace a reference
- Specifikace IETF RFC 3951: Internet Low Bit Rate Codec (iLBC) Speech and Audio Standard
- Formát nákladu IETF RFC 3952: Real-time Transport Protocol (RTP) Payload Format for iLBC
- Projekt open source WebRTC: WebRTC Codec Licensing & iLBC Implementation
- Dokumentace kodeků FFmpeg: Pokyny pro integraci libilbc do FFmpeg