1. Wat is het iLBC-audioformaat?
De Internet Low Bitrate Codec werd oorspronkelijk gecreëerd door Global IP Solutions (GIPS) — een Zweeds audio‑engineeringsbedrijf dat in 2010 door Google werd overgenomen. Gedefinieerd door de Internet Engineering Task Force onder RFC 3951 met RTP‑payload‑encapsulatie beschreven in RFC 3952, is iLBC specifiek ontworpen voor robuuste spraakoverdracht over onstabiele IP‑verbindingen.
Hoewel hedendaagse webbrowsers vaak de Opus‑codec gebruiken voor moderne realtime‑communicatie, blijft iLBC een cruciale, royalty‑vrije standaard die is ingebed in enterprise‑telefonie‑stacks, SIP‑clients, WebRTC‑achterwaartse‑compatibiliteitsprofielen en legacy‑VoIP‑apparaten die worden vervaardigd door Cisco, Polycom en Asterisk‑PBX‑systemen.
2. Belangrijkste kenmerken van iLBC
| Parameter | Specificatie |
|---|---|
| Standaardisatie | IETF RFC 3951 (Codec), RFC 3952 (RTP‑payload) |
| Gemeenschappelijke bestandsextensies | .ilbc, .lbc |
| MIME‑mediatype | audio/iLBC |
| Samplingfrequentie | $8\text{ kHz}$ (Narrowband) |
| Kwantisatieresolutie | 16-bit lineaire PCM |
| Audiokanalen | Mono (enkelkanaals spraak) |
| Ondersteunde frame-lengtes | $20\text{ ms}$ modus en $30\text{ ms}$ modus |
| Operationele bitsnelheden | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Payloadbits per blok | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Magische Header Identifier | #!iLBC20\n ($20\text{ ms}$) or #!iLBC30\n ($30\text{ ms}$) |
| Licentie | Royalty-Free (3-clausule BSD open source via WebRTC) |
3. Diepgaande kenmerken & architectonisch ontwerp
Onafhankelijke framecodering (geen foutverspreiding)
Traditionele spraakcompressieformaten zoals G.729 en CELP-familiecodecs maken gebruik van inter-frame voorspelling, waarbij elk audiokader afhankelijk is van statusinformatie en pitch‑predictor‑vectoren van het voorgaande kader. Als een pakket verloren gaat op een druk netwerk, wordt die ontbrekende status voortgeplant, waardoor downstream‑audio gedurende enkele honderden milliseconden wordt vervormd.
iLBC elimineert deze afhankelijkheid. Elk spraakframe in iLBC wordt onafhankelijk gecodeerd. Als pakket $N$ tijdens de overdracht verloren gaat, wordt pakket $N+1$ gedecodeerd met volledige akoestische getrouwheid.
Dubbele bedrijfsmodi ($20\text{ ms}$ vs. $30\text{ ms}$)
Om telecommunicatie‑ingenieurs flexibele latentie‑beheer te bieden, definieert iLBC twee verplichte bedrijfsmodi:
- $20\text{ ms}$ Frame-modus ($15.20\text{ kbit/s}$):
- Encodeert 160 audiosamples per frame naar 38 bytes ($304\text{ bits}$).
- Levert een lagere algoritmische bufferlatentie, waardoor het zeer geschikt is voor interactieve communicatie.
- $30\text{ ms}$ Frame-modus ($13.33\text{ kbit/s}$):
- Encodeert 240 audiosamples per frame naar 50 bytes ($400\text{ bits}$).
- Vermindert het bitverbruik met ongeveer $12%$, waardoor de efficiëntie van netwerkpayloads over langeafstandsverbindingen wordt geoptimaliseerd.
Geavanceerde verberging van pakketverlies (PLC)
Wanneer pakketten verloren gaan, maakt iLBC gebruik van een state‑variable LPC (Linear Predictive Coding) synthese‑filter dat ontbrekende pitch‑cyclusrepresentaties reconstrueert met behulp van grens‑toestanden van naburige frames. In plaats van klikken, digitale ploppen of harde dempingen te veroorzaken, degraderen verloren stempakketten geleidelijk.
Audiokwaliteit vs. Bitrateprofiel
Onder ideale netwerkcondities (0% packetverlies) behaalt iLBC een Mean Opinion Score (MOS) van ongeveer 4.14 (van de 5.0). Hoewel iets lager dan ongecomprimeerde G.711 PCM ($\mu$-law bij $\sim 4.3$), behoudt iLBC stemhelderheid bij packetverliespercentages tot $5%\text{ tot }10%$, waar de verstaanbaarheid van G.729 of G.711 aanzienlijk daalt.
4. Hoe .ilbc-audiobestanden te openen en af te spelen
Omdat .ilbc een gespecialiseerd raw-telefonie‑stroomformaat is en geen algemene consumenten‑mediacontainer (zoals MP3 of WAV), kunnen reguliere consumenten‑spelers het niet altijd detecteren zonder speciale codec‑pakketten.
Methode 1: Audacity gebruiken (Ruwe gegevens importeren)
Audacity kan ruwe PCM‑dumps of gedecodeerde iLBC‑stembestanden importeren:
- Start Audacity.
- Navigeer naar Bestand > Importeren > Raw Data…
- Selecteer het bestand en stel de codering in op Signed 16-bit PCM, Byte‑order op Little-endian, 1 Kanaal (Mono), en de sample‑rate op 8000 Hz.
Methode 2: Afspelen via de opdrachtregel met FFplay
Als uw FFmpeg‑build is gecompileerd met de libilbc‑extensie:
ffplay -f ilbc sample.ilbc
Methode 3: Specifieke VoIP-analyzers
Netwerkdiagnostische tools zoals Wireshark kunnen .ilbc‑stempayloads direct uit vastgelegde SIP/RTP‑pakketsessies extraheren en reconstrueren en ze afspelen via de ingebouwde RTP‑Player‑utility.
5. Hoe .ilbc-audiobestanden te maken en te converteren
Werken met .ilbc audio vereist 16-bit, enkelkanaals, $8000\text{ Hz}$ invoeraudio.
Coderen naar iLBC met FFmpeg
Om een bestaande .wav of .mp3 audio-sample om te zetten naar een .ilbc bitstream:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Resampleert audio naar de vereiste 8 kHz-snelheid.-ac 1: Downmixes multi-kanaal audio naar mono.-c:a libilbc: Gebruikt delibilbcreferentie-encoder.
Specificeren van de frame-modus ($20\text{ ms}$ of $30\text{ ms}$)
U kunt de frame-modus kiezen met de -mode vlag:
# 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
Decoderen van een .ilbc-bestand terug naar standaard WAV
Om een .ilbc bestand om te zetten naar een ongecomprimeerd WAV‑bestand dat overal afspeelbaar is:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Veelgestelde Vragen (FAQ)
Q1: Welk primair probleem was het iLBC-audiocodec ontworpen om op te lossen?
Het iLBC‑formaat is ontworpen om de verstaanbaarheid van spraak over IP‑netwerken te behouden door elke audio‑frame onafhankelijk te maken, waardoor pakketverliesfouten niet doorwerken in volgende spraakframes.
Q2: Wat zijn de twee operationele bitrates van een .ilbc-bestand?
Een .ilbc-stroom werkt op $13.33\text{ kbit/s}$ bij gebruik van $30\text{ ms}$-frames of $15.20\text{ kbit/s}$ wanneer geconfigureerd voor $20\text{ ms}$-frames.
Q3: Kan het iLBC-formaat worden gebruikt voor het streamen van muziek met hoge kwaliteit?
Nee, iLBC is een narrowband spraakcodec die strikt beperkt is tot een $8\text{ kHz}$ bemonsteringsfrequentie, geoptimaliseerd uitsluitend voor menselijke spraak tussen $90\text{ Hz}$ en $4000\text{ Hz}$.
Q4: Is de iLBC-audiocodec royalty‑vrij?
Ja, iLBC is volledig gestandaardiseerd onder IETF RFC 3951 en uitgebracht onder een open‑source, royalty‑vrije 3‑clausule BSD‑licentie via het WebRTC‑project.
Q5: Hoe verhoudt iLBC zich tot de moderne Opus-codec?
Hoewel iLBC packet‑loss verberging bood voor narrowband VoIP in vroege breedbandnetwerken, ondersteunt de moderne Opus‑codec dynamische bitsnelheden, full‑band ($48\text{ kHz}$) audio en een lagere algoritmische latentie.
7. Officiële specificaties & referenties
- IETF RFC 3951 Specificatie: Internet Low Bit Rate Codec (iLBC) Speech and Audio Standard
- IETF RFC 3952 Payloadformaat: Real-time Transport Protocol (RTP) Payload Format for iLBC
- WebRTC Open Source‑project: WebRTC Codec Licensing & iLBC Implementation
- FFmpeg Codec Documentatie: FFmpeg libilbc Integratierichtlijnen