1. Mikä on iLBC-äänimuoto?
Internet Low Bitrate Codec luotiin alun perin Global IP Solutions (GIPS) – ruotsalainen äänitekniikan yritys, jonka Google hankki vuonna 2010. Internet Engineering Task Force määritteli sen RFC 3951 -standardin mukaisesti, ja RTP‑payload‑kapselointi on kuvattu RFC 3952 -dokumentissa. iLBC suunniteltiin erityisesti kestävään puheensiirtoon epävakaiden IP‑linkkien yli.
Vaikka nykyaikaiset verkkoselaimet käyttävät usein Opus‑koodekkia moderniin reaaliaikaiseen viestintään, iLBC on edelleen keskeinen, rojaltivapaa standardi, joka on sisällytetty yritys‑puhelinjärjestelmiin, SIP‑asiakkaisiin, WebRTC‑takaisinkompatibiliteettiprofiileihin sekä perinteisiin Cisco‑, Polycom‑ ja Asterisk‑PBX‑järjestelmien valmistamiin VoIP‑laitteisiin.
2. iLBC:n keskeiset ominaisuudet
| Parametri | Määrittely |
|---|---|
| Standardisointi | IETF RFC 3951 (Koodekki), RFC 3952 (RTP‑payload) |
| Yleiset tiedostopäätteet | .ilbc, .lbc |
| MIME-mediatyyppi | audio/iLBC |
| Näytteenottotaajuus | $8\text{ kHz}$ (kapeakaistainen) |
| Kvanttausresoluutio | 16-bittinen lineaarinen PCM |
| Äänikanavat | Mono (yksikanavainen puhe) |
| Tuetut kehyspituudet | $20\text{ ms}$ tila ja $30\text{ ms}$ tila |
| Operatiiviset bittinopeudet | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Lähetysbittimäärä per lohko | $304\text{ bittiä}$ ($20\text{ ms}$) / $400\text{ bittiä}$ ($30\text{ ms}$) |
| Taikapään tunniste | #!iLBC20\n ($20\text{ ms}$) tai #!iLBC30\n ($30\text{ ms}$) |
| Lisensointi | Royalty-Free (3-lauseinen BSD avoin lähdekoodi WebRTC:n kautta) |
3. Syvälliset ominaisuudet ja arkkitehtuurisuunnittelu
Itsenäinen kehysenkoodaus (virheiden nollapropagointi)
Perinteiset puheenk compressioformaatit, kuten G.729 ja CELP-perheen koodekit, käyttävät inter-frame-prediktio:ssa, jossa jokainen ääniraita riippuu edellisen kehyksen tilatiedoista ja sävelkorkeuden ennustajavektoreista. Jos paketti katoaa ruuhkaisessa verkossa, tämä puuttuva tila leviää eteenpäin, sotkien alavirran äänen useiden satojen millisekuntien ajan.
iLBC poistaa tämän riippuvuuden. Jokainen puhekehyks iLBC:ssä koodataan itsenäisesti. Jos paketti $N$ katoaa siirron aikana, paketti $N+1$ puretaan täydellisellä akustisella tarkkuudella.
Kaksi toimintatilaa ($20\text{ ms}$ vs. $30\text{ ms}$)
Jotta telekommunikaatioinsinööreille voidaan tarjota joustavaa latenssinhallintaa, iLBC määrittelee kaksi pakollista toimintatilaa:
- $20\text{ ms}$ Kehystila ($15.20\text{ kbit/s}$):
- Koodaa 160 ääniä näytettä per kehys 38 tavuun ($304\text{ bits}$).
- Tarjoaa alhaisemman algoritmisen puskurointilatenssin, mikä tekee siitä hyvin sopivan interaktiiviseen viestintään.
- $30\text{ ms}$ Kehystila ($13.33\text{ kbit/s}$):
- Koodaa 240 ääniä näytettä per kehys 50 tavuun ($400\text{ bits}$).
- Alentaa bittikulutusta noin $12%$:lla, optimoiden verkon kuormituksen tehokkuutta pitkän matkan yhteyksissä.
Edistynyt pakettihäviön peittely (PLC)
Kun paketteja menetetään, iLBC käyttää tilamuuttujaa LPC (Lineaarinen ennustava koodaus) -synteesisuodatinta, joka rekonstruoi puuttuvat sävelkierroksen esitykset käyttämällä vierekkäisten kehysten raja-tiloja. Sen sijaan, että syntyisi napsautuksia, digitaalisia pop-ääniä tai karkeita mykistyksiä, menetetyt äänipaketit heikkenevät hallitusti.
Äänenlaatu vs. bittinopeusprofiili
Ihanteellisissa verkko-olosuhteissa (0% pakettihäviö) iLBC saavuttaa keskimääräisen mielipiteen arvion (MOS) noin 4,14 (5,0:sta). Vaikka se on hieman alle pakkaamattoman G.711 PCM:n ($\mu$-law noin $\sim 4.3$), iLBC säilyttää äänen selkeyden pakettihäviöprosenttien ollessa jopa $5%\text{ to }10%$, jolloin G.729:n tai G.711:n ymmärrettävyys heikkenee merkittävästi.
4. Kuinka avata ja toistaa .ilbc-äänitiedostoja
Koska .ilbc on erikoistunut raaka puhelinkierron formaatti eikä yleiskäyttöinen kuluttajamedia-säiliö (kuten MP3 tai WAV), tavalliset kuluttajasoittimet eivät aina pysty tunnistamaan sitä ilman erillisiä koodekkipaketteja.
Menetelmä 1: Audacityn käyttö (raaka‑datan tuonti)
Audacity voi tuoda raakaa PCM-datankappaleita tai dekoodattuja iLBC-äänitiedostoja:
- Käynnistä Audacity.
- Siirry kohtaan File > Import > Raw Data…
- Valitse tiedosto ja aseta koodaus Signed 16-bit PCM, tavujärjestys Little-endian, 1 kanava (Mono), ja näytteenottotaajuus 8000 Hz.
Menetelmä 2: Komentorivitoisto FFplayn kautta
Jos FFmpeg-rakenteesi on käännetty libilbc-laajennuksella:
ffplay -f ilbc sample.ilbc
Menetelmä 3: Omistetut VoIP-analysoijat
Verkon diagnostiikkatyökalut, kuten Wireshark, voivat poimia ja rekonstruoida .ilbc-äänipaketit suoraan kaapatuista SIP/RTP-pakettisessioista ja toistaa ne sisäänrakennetun RTP Player -apuohjelman kautta.
5. Kuinka luoda ja muuntaa .ilbc-äänitiedostoja
.ilbc-äänen käsittely vaatii 16-bittisen, yhden kanavan, $8000\text{ Hz}$ sisääntulon.
Koodaus iLBC:ksi FFmpegin avulla
Muunna olemassa oleva .wav- tai .mp3-ääninäyte .ilbc-bittivirroksi:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Näytteenottotaajuus muutetaan vaadituksi 8 kHz -taajuudeksi.-ac 1: Yhdistää monikanavaisen äänen monoksi.-c:a libilbc: Käyttäälibilbc-referenssikoodaajaa.
Kehyksen tilan määrittäminen ($20\text{ ms}$ tai $30\text{ ms}$)
Voit valita kehyksen tilan -mode-lipulla:
# 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
.ilbc-tiedoston purkaminen takaisin standardi WAV-muotoon
Muunna .ilbc-tiedosto pakkaamattomaksi WAV-tiedostoksi, joka on toistettavissa missä tahansa:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Usein kysytyt kysymykset (FAQ)
Q1: Mikä ensisijainen ongelma iLBC-äänimuoto luotiin ratkaisemaan?
iLBC-muoto suunniteltiin säilyttämään puheen ymmärrettävyys IP-verkkojen yli tekemällä jokainen äänikehys itsenäiseksi, mikä estää pakettihäviövirheiden leviämisen seuraaviin puhekehyksiin.
Q2: Mitkä ovat .ilbc-tiedoston kaksi toiminnallista bittinopeutta?
.ilbc-virta toimii joko $13.33\text{ kbit/s}$ käyttäessä $30\text{ ms}$ kehyksiä tai $15.20\text{ kbit/s}$ kun se on konfiguroitu $20\text{ ms}$ kehyksiin.
Q3: Voiko iLBC-muotoa käyttää korkean tarkkuuden musiikin suoratoistoon?
Ei, iLBC on kapeakaistainen puhekoodekki, joka on tiukasti rajoitettu $8\text{ kHz}$ näytteenottotaajuuteen ja on optimoitu yksinomaan ihmisen puheelle välillä $90\text{ Hz}$ ja $4000\text{ Hz}$.
Q4: Onko iLBC-äänikoodekki rojaltivapaa?
Kyllä, iLBC on täysin standardoitu IETF RFC 3951 -standardin mukaisesti ja julkaistu avoimen lähdekoodin, rojaltivapaan 3-lauseisen BSD-lisenssin alla WebRTC-projektin kautta.
Q5: Miten iLBC vertautuu nykyaikaiseen Opus-koodekkiin?
Vaikka iLBC tarjosi pakettihäviön peittämistä kapeakaistaiseen VoIP:iin varhaisissa laajakaistaverkoissa, nykyaikainen Opus-koodekki tukee dynaamisia bittinopeuksia, täyskaista ($48\text{ kHz}$) ääntä ja alhaisempaa algoritminen viivettä.
7. Viralliset spesifikaatiot ja viitteet
- IETF RFC 3951 -määritys: Internetin matalan bittinopeuden koodekki (iLBC) puhe- ja äänistandardi
- IETF RFC 3952 -kuormamuoto: Reaaliaikaisen siirtoprotokollan (RTP) kuormamuoto iLBC:lle
- WebRTC avoimen lähdekoodin projekti: WebRTC-koodekin lisensointi ja iLBC-toteutus
- FFmpeg-koodekkien dokumentaatio: FFmpeg libilbc -integraatio-ohjeet