1. Kas yra iLBC garso formatas?
The Internet Low Bitrate Codec buvo originaliai sukurtas Global IP Solutions (GIPS) — Švedų garso inžinerijos įmonė, kurią 2010 m. įsigijo „Google“. Jį apibrėžė Internet Engineering Task Force pagal RFC 3951, o RTP naštos įkapsuliavimą aprašė RFC 3952, iLBC buvo sukurtas specialiai patikimam kalbos perdavimui per nestabilias IP jungtis.
Nors šiuolaikinės interneto naršyklės dažnai naudoja Opus kodeką moderniai realaus laiko komunikacijai, iLBC išlieka svarbiu, be autorinių mokesčių standartu, įterptu į įmoninių telefonijos sistemų, SIP klientų, WebRTC atgalinės suderinamumo profilių ir senesnių VoIP įrenginių, gaminamų Cisco, Polycom ir Asterisk PBX sistemų, struktūras.
2. Pagrindinės iLBC savybės
| Parametras | Specifikacija |
|---|---|
| Standardizavimas | IETF RFC 3951 (Kodekas), RFC 3952 (RTP našta) |
| Bendri failų plėtiniai | .ilbc, .lbc |
| MIME medijos tipas | audio/iLBC |
| Mėginių dažnis | $8\text{ kHz}$ (siaurasis) |
| Kvantizacijos rezoliucija | 16‑bitų linijinis PCM |
| Garso kanalai | Mono (vieno kanalo kalba) |
| Palaikomi kadro ilgiai | $20\text{ ms}$ režimas ir $30\text{ ms}$ režimas |
| Operacinės bitų spartos | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Naudingojo duomenų bitų skaičius blokui | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Magiškas antraštės identifikatorius | #!iLBC20\n ($20\text{ ms}$) arba #!iLBC30\n ($30\text{ ms}$) |
| Licencijavimas | Be autorinių mokesčių (3-sakų BSD atviro kodo per WebRTC) |
3. Išsamios savybės ir architektūrinis dizainas
Nepriklausomas kadrų kodavimas (nulinė klaidų sklaida)
Tradiciniai kalbos suspaudimo formatai, tokie kaip G.729 ir CELP šeimos kodekai, naudoja tarpkadrų prognozavimą, kur kiekvienas garso kadras priklauso nuo būsenos informacijos ir tonacijos prognozavimo vektorių iš ankstesnio kadro. Jei paketas prarandamas perpildytoje tinkle, trūkstama būsena persiskleidžia į priekį, iškraipydama vėlesnį garsą kelis šimtus milisekundžių.
iLBC pašalina šį priklausomumą. Kiekvienas iLBC kalbos kadras koduojamas nepriklausomai. Jei paketas $N$ prarandamas per kelionę, paketas $N+1$ dekoduojamas su pilna akustinė tikslumu.
Dvigubi veikimo režimai ($20\text{ ms}$ vs. $30\text{ ms}$)
Norint suteikti telekomunikacijų inžinieriams lankstų delsos valdymą, iLBC apibrėžia du privalomus veikimo režimus:
- $20\text{ ms}$ Kadrų režimas ($15.20\text{ kbit/s}$):
- Koduojama 160 garso mėginių per kadrą į 38 baitus ($304\text{ bits}$).
- Suteikia mažesnę algoritminę buferizacijos delsą, todėl puikiai tinka interaktyviam bendravimui.
- $30\text{ ms}$ Kadrų režimas ($13.33\text{ kbit/s}$):
- Koduojama 240 garso mėginių per kadrą į 50 baitų ($400\text{ bits}$).
- Sumažina bitų suvartojimą maždaug $12%$, optimizuodama tinklo duomenų naštos efektyvumą per ilgus ryšius.
Išplėstinis paketų praradimo maskavimas (PLC)
Kai įvyksta prarasti paketai, iLBC naudoja būsenos kintamojo LPC (Linear Predictive Coding) sintezės filtrą, kuris atkuria trūkstamas tonų ciklo reprezentacijas naudojant ribines būsenas iš gretimų kadrų. Vietoj to, kad sukurtų spragtelėjimus, skaitmeninius popus ar aštrius nutildymus, prarasti balso paketai nusileidžia sklandžiai.
Garso kokybė ir bitų spartos profilis
Idealiomis tinklo sąlygomis (0 % paketų praradimo), iLBC pasiekia vidutinį nuomonės įvertinimą (MOS) maždaug 4.14 (iš 5.0). Nors šiek tiek žemiau nei nespaustas G.711 PCM ($\mu$-law ties $\sim 4.3$), iLBC išlaiko balso aiškumą net iki $5%\text{ iki }10%$, kur G.729 arba G.711 suprantamumas smarkiai sumažėja.
4. Kaip atverti ir leisti .ilbc garso failus
Kadangi .ilbc yra specializuotas neapdorotas telefonijos srauto formatas, o ne bendrosios paskirties vartotojo medijos konteineris (pvz., MP3 arba WAV), įprasti vartotojo leistuvai ne visada gali jį aptikti be specialių kodekų paketų.
Metodas 1: Naudojant Audacity (importuoti neapdorotus duomenis)
Audacity gali importuoti neapdorotus PCM išklotinės duomenis arba dekoduotus iLBC balso failus:
- Paleiskite Audacity.
- Eikite į File > Import > Raw Data…
- Pasirinkite failą ir nustatykite kodavimą į Signed 16-bit PCM, baitų tvarką į Little-endian, 1 kanalą (Mono), bei mėginių dažnį į 8000 Hz.
Metodas 2: Komandinės eilutės atkūrimas per FFplay
Jei jūsų FFmpeg versija sukompiliuota su libilbc plėtiniu:
ffplay -f ilbc sample.ilbc
Metodas 3: Skirti VoIP analizatoriai
Tinklo diagnostikos įrankiai, tokie kaip Wireshark, gali tiesiogiai išgauti ir atkurti .ilbc balso duomenų paketus iš įrašytų SIP/RTP paketų sesijų ir juos paleisti naudojant integruotą RTP Player įrankį.
5. Kaip sukurti ir konvertuoti .ilbc garso failus
Darbas su .ilbc garso reikalauja 16 bitų, vieno kanalo, $8000\text{ Hz}$ įvesties garso.
Kodavimas į iLBC naudojant FFmpeg
Norint konvertuoti esamą .wav arba .mp3 garso pavyzdį į .ilbc bitų srautą:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Perrašo garsą iki reikiamo 8 kHz dažnio.-ac 1: Sumažina daugiakanalį garsą iki mono.-c:a libilbc: Naudojalibilbcreferencinį koduoklį.
Nustatant kadro režimą ($20\text{ ms}$ arba $30\text{ ms}$)
Galite pasirinkti kadro režimą naudodami -mode vėliavą:
# 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
Dekodavimas .ilbc failo atgal į standartinį WAV
Norint konvertuoti .ilbc failą į nesuspaustą WAV failą, kurį galima groti bet kur:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Dažnai užduodami klausimai (DUK)
Q1: Kokią pagrindinę problemą iLBC garso formatas buvo sukurtas spręsti?
iLBC formatas buvo sukurtas siekiant išlaikyti kalbos suprantamumą IP tinkluose, padarant kiekvieną garso kadrą nepriklausomą, taip užkertant kelią paketų praradimo klaidoms plisti į vėlesnius kalbos kadrus.
Q2: Kokios yra dvi operacinės .ilbc failo bitų spartos?
.ilbc srautas veikia arba $13.33\text{ kbit/s}$ naudojant $30\text{ ms}$ kadrus, arba $15.20\text{ kbit/s}$ kai sukonfigūruotas $20\text{ ms}$ kadrų.
Q3: Ar iLBC formatas gali būti naudojamas transliuoti aukštos kokybės muziką?
Ne, iLBC yra siauro juostos balso kodekas, griežtai ribojamas $8\text{ kHz}$ mėginių ėmimo dažniu, optimizuotas tik žmogaus balso dažniui tarp $90\text{ Hz}$ ir $4000\text{ Hz}$.
Q4: Ar iLBC garso kodekas yra be autorinių mokėjimų?
Taip, iLBC yra visiškai standartizuotas pagal IETF RFC 3951 ir išleistas atviro kodo, be autorinių mokėjimų 3 punktų BSD licenciją per WebRTC projektą.
Q5: Kaip iLBC palyginamas su šiuolaikiniu Opus kodeku?
Nors iLBC teikė paketų praradimo maskavimą siauro juostos VoIP ankstyvuosiuose plačiajuostiuose tinkluose, modernus Opus kodekas palaiko dinamiškus bitų greičius, visos juostos ($48\text{ kHz}$) garso ir mažesnį algoritminį delsą.
7. Oficialios specifikacijos ir nuorodos
- IETF RFC 3951 specifikacija: Interneto mažos bitų spartos kodekas (iLBC) kalbos ir garso standartas
- IETF RFC 3952 naudingumo formatas: Real‑time Transport Protocol (RTP) naudingumo formatas iLBC
- WebRTC atviro kodo projektas: WebRTC kodekų licencijavimas ir iLBC įgyvendinimas
- FFmpeg kodekų dokumentacija: FFmpeg libilbc integracijos gairės