1. Mi az iLBC audio formátum?
A Internet Low Bitrate Codec eredetileg a Global IP Solutions (GIPS) által lett létrehozva – egy svéd audio mérnöki vállalat, amelyet a Google 2010-ben felvásárolt. Az Internet Engineering Task Force által definiált RFC 3951 és az RFC 3952-ben leírt RTP payload kapszulázás alapján, az iLBC kifejezetten a stabil beszédátvitelre lett tervezve instabil IP kapcsolatokon.
Miközben a modern webböngészők gyakran az Opus kodeket használják a korszerű valós idejű kommunikációhoz, az iLBC továbbra is kulcsfontosságú, jogdíjmentes szabvány, amely be van ágyazva vállalati telefoniai rétegekbe, SIP kliensekbe, WebRTC visszafelé kompatibilitási profilokba, valamint a Cisco, Polycom és Asterisk PBX rendszerek által gyártott régi VoIP eszközökbe.
2. Az iLBC kulcsfontosságú jellemzői
| Paraméter | Specifikáció |
|---|---|
| Standardizálás | IETF RFC 3951 (Kodek), RFC 3952 (RTP hasznos adat) |
| Általános fájlkiterjesztések | .ilbc, .lbc |
| MIME médiatípus | audio/iLBC |
| Mintavételezési frekvencia | $8\text{ kHz}$ (Keskenysávú) |
| Kvantálási felbontás | 16 bites lineáris PCM |
| Hangcsatornák | Mono (egysávos beszéd) |
| Támogatott kerethosszak | $20\text{ ms}$ mód és $30\text{ ms}$ mód |
| Működési bitsebességek | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Blokkonkénti hasznos adatbitek | $304\text{ bit}$ ($20\text{ ms}$) / $400\text{ bit}$ ($30\text{ ms}$) |
| Mágikus fejléc azonosító | #!iLBC20\n ($20\text{ ms}$) vagy #!iLBC30\n ($30\text{ ms}$) |
| Licencelés | Royalty-Free (3-clause BSD nyílt forráskód a WebRTC-n keresztül) |
3. Mélyreható jellemzők és architekturális tervezés
Független keretkódolás (nulla hibaterjedés)
A hagyományos beszédkompressziós formátumok, mint a G.729 és a CELP-családú kodekek, inter-frame predikció-t használnak, ahol minden audio keret az előző keret állapotinformációira és pitch prediktor vektoraira támaszkodik. Ha egy csomag elveszik egy zsúfolt hálózaton, az a hiányzó állapot továbbterjed, és több száz milliszekundumig torzítja a lefelé irányuló audio-t.
Az iLBC megszünteti ezt a függőséget. Az iLBC minden beszédkerete függetlenül van kódolva. Ha a $N$ csomag elveszik az átvitel során, a $N+1$ csomag teljes akusztikus hűséggel dekódolódik.
Kettős működési módok ($20\text{ ms}$ vs. $30\text{ ms}$)
A távközlési mérnököknek rugalmas késleltéskezelést biztosítva, az iLBC két kötelező működési módot határoz meg:
- $20\text{ ms}$ Keret Mód ($15.20\text{ kbit/s}$):
- Kódolja a keretenként 160 audio mintát 38 bájtba ($304\text{ bits}$).
- Alacsonyabb algoritmikus pufferelési késleltetést biztosít, ami alkalmassá teszi interaktív kommunikációkhoz.
- $30\text{ ms}$ Keret Mód ($13.33\text{ kbit/s}$):
- Kódolja a keretenként 240 audio mintát 50 bájtba ($400\text{ bits}$).
- Körülbelül $12%$-kal csökkenti a bitfogyasztást, optimalizálva a hálózati adatcsomag hatékonyságát a hosszú távú kapcsolatokon.
Fejlett csomagveszteség elrejtés (PLC)
Amikor elveszett csomagok fordulnak elő, az iLBC egy állapotváltozós LPC (Lineáris Prediktív Kódolás) szintézis szűrőt használ, amely a szomszédos keretek határállapotaiból rekonstruálja a hiányzó pitch-ciklus reprezentációkat. A kattogások, digitális puffogások vagy erős elnémítások létrehozása helyett az elveszett hangcsomagok fokozatosan romlanak.
Hangminőség vs. Bitráta profil
Ideális hálózati körülmények (0% csomagveszteség) mellett az iLBC körülbelül 4.14 (az 5.0-ból) Mean Opinion Score (MOS) értéket ér el. Bár kissé alatta marad a tömörítetlen G.711 PCM ($\mu$-law $\sim 4.3$) értéknek, az iLBC megőrzi a hang tisztaságát akár $5%\text{ to }10%$ csomagveszteségi arányoknál is, ahol a G.729 vagy G.711 érthetősége jelentősen csökken.
4. Hogyan nyissuk meg és játsszunk le .ilbc hangfájlokat
Mivel a .ilbc egy speciális nyers telefonia adatfolyam formátum, nem pedig általános célú fogyasztói média konténer (mint az MP3 vagy WAV), a főáramú fogyasztói lejátszók nem mindig tudják felismerni dedikált kodek csomagok nélkül.
Módszer 1: Audacity használata (Nyers adatok importálása)
Az Audacity képes nyers PCM dumpok vagy dekódolt iLBC hangfájlok importálására:
- Indítsa el a Audacity-t.
- Navigáljon a File > Import > Raw Data… menüpontra.
- Válassza ki a fájlt, és állítsa be a kódolást Signed 16-bit PCM-re, a bájtrendet Little-endian, 1 Channel (Mono)-ra, valamint a mintavételezési frekvenciát 8000 Hz-ra.
Módszer 2: Parancssori lejátszás FFplay segítségével
Ha az FFmpeg verziója a libilbc kiterjesztéssel van lefordítva:
ffplay -f ilbc sample.ilbc
Módszer 3: Dedikált VoIP elemzők
Az olyan hálózati diagnosztikai eszközök, mint a Wireshark, képesek közvetlenül a rögzített SIP/RTP csomagülésekből kinyerni és rekonstruálni a .ilbc hangpayload-okat, majd lejátszani őket a beépített RTP Player segédprogrammal.
5. Hogyan hozzunk létre és konvertáljunk .ilbc hangfájlokat
A .ilbc hang használata 16 bites, egycsatornás, $8000\text{ Hz}$ bemeneti hangot igényel.
Kódolás iLBC-re FFmpeg használatával
Egy meglévő .wav vagy .mp3 hangmintát .ilbc bitfolyammá konvertáláshoz:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Újramintavételezi a hangot a szükséges 8 kHz-es frekvenciára.-ac 1: Többcsatornás hangot monóra kever le.-c:a libilbc: Alibilbcreferencia enkódert használja.
A keret módjának megadása ($20\text{ ms}$ vagy $30\text{ ms}$)
A -mode kapcsolóval választhatja ki a keret módot:
# 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
Az .ilbc fájl visszafejtése szabványos WAV formátumba
Egy .ilbc fájl átalakításához egy tetszőleges lejátszóval kompatibilis, tömörítetlen WAV fájlba:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Gyakran Ismételt Kérdések (GYIK)
Q1: Milyen fő problémát oldott meg az iLBC audio formátum?
Az iLBC formátumot úgy tervezték, hogy megőrizze a beszéd érthetőségét az IP hálózatokon, azáltal, hogy minden hangkeretet függetlené tesz, megakadályozva, hogy a csomagvesztési hibák láncreakcióba kerüljenek a következő beszédkeretekben.
Q2: Melyek az .ilbc fájl két működő bitsebessége?
Egy .ilbc adatfolyam vagy $13.33\text{ kbit/s}$ működik $30\text{ ms}$ keretek használatakor, vagy $15.20\text{ kbit/s}$ amikor $20\text{ ms}$ keretekre van beállítva.
Q3: Használható az iLBC formátum nagy felbontású zene streamingjére?
Nem, az iLBC egy keskenysávú beszédkódoló, amely szigorúan $8\text{ kHz}$ mintavételi frekvenciára korlátozódik, kizárólag az emberi beszéd $90\text{ Hz}$ és $4000\text{ Hz}$ közötti tartományára optimalizálva.
Q4: Az iLBC audio kodek royalty-mentes?
Igen, az iLBC teljesen szabványosított az IETF RFC 3951 szerint, és a WebRTC projekt keretében nyílt forráskódú, jogdíjmentes, 3 klauzulású BSD licenc alatt kerül kiadásra.
Q5: Hogyan viszonyul az iLBC a modern Opus kodekhez?
Miközben az iLBC csomagveszteség elrejtést biztosított a keskenysávú VoIP-hez a korai széles sávú hálózatokban, a modern Opus kodek dinamikus bitrátákat, teljes sávú ($48\text{ kHz}$) hangot és alacsonyabb algoritmikus késleltetést támogat.
7. Hivatalos specifikációk és hivatkozások
- IETF RFC 3951 specifikáció: Internet Alacsony Bitsebességű Kodek (iLBC) Beszéd- és Hangstandard
- IETF RFC 3952 payload formátum: Valós idejű szállítási protokoll (RTP) payload formátum iLBC-hez
- WebRTC nyílt forráskódú projekt: WebRTC kodek licencelés és iLBC megvalósítás
- FFmpeg kodek dokumentáció: FFmpeg libilbc integrációs útmutató