1. Czym jest format audio iLBC?
Internet Low Bitrate Codec został pierwotnie stworzony przez Global IP Solutions (GIPS) — szwedzką firmę inżynierii dźwięku, którą Google przejęło w 2010 roku. Zdefiniowany przez Internet Engineering Task Force w ramach RFC 3951 z enkapsulacją ładunku RTP opisanej w RFC 3952, iLBC został zaprojektowany specjalnie do niezawodnego przesyłania mowy przez niestabilne połączenia IP.
Podczas gdy współczesne przeglądarki internetowe często używają kodeka Opus do nowoczesnej komunikacji w czasie rzeczywistym, iLBC pozostaje kluczowym, wolnym od opłat standardem wbudowanym w stosy telefonii korporacyjnej, klientów SIP, profile zgodności wstecznej WebRTC oraz starsze urządzenia VoIP produkowane przez Cisco, Polycom i systemy PBX Asterisk.
2. Kluczowe cechy iLBC
| Parametr | Specyfikacja |
|---|---|
| Standaryzacja | IETF RFC 3951 (Kodek), RFC 3952 (Ładunek RTP) |
| Popularne rozszerzenia plików | .ilbc, .lbc |
| Typ mediów MIME | audio/iLBC |
| Częstotliwość próbkowania | $8\text{ kHz}$ (Wąskopasmowy) |
| Rozdzielczość kwantyzacji | 16-bitowy liniowy PCM |
| Kanały audio | Mono (Jednokanałowa mowa) |
| Obsługiwane długości ramek | $20\text{ ms}$ tryb i $30\text{ ms}$ tryb |
| Operacyjne przepływności bitowe | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Bity ładunku na blok | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Identyfikator magicznego nagłówka | #!iLBC20\n ($20\text{ ms}$) lub #!iLBC30\n ($30\text{ ms}$) |
| Licencjonowanie | Bezpłatny (otwartoźródłowy BSD 3-klauzulowy poprzez WebRTC) |
3. Szczegółowe funkcje i projekt architektury
Niezależne kodowanie ramek (zerowa propagacja błędów)
Tradycyjne formaty kompresji mowy, takie jak G.729 i kodeki rodziny CELP, wykorzystują inter-frame prediction, gdzie każda ramka audio zależy od informacji o stanie i wektorów predykcji tonu z poprzedniej ramki. Jeśli pakiet zostanie utracony w zatłoczonej sieci, brakujący stan propaguje się dalej, psując dźwięk w kolejnych setkach milisekund.
iLBC eliminuje tę zależność. Każda ramka mowy w iLBC jest kodowana niezależnie. Jeśli pakiet $N$ zostanie utracony podczas transmisji, pakiet $N+1$ zostaje zdekodowany z pełną wiernością akustyczną.
Dwa tryby pracy ($20\text{ ms}$ vs. $30\text{ ms}$)
Aby zapewnić inżynierom telekomunikacji elastyczne zarządzanie opóźnieniem, iLBC definiuje dwa obowiązkowe tryby pracy:
- $20\text{ ms}$ Tryb ramki ($15.20\text{ kbit/s}$):
- Koduje 160 próbek audio na ramkę do 38 bajtów ($304\text{ bits}$).
- Zapewnia niższe opóźnienie buforowania algorytmicznego, co czyni go dobrze dopasowanym do komunikacji interaktywnej.
- $30\text{ ms}$ Tryb ramki ($13.33\text{ kbit/s}$):
- Koduje 240 próbek audio na ramkę do 50 bajtów ($400\text{ bits}$).
- Obniża zużycie bitów o około $12%$, optymalizując wydajność ładunku sieciowego w połączeniach długodystansowych.
Zaawansowane ukrywanie utraty pakietów (PLC)
Gdy dochodzi do utraty pakietów, iLBC wykorzystuje filtr syntezy LPC (Linear Predictive Coding) ze zmienną stanową, który odtwarza brakujące reprezentacje cykli tonu, używając stanów brzegowych z sąsiednich ramek. Zamiast generować kliknięcia, cyfrowe popy lub ostre wyciszenia, utracone pakiety głosu degradują się łagodnie.
Jakość dźwięku vs. profil bitrate
Przy idealnych warunkach sieciowych (0% utraty pakietów), iLBC osiąga średnią ocenę słuchową (MOS) w przybliżeniu 4,14 (z 5,0). Choć nieco niżej niż nieskompresowany G.711 PCM ($\mu$-law przy $\sim 4,3$), iLBC zachowuje klarowność głosu przy współczynnikach utraty pakietów sięgających $5%\text{ to }10%$, gdzie zrozumiałość G.729 lub G.711 spada znacząco.
4. Jak otworzyć i odtworzyć pliki audio .ilbc
Ponieważ .ilbc jest specjalistycznym formatem surowego strumienia telefonicznego, a nie uniwersalnym kontenerem multimedialnym dla konsumentów (takim jak MP3 czy WAV), popularne odtwarzacze konsumenckie nie zawsze mogą go wykryć bez dedykowanych pakietów kodeków.
Metoda 1: Korzystanie z Audacity (Importowanie surowych danych)
Audacity może importować surowe zrzuty PCM lub zdekompresowane pliki głosowe iLBC:
- Uruchom Audacity.
- Przejdź do File > Import > Raw Data…
- Wybierz plik i ustaw kodowanie na Signed 16-bit PCM, kolejność bajtów na Little-endian, 1 kanał (Mono) oraz częstotliwość próbkowania na 8000 Hz.
Metoda 2: Odtwarzanie z wiersza poleceń za pomocą FFplay
Jeśli Twoja kompilacja FFmpeg została zbudowana z rozszerzeniem libilbc:
ffplay -f ilbc sample.ilbc
Metoda 3: Dedykowane analizatory VoIP
Narzędzia diagnostyczne sieci, takie jak Wireshark, mogą wyodrębniać i odtwarzać ładunki głosowe .ilbc bezpośrednio z przechwyconych sesji pakietów SIP/RTP i odtwarzać je za pomocą wbudowanego narzędzia RTP Player.
5. Jak tworzyć i konwertować pliki audio .ilbc
Praca z dźwiękiem .ilbc wymaga 16‑bitowego, jednoczęstowego, wejściowego dźwięku o częstotliwości $8000\text{ Hz}$.
Kodowanie do iLBC przy użyciu FFmpeg
Aby przekonwertować istniejącą próbkę dźwiękową .wav lub .mp3 na strumień bitów .ilbc:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Przeskalowuje dźwięk do wymaganego częstotliwości 8 kHz.-ac 1: Redukuje wielokanałowy dźwięk do mono.-c:a libilbc: Używa referencyjnego enkoderalibilbc.
Określanie trybu ramki ($20\text{ ms}$ lub $30\text{ ms}$)
Możesz wybrać tryb ramki używając flagi -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
Dekodowanie pliku .ilbc do standardowego formatu WAV
Aby przekonwertować plik .ilbc na nieskompresowany plik WAV odtwarzalny wszędzie:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Najczęściej zadawane pytania (FAQ)
Q1: Jaki podstawowy problem miał rozwiązać format audio iLBC?
Format iLBC został zaprojektowany tak, aby zachować zrozumiałość mowy w sieciach IP, czyniąc każdą ramkę audio niezależną, co zapobiega rozprzestrzenianiu się błędów utraty pakietów na kolejne ramki mowy.
Q2: Jakie są dwa operacyjne bitrate pliku .ilbc?
Strumień .ilbc działa z prędkością $13.33\text{ kbit/s}$ przy użyciu ramek $30\text{ ms}$ lub $15.20\text{ kbit/s}$ gdy skonfigurowany jest na ramki $20\text{ ms}$.
Q3: Czy format iLBC może być używany do strumieniowania muzyki wysokiej jakości?
Nie, iLBC jest kodekiem mowy wąskopasmowym ściśle ograniczonym do częstotliwości próbkowania $8\text{ kHz}$, zoptymalizowanym wyłącznie dla ludzkiej mowy w zakresie od $90\text{ Hz}$ do $4000\text{ Hz}$.
Q4: Czy kodek audio iLBC jest wolny od opłat licencyjnych?
Tak, iLBC jest w pełni znormalizowany w ramach IETF RFC 3951 i udostępniony na licencji open‑source, wolnej od opłat licencyjnych, 3‑klauzulowej licencji BSD poprzez projekt WebRTC.
Q5: Jak iLBC wypada w porównaniu z nowoczesnym kodekiem Opus?
Podczas gdy iLBC zapewniał ukrywanie utraty pakietów dla wąskopasmowego VoIP w wczesnych sieciach szerokopasmowych, nowoczesny kodek Opus obsługuje dynamiczne przepływności bitów, dźwięk pełnopasmowy ($48\text{ kHz}$) oraz niższe opóźnienie algorytmiczne.
7. Oficjalne specyfikacje i odniesienia
- Specyfikacja IETF RFC 3951: Standard mowy i audio Internet Low Bit Rate Codec (iLBC)
- Format ładunku IETF RFC 3952: Format ładunku Real-time Transport Protocol (RTP) dla iLBC
- Projekt open source WebRTC: Licencjonowanie kodeków WebRTC i implementacja iLBC
- Dokumentacja kodeków FFmpeg: Wytyczne integracji libilbc w FFmpeg