1. Ce este formatul audio iLBC?
The Codecul Internet cu Rată Redusă 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.
În timp ce browserele web contemporane utilizează adesea codecul Opus pentru comunicații în timp real moderne, iLBC rămâne un standard esențial, fără redevențe, încorporat în stivele de telefonie enterprise, clienții SIP, profilurile de compatibilitate retroactivă WebRTC și echipamentele VoIP legacy fabricate de Cisco, Polycom și sistemele PBX Asterisk.
2. Caracteristici cheie ale iLBC
| Parametru | Specificație |
|---|---|
| Standardizare | IETF RFC 3951 (Codec), RFC 3952 (Încărcătură RTP) |
| Extensii de fișiere comune | .ilbc, .lbc |
| Tip Media MIME | audio/iLBC |
| Frecvență de Eșantionare | $8\text{ kHz}$ (Bandă îngustă) |
| Rezoluție de cuantizare | PCM liniar pe 16 biți |
| Canale audio | Mono (vorbire pe un singur canal) |
| Lungimi de cadru suportate | $20\text{ ms}$ mod și $30\text{ ms}$ mod |
| Rate de biți operaționale | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Biți de sarcină utilă pe bloc | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Identificator de antet magic | #!iLBC20\n ($20\text{ ms}$) sau #!iLBC30\n ($30\text{ ms}$) |
| Licențiere | Fără redevențe (open source BSD cu 3 clauze prin WebRTC) |
3. Caracteristici detaliate și design arhitectural
Codare independentă a cadrelor (propagare zero a erorilor)
Formatele tradiționale de comprimare a vorbirii, cum ar fi G.729 și codecurile din familia CELP, utilizează predicție inter-cadră, unde fiecare cadru audio depinde de informațiile de stare și de vectorii predictorului de ton din cadrul precedent. Dacă un pachet se pierde pe o rețea aglomerată, starea lipsă se propagă înainte, distorsionând audio-ul ulterior pentru câteva sute de milisecunde.
iLBC elimină această dependență. Fiecare cadru de vorbire în iLBC este codificat independent. Dacă pachetul $N$ se pierde în timpul tranzitului, pachetul $N+1$ se decodează cu fidelitate acustică completă.
Moduri de operare duale ($20\text{ ms}$ vs. $30\text{ ms}$)
Pentru a oferi inginerilor de telecomunicații o gestionare flexibilă a latenței, iLBC definește două moduri de operare obligatorii:
- $20\text{ ms}$ Mod Cadru ($15.20\text{ kbit/s}$):
- Codifică 160 de mostre audio pe cadru în 38 de octeți ($304\text{ bits}$).
- Oferă o latență de tamponare algoritmică mai mică, făcându-l potrivit pentru comunicații interactive.
- $30\text{ ms}$ Mod Cadru ($13.33\text{ kbit/s}$):
- Codifică 240 de mostre audio pe cadru în 50 de octeți ($400\text{ bits}$).
- Reduce consumul de biți cu aproximativ $12%$, optimizând eficiența încărcăturii de rețea pe conexiuni pe distanțe lungi.
Concealare avansată a pierderii pachetelor (PLC)
Când apar pachete pierdute, iLBC utilizează un filtru de sinteză LPC (Linear Predictive Coding) cu variabilă de stare care reconstruieste reprezentările lipsă ale ciclului de înălțime folosind stările de frontieră ale cadrelor vecine. În loc să creeze clicuri, pocnituri digitale sau tăieri dure, pachetele de voce pierdute se degradează treptat.
Calitatea audio vs. profilul bitrate
În condiții ideale de rețea (pierdere de pachete 0%), iLBC atinge un Scor Mediu de Opinie (MOS) de aproximativ 4.14 (din 5.0). Deși puțin sub G.711 PCM necomprimat ($\mu$-law la $\sim 4.3$), iLBC păstrează claritatea vocii la rate de pierdere a pachetelor de până la $5%\text{ to }10%$, unde inteligibilitatea G.729 sau G.711 scade substanțial.
4. Cum să deschizi și să redai fișiere audio .ilbc
Deoarece .ilbc este un format specializat de flux telefonic brut, mai degrabă decât un container media general pentru consumatori (cum ar fi MP3 sau WAV), playerele de consum mainstream nu îl pot detecta întotdeauna fără pachete de codec dedicate.
Metoda 1: Utilizarea Audacity (Importarea datelor brute)
Audacity poate importa dump-uri PCM brute sau fișiere de voce iLBC decodate:
- Porniți Audacity.
- Navigați la File > Import > Raw Data…
- Selectați fișierul și setați codificarea la Signed 16-bit PCM, ordinea de bytes la Little-endian, 1 Canal (Mono), și rata de eșantionare la 8000 Hz.
Metoda 2: Redare din linia de comandă prin FFplay
Dacă versiunea dvs. de FFmpeg este compilată cu extensia libilbc:
ffplay -f ilbc sample.ilbc
Metoda 3: Analizoare VoIP dedicate
Instrumentele de diagnosticare a rețelei, cum ar fi Wireshark, pot extrage și reconstrui încărcăturile de voce .ilbc direct din sesiunile de pachete SIP/RTP capturate și le pot reda prin utilitarul încorporat RTP Player.
5. Cum să creezi și să convertești fișiere audio .ilbc
Lucrul cu audio .ilbc necesită audio de intrare pe 16 biți, cu un singur canal, $8000\text{ Hz}$.
Codare în iLBC utilizând FFmpeg
Pentru a converti un eșantion audio existent .wav sau .mp3 într-un flux de biți .ilbc:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Re-eșantionează audio la rata necesară de 8 kHz.-ac 1: Reduce audio multi-canal la mono.-c:a libilbc: Folosește codorul de referințălibilbc.
Specificarea modului cadru ($20\text{ ms}$ sau $30\text{ ms}$)
Poți alege modul de cadru utilizând opțiunea -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
Decodarea unui fișier .ilbc în WAV standard
Pentru a converti un fișier .ilbc într-un fișier WAV necomprimat, redabil oriunde:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Întrebări Frecvente (FAQ)
Q1: Ce problemă principală a fost creată pentru a rezolva formatul audio iLBC?
Formatul iLBC a fost conceput pentru a păstra inteligibilitatea vorbirii pe rețelele IP, făcând fiecare cadru audio independent, prevenind ca erorile de pierdere a pachetelor să se răspândească în cadrele de vorbire următoare.
Q2: Care sunt cele două bitrate-uri operaționale ale unui fișier .ilbc?
Un flux .ilbc funcționează la fie $13.33\text{ kbit/s}$ când se utilizează cadre de $30\text{ ms}$, fie $15.20\text{ kbit/s}$ când este configurat pentru cadre de $20\text{ ms}$.
Q3: Poate fi utilizat formatul iLBC pentru streaming de muzică de înaltă fidelitate?
Nu, iLBC este un codec de vorbire narrowband limitat strict la o rată de eșantionare de $8\text{ kHz}$, optimizat exclusiv pentru vocea umană între $90\text{ Hz}$ și $4000\text{ Hz}$.
Q4: Este codec-ul audio iLBC fără redevențe?
Da, iLBC este complet standardizat conform IETF RFC 3951 și lansat sub o licență open-source, fără redevențe, BSD cu 3 clauze, prin proiectul WebRTC.
Q5: Cum se compară iLBC cu codec-ul modern Opus?
Deși iLBC oferea ascunderea pierderii de pachete pentru VoIP narrowband în rețelele broadband timpurii, codec-ul modern Opus suportă rate de biți dinamice, audio full-band ($48\text{ kHz}$) și o latență algoritmică mai mică.
7. Specificații oficiale și referințe
- Specificație IETF RFC 3951: Codec cu Rată Mică de Biți pe Internet (iLBC) Standard de Vorbire și Audio
- Formatul Payload IETF RFC 3952: Protocolul de Transport în Timp Real (RTP) Format Payload pentru iLBC
- Proiect Open Source WebRTC: Licențierea Codec-ului WebRTC & Implementarea iLBC
- Documentație Codec FFmpeg: Ghid de Integrare libilbc FFmpeg