1. Vad är iLBC-ljudformatet?
The Internet Low Bitrate Codec was originally created by Global IP Solutions (GIPS)—a Swedish audio engineering firm acquired by Google in 2010. Defined by the Internet Engineering Task Force under RFC 3951 with RTP payload encapsulation outlined in RFC 3952, iLBC was designed specifically for robust speech transmission over unstable IP links.
While contemporary web browsers often use the Opus codec for modern real-time communication, iLBC remains a pivotal, royalty-free standard embedded in enterprise telephony stacks, SIP clients, WebRTC backward compatibility profiles, and legacy VoIP appliances manufactured by Cisco, Polycom, and Asterisk PBX systems.
2. Viktiga egenskaper hos iLBC
| Parameter | Specifikation |
|---|---|
| Standardisering | IETF RFC 3951 (Codec), RFC 3952 (RTP‑payload) |
| Vanliga filändelser | .ilbc, .lbc |
| MIME-medietyp | audio/iLBC |
| Samplingsfrekvens | $8\text{ kHz}$ (smalband) |
| Kvantiseringsupplösning | 16-bit linjär PCM |
| Ljudkanaler | Mono (Enkelkanalssamtal) |
| Stödda ramlängder | $20\text{ ms}$ läge och $30\text{ ms}$ läge |
| Operativa bithastigheter | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Payload-bitar per block | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Magisk rubrikidentifierare | #!iLBC20\n ($20\text{ ms}$) or #!iLBC30\n ($30\text{ ms}$) |
| Licensiering | Royaltyfri (3‑klausul BSD öppen källkod via WebRTC) |
3. Djupgående funktioner och arkitekturdesign
Oberoende ramkodning (Ingen felpropagering)
Traditionella talkomprimeringsformat som G.729 och CELP-familjens kodekar använder inter-frame prediction, där varje ljudram beror på tillståndsinformation och tonhöjdpredictorvektorer från föregående ram. Om ett paket tappas bort i ett överbelastat nätverk sprider sig det saknade tillståndet framåt och förvränger efterföljande ljud i flera hundra millisekunder.
iLBC eliminerar detta beroende. Varje talram i iLBC kodas oberoende. Om paket $N$ tappas bort under överföringen, avkodas paket $N+1$ med full akustisk trohet.
Dubbel driftläge ($20\text{ ms}$ vs. $30\text{ ms}$)
För att ge telekommunikationsingenjörer flexibel fördröjningshantering definierar iLBC två obligatoriska driftlägen:
- $20\text{ ms}$ Ramläge ($15.20\text{ kbit/s}$):
- Kodar 160 ljudprover per ram till 38 byte ($304\text{ bits}$).
- Ger lägre algoritmisk buffertfördröjning, vilket gör den väl lämpad för interaktiv kommunikation.
- $30\text{ ms}$ Ramläge ($13.33\text{ kbit/s}$):
- Kodar 240 ljudprover per ram till 50 byte ($400\text{ bits}$).
- Minskar bitförbrukningen med ungefär $12%$, vilket optimerar nätverkspayloadens effektivitet över långdistansanslutningar.
Avancerad paketförlustkompensation (PLC)
När förlorade paket uppstår använder iLBC ett tillståndsvariabel-LPC (Linear Predictive Coding) syntesfilter som rekonstruerar saknade tonhöjds-cykelrepresentationer med hjälp av gränstillstånd från närliggande ramar. Istället för att skapa klick, digitala popp eller hårda tystningar, försämras förlorade röstpaket på ett graciöst sätt.
Ljudkvalitet vs. bithastighetsprofil
Under ideala nätverksförhållanden (0% paketförlust), iLBC uppnår ett Mean Opinion Score (MOS) på ungefär 4.14 (av 5.0). Även om det är något under den okomprimerade G.711 PCM ($\mu$-law vid $\sim 4.3$), behåller iLBC röstklarhet vid paketförlustnivåer så höga som $5%\text{ to }10%$, där G.729 eller G.711:s tydlighet minskar avsevärt.
4. Hur man öppnar och spelar .ilbc-ljudfiler
Eftersom .ilbc är ett specialiserat rått telefonistreamformat snarare än en allmän konsumentmediekontainer (som MP3 eller WAV), kan vanliga konsumentspelare inte alltid upptäcka det utan dedikerade codec‑paket.
Metod 1: Använda Audacity (Importera rådata)
Audacity kan importera råa PCM‑dumpningar eller avkodade iLBC‑röstfiler:
- Starta Audacity.
- Navigera till File > Import > Raw Data…
- Välj filen och ställ in kodningen till Signed 16-bit PCM, byteordning till Little-endian, 1 Channel (Mono), och samplingsfrekvens till 8000 Hz.
Metod 2: Kommandoradsuppspelning via FFplay
Om din FFmpeg‑byggnad är kompilerad med libilbc‑tillägget:
ffplay -f ilbc sample.ilbc
Metod 3: Dedikerade VoIP-analysverktyg
Nätverksdiagnostikverktyg som Wireshark kan extrahera och rekonstruera .ilbc‑röstpayloads direkt från inspelade SIP/RTP‑paketsessioner och spela upp dem via den inbyggda RTP‑spelaren.
5. Hur man skapar och konverterar .ilbc-ljudfiler
Att arbeta med .ilbc-ljud kräver 16-bitars, enkelkanalig, $8000\text{ Hz}$ ingångsljud.
Kodning till iLBC med FFmpeg
För att konvertera ett befintligt .wav- eller .mp3-ljudprov till en .ilbc-bitström:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Sampler om ljudet till den erforderliga 8 kHz-frekvensen.-ac 1: Nedmixar flerkanaligt ljud till mono.-c:a libilbc: Använderlibilbc-referenskodaren.
Specificering av ramläget ($20\text{ ms}$ eller $30\text{ ms}$)
Du kan välja ramläget med flaggan -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
Avkoda en .ilbc-fil tillbaka till standard WAV
För att konvertera en .ilbc-fil till en okomprimerad WAV-fil som kan spelas upp var som helst:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Vanliga frågor (FAQ)
Q1: Vilket primärt problem skapades iLBC-ljudformatet för att lösa?
iLBC-formatet konstruerades för att bevara talförståelsen över IP-nätverk genom att göra varje ljudram oberoende, vilket förhindrar att paketförluster sprider sig till efterföljande talramar.
Q2: Vilka är de två operativa bitraterna för en .ilbc-fil?
En .ilbc-ström körs antingen med $13.33\text{ kbit/s}$ när $30\text{ ms}$-ramar används eller $15.20\text{ kbit/s}$ när den är konfigurerad för $20\text{ ms}$-ramar.
Q3: Kan iLBC-formatet användas för streaming av högkvalitativ musik?
Nej, iLBC är en smalbandad talcodec som strikt är begränsad till en samplingsfrekvens på $8\text{ kHz}$, optimerad uteslutande för mänskligt tal mellan $90\text{ Hz}$ och $4000\text{ Hz}$.
Q4: Är iLBC-ljudcodecen royaltyfri?
Ja, iLBC är fullt standardiserad enligt IETF RFC 3951 och släppt under en öppen källkod, royaltyfri 3‑klausul BSD-licens via WebRTC-projektet.
Q5: Hur jämför sig iLBC med den moderna Opus-codecen?
Medan iLBC erbjöd paketförlustdöljning för smalbandad VoIP i tidiga bredbandsnätverk, stödjer den moderna Opus-codecen dynamiska bithastigheter, helband ($48\text{ kHz}$) ljud och lägre algoritmlatens.
7. Officiella specifikationer och referenser
- IETF RFC 3951-specifikation: Internet Low Bit Rate Codec (iLBC) tal- och ljudstandard
- IETF RFC 3952 Payload-format: Real-time Transport Protocol (RTP) payloadformat för iLBC
- WebRTC Open Source-projekt: WebRTC codeclicensiering & iLBC-implementation
- FFmpeg Codec-dokumentation: FFmpeg libilbc Integrationsriktlinjer