1. Was ist das iLBC-Audioformat?
Der Internet Low Bitrate Codec wurde ursprünglich von Global IP Solutions (GIPS) erstellt – einem schwedischen Audio‑Engineering‑Unternehmen, das 2010 von Google übernommen wurde. Definiert von der Internet Engineering Task Force unter RFC 3951 mit einer RTP‑Payload‑Kapselung, die in RFC 3952 beschrieben ist, wurde iLBC speziell für die robuste Sprachübertragung über instabile IP‑Verbindungen entwickelt.
Während moderne Webbrowser häufig den Opus‑Codec für zeitgemäße Echtzeitkommunikation verwenden, bleibt iLBC ein entscheidender, lizenzfreier Standard, der in Unternehmens‑Telefonie‑Stacks, SIP‑Clients, WebRTC‑Abwärtskompatibilitätsprofilen und älteren VoIP‑Appliances von Cisco, Polycom und Asterisk‑PBX‑Systemen eingebettet ist.
2. Wichtige Merkmale von iLBC
| Parameter | Spezifikation |
|---|---|
| Standardisierung | IETF RFC 3951 (Codec), RFC 3952 (RTP‑Payload) |
| Gemeinsame Dateierweiterungen | .ilbc, .lbc |
| MIME‑Medientyp | audio/iLBC |
| Abtastrate | $8\text{ kHz}$ (Schmalband) |
| Quantisierungsauflösung | 16‑Bit lineares PCM |
| Audiokanäle | Mono (Einzelkanal‑Sprache) |
| Unterstützte Frame-Längen | $20\text{ ms}$ Modus und $30\text{ ms}$ Modus |
| Betriebsbitraten | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Payload-Bits pro Block | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Magischer Header-Identifikator | #!iLBC20\n ($20\text{ ms}$) oder #!iLBC30\n ($30\text{ ms}$) |
| Lizenzierung | Lizenzfrei (3-Klausel BSD Open Source über WebRTC) |
3. Ausführliche Funktionen & Architekturgestaltung
Unabhängige Frame-Codierung (Keine Fehlerausbreitung)
Traditionelle Sprachkompressionsformate wie G.729 und CELP‑Familien‑Codecs nutzen Inter‑Frame‑Prädiktion, bei der jeder Audio‑Frame von Zustandsinformationen und Pitch‑Prädiktor‑Vektoren des vorherigen Frames abhängt. Wenn ein Paket in einem stark ausgelasteten Netzwerk verloren geht, propagiert dieser fehlende Zustand nach vorne und verfälscht das nachfolgende Audio für mehrere hundert Millisekunden.
iLBC eliminiert diese Abhängigkeit. Jeder Sprachframe in iLBC wird unabhängig codiert. Wenn Paket $N$ während der Übertragung verloren geht, wird Paket $N+1$ mit voller akustischer Treue dekodiert.
Duale Betriebsmodi ($20\text{ ms}$ vs. $30\text{ ms}$)
Um Telekommunikationsingenieuren ein flexibles Latenzmanagement zu ermöglichen, definiert iLBC zwei obligatorische Betriebsmodi:
- $20\text{ ms}$ Frame-Modus ($15.20\text{ kbit/s}$):
- Kodiert 160 Audiosamples pro Frame in 38 Bytes ($304\text{ bits}$).
- Bietet eine geringere algorithmische Pufferlatenz, wodurch es sich gut für interaktive Kommunikation eignet.
- $30\text{ ms}$ Frame-Modus ($13.33\text{ kbit/s}$):
- Kodiert 240 Audiosamples pro Frame in 50 Bytes ($400\text{ bits}$).
- Reduziert den Bitverbrauch um etwa $12%$, wodurch die Effizienz der Netzwerkpayloads über Langstreckenverbindungen optimiert wird.
Erweiterte Paketverlustkompensation (PLC)
Wenn Pakete verloren gehen, verwendet iLBC einen zustandsvariablen LPC (Linear Predictive Coding) Synthesefilter, der fehlende Pitch‑Zyklus‑Darstellungen mithilfe von Randzuständen benachbarter Frames rekonstruiert. Anstatt Klicks, digitale Knackgeräusche oder harte Stummschaltungen zu erzeugen, verschlechtern sich verlorene Sprachpakete sanft.
Audioqualität vs. Bitratenprofil
Unter idealen Netzwerkbedingungen (0 % Paketverlust) erreicht iLBC einen Mean Opinion Score (MOS) von etwa 4.14 (von 5.0). Während es leicht unter dem unkomprimierten G.711 PCM ($\mu$-law bei $\sim 4.3$) liegt, behält iLBC die Sprachklarheit bei Paketverlusten von bis zu $5%\text{ bis }10%$ bei, wo die Verständlichkeit von G.729 oder G.711 deutlich abnimmt.
4. Wie man .ilbc-Audiodateien öffnet und abspielt
Da .ilbc ein spezialisiertes Roh-Telefonie-Stream-Format und kein allgemeiner Consumer-Mediencontainer (wie MP3 oder WAV) ist, können gängige Consumer‑Player es nicht immer erkennen, ohne dedizierte Codec‑Pakete.
Methode 1: Audacity verwenden (Rohdaten importieren)
Audacity kann Roh‑PCM‑Dumps oder dekodierte iLBC‑Sprachdateien importieren:
- Audacity starten.
- Gehe zu Datei > Importieren > Rohdaten…
- Wähle die Datei aus und stelle die Kodierung auf Signed 16-bit PCM, Byte‑Reihenfolge auf Little-endian, 1 Kanal (Mono) und die Abtastrate auf 8000 Hz ein.
Methode 2: Wiedergabe über die Befehlszeile mit FFplay
Falls deine FFmpeg‑Build mit der libilbc‑Erweiterung kompiliert wurde:
ffplay -f ilbc sample.ilbc
Methode 3: Spezialisierte VoIP-Analysetools
Netzwerk‑Diagnosetools wie Wireshark können .ilbc‑Sprachpayloads direkt aus aufgezeichneten SIP/RTP‑Paketsitzungen extrahieren und rekonstruieren und sie über das integrierte RTP‑Player‑Dienstprogramm abspielen.
5. Wie man .ilbc-Audiodateien erstellt und konvertiert
Die Arbeit mit .ilbc-Audio erfordert 16‑Bit, einkanaliges, $8000\text{ Hz}$ Eingabe‑Audio.
Kodierung zu iLBC mit FFmpeg
Um ein vorhandenes .wav‑ oder .mp3‑Audio‑Beispiel in einen .ilbc‑Bitstrom zu konvertieren:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Resampelt das Audio auf die erforderliche 8‑kHz‑Rate.-ac 1: Mischt Mehrkanal‑Audio zu Mono herunter.-c:a libilbc: Verwendet den Referenz‑Encoderlibilbc.
Festlegen des Frame-Modus ($20\text{ ms}$ oder $30\text{ ms}$)
Sie können den Frame‑Modus mit dem -mode‑Flag auswählen:
# 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
Dekodieren einer .ilbc-Datei zurück zu Standard-WAV
Um eine .ilbc‑Datei in eine unkomprimierte WAV‑Datei zu konvertieren, die überall abgespielt werden kann:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Häufig gestellte Fragen (FAQ)
Q1: Welches Hauptproblem sollte das iLBC-Audiocodec lösen?
Das iLBC‑Format wurde entwickelt, um die Sprachverständlichkeit über IP‑Netzwerke hinweg zu erhalten, indem jedes Audio‑Frame unabhängig gemacht wird, wodurch Paketverlust‑Fehler nicht auf nachfolgende Sprach‑Frames übergreifen.
Q2: Welche beiden Betriebsbitraten hat eine .ilbc-Datei?
Ein .ilbc-Stream arbeitet entweder mit $13.33\text{ kbit/s}$ bei Verwendung von $30\text{ ms}$-Frames oder mit $15.20\text{ kbit/s}$, wenn er für $20\text{ ms}$-Frames konfiguriert ist.
Q3: Kann das iLBC-Format für das Streaming von hochqualitativer Musik verwendet werden?
Nein, iLBC ist ein Narrowband-Sprachcodec, der strikt auf eine Abtastrate von $8\text{ kHz}$ begrenzt ist und ausschließlich für menschliche Sprache zwischen $90\text{ Hz}$ und $4000\text{ Hz}$ optimiert wurde.
Q4: Ist der iLBC-Audiocodec lizenzfrei?
Ja, iLBC ist vollständig nach IETF RFC 3951 standardisiert und über das WebRTC-Projekt unter einer Open-Source-, lizenzgebührenfreien 3-Klausel-BSD-Lizenz veröffentlicht.
Q5: Wie vergleicht sich iLBC mit dem modernen Opus-Codec?
Während iLBC in frühen Breitbandnetzen Paketverlustverdeckung für Narrowband-VoIP bot, unterstützt der moderne Opus-Codec dynamische Bitraten, Full‑Band‑Audio ($48\text{ kHz}$) und eine geringere algorithmische Latenz.
7. Offizielle Spezifikationen & Referenzen
- IETF RFC 3951 Spezifikation: Internet Low Bit Rate Codec (iLBC) Speech and Audio Standard
- IETF RFC 3952 Nutzdatenformat: Real-time Transport Protocol (RTP) Payload Format for iLBC
- WebRTC Open-Source-Projekt: WebRTC Codec Licensing & iLBC Implementation
- FFmpeg Codec Dokumentation: FFmpeg libilbc Integrationsrichtlinien