1. Hva er iLBC-lydformatet?
Den Internet Low Bitrate Codec ble opprinnelig laget av Global IP Solutions (GIPS) — et svensk lydteknisk firma som ble kjøpt opp av Google i 2010. Definert av Internet Engineering Task Force under RFC 3951 med RTP‑payload‑innkapsling beskrevet i RFC 3952, ble iLBC designet spesielt for robust taleoverføring over ustabile IP‑koblinger.
Selv om moderne nettlesere ofte bruker Opus‑codec for sanntidskommunikasjon, er iLBC fortsatt en sentral, royalty‑fri standard som er integrert i bedrifts‑telefonistakker, SIP‑klienter, WebRTC‑bakoverkompatibilitetsprofiler og eldre VoIP‑apparater produsert av Cisco, Polycom og Asterisk‑PBX‑systemer.
2. Viktige egenskaper ved iLBC
| Parameter | Spesifikasjon |
|---|---|
| Standardisering | IETF RFC 3951 (Codec), RFC 3952 (RTP‑payload) |
| Vanlige filendelser | .ilbc, .lbc |
| MIME-medietype | audio/iLBC |
| Samplingsfrekvens | $8\text{ kHz}$ (Smalbånd) |
| Kvantiseringsoppløsning | 16-bit lineær PCM |
| Lydkanaler | Mono (Enkeltkanals tale) |
| Støttede rammelengder | $20\text{ ms}$ modus og $30\text{ ms}$ modus |
| Operasjonelle bithastigheter | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Payload-biter per blokk | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Magisk header-identifikator | #!iLBC20\n ($20\text{ ms}$) or #!iLBC30\n ($30\text{ ms}$) |
| Lisensiering | Royaltyfri (3-klausul BSD åpen kilde via WebRTC) |
3. Grundige funksjoner og arkitektonisk design
Uavhengig rammekoding (ingen feilpropagering)
Tradisjonelle tale-komprimeringsformater som G.729 og CELP-familiecodecs bruker inter-frame prediksjon, hvor hver lydramme avhenger av tilstandsinformasjon og tonehøyde‑prediktorvektorer fra den foregående rammen. Hvis en pakke går tapt på et overbelastet nettverk, sprer den manglende tilstanden seg videre og forvrenger etterfølgende lyd i flere hundre millisekunder.
iLBC eliminerer denne avhengigheten. Hver taleramme i iLBC blir kodet uavhengig. Hvis pakke $N$ går tapt under overføring, dekodes pakke $N+1$ med full akustisk nøyaktighet.
Doble driftsmoduser ($20\text{ ms}$ vs. $30\text{ ms}$)
For å gi telekommunikasjonsingeniører fleksibel latenststyring, definerer iLBC to obligatoriske driftsmoduser:
- $20\text{ ms}$ Ramme-modus ($15.20\text{ kbit/s}$):
- Koder 160 lydprøver per ramme til 38 byte ($304\text{ bits}$).
- Gir lavere algoritmisk buffringslatens, noe som gjør den godt egnet for interaktiv kommunikasjon.
- $30\text{ ms}$ Ramme-modus ($13.33\text{ kbit/s}$):
- Koder 240 lydprøver per ramme til 50 byte ($400\text{ bits}$).
- Reduserer bitforbruket med omtrent $12%$, og optimaliserer nettverkspayload-effektiviteten over langdistanseforbindelser.
Avansert pakke-tap skjuling (PLC)
Når pakketap oppstår, bruker iLBC et tilstandsvariabel LPC (Linear Predictive Coding) syntesefilter som rekonstruerer manglende tonehøyde-syklusrepresentasjoner ved å bruke grense-tilstander fra naborammer. I stedet for å skape klikk, digitale popp eller harde dempinger, degraderer tapte talepakker seg jevnt.
Lydkvalitet vs. Bitrate-profil
Under ideelle nettverksforhold (0% pakkefall), oppnår iLBC en Mean Opinion Score (MOS) på omtrent 4.14 (av 5.0). Selv om den er litt under ukomprimert G.711 PCM ($\mu$-law ved $\sim 4.3$), beholder iLBC stemmeklarhet ved pakkefallshastigheter så høye som $5%\text{ til }10%$, hvor G.729 eller G.711 forståelighet faller betydelig.
4. Hvordan åpne og spille av .ilbc-lydfiler
Fordi .ilbc er et spesialisert rå telefonistrømformat snarere enn en generell forbrukermediekontainer (som MP3 eller WAV), kan vanlige forbrukeravspillere ikke alltid oppdage det uten dedikerte kodekpakker.
Metode 1: Bruke Audacity (Importer rådata)
Audacity kan importere rå PCM‑dump eller dekodede iLBC‑stemmefiler:
- Start Audacity.
- Naviger til Fil > Importer > Rådata…
- Velg filen og sett koding til Signed 16-bit PCM, byte‑rekkefølge til Little-endian, 1 kanal (Mono), og samplingsfrekvens til 8000 Hz.
Metode 2: Kommandolinjeavspilling via FFplay
Hvis din FFmpeg‑bygg er kompilert med libilbc‑utvidelsen:
ffplay -f ilbc sample.ilbc
Metode 3: Dedikerte VoIP-analyser
Nettverksdiagnostikkverktøy som Wireshark kan trekke ut og rekonstruere .ilbc‑stemme‑payloads direkte fra fangede SIP/RTP‑pakke‑sesjoner og spille dem av via den innebygde RTP‑spiller‑verktøyet.
5. Hvordan lage og konvertere .ilbc-lydfiler
Arbeid med .ilbc-lyd krever 16-bit, enkeltkanal, $8000\text{ Hz}$ inngangslyd.
Koding til iLBC med FFmpeg
For å konvertere et eksisterende .wav- eller .mp3-lydklipp til en .ilbc-bitstrøm:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Resampler lyd til den nødvendige 8 kHz‑frekvensen.-ac 1: Nedblander flerkanalslyd til mono.-c:a libilbc: Brukerlibilbc-referanse‑enkoderen.
Spesifisering av rammemodus ($20\text{ ms}$ eller $30\text{ ms}$)
Du kan velge rammemodus ved å bruke -mode‑flagget:
# 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
Dekoding av en .ilbc-fil tilbake til standard WAV
For å konvertere en .ilbc‑fil til en ukomprimert WAV‑fil som kan spilles av overalt:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Ofte stilte spørsmål (FAQ)
Q1: Hva var det primære problemet iLBC-lydformatet ble laget for å løse?
iLBC‑formatet ble utviklet for å bevare taleforståelse over IP‑nettverk ved å gjøre hver lydramme uavhengig, slik at pakke‑tapfeil ikke sprer seg til påfølgende talerammer.
Q2: Hva er de to operative bitratene til en .ilbc-fil?
En .ilbc-strøm opererer enten med $13.33\text{ kbit/s}$ når den bruker $30\text{ ms}$-rammer eller $15.20\text{ kbit/s}$ når den er konfigurert for $20\text{ ms}$-rammer.
Q3: Kan iLBC-formatet brukes til streaming av musikk med høy lydkvalitet?
Nei, iLBC er en smalbånd tale‑codec som er strengt begrenset til en $8\text{ kHz}$ samplingsfrekvens, optimalisert utelukkende for menneskelig tale mellom $90\text{ Hz}$ og $4000\text{ Hz}$.
Q4: Er iLBC-lydkodeken royaltyfri?
Ja, iLBC er fullt standardisert under IETF RFC 3951 og utgitt under en åpen kildekode, royalty‑fri 3‑klausul BSD‑lisens via WebRTC‑prosjektet.
Q5: Hvordan sammenlignes iLBC med den moderne Opus-kodeken?
Mens iLBC ga pakke‑tap skjuling for smalbånd VoIP i tidlige bredbåndsnettverk, støtter den moderne Opus‑codecen dynamiske bithastigheter, full‑bånd ($48\text{ kHz}$) lyd, og lavere algoritmisk latens.
7. Offisielle spesifikasjoner og referanser
- IETF RFC 3951 Spesifikasjon: Internet Low Bit Rate Codec (iLBC) Tale- og lydstandard
- IETF RFC 3952 Pakkeformat: Real-time Transport Protocol (RTP) Pakkeformat for iLBC
- WebRTC Åpen kildekode-prosjekt: WebRTC Codec Lisensiering & iLBC-implementering
- FFmpeg kodek-dokumentasjon: FFmpeg libilbc integrasjonsretningslinjer