1. Какъв е аудио форматът iLBC?
The Internet Low Bitrate Codec беше първоначално създаден от Global IP Solutions (GIPS) — шведска фирма за аудио инженеринг, придобита от Google през 2010 г. Дефиниран от Internet Engineering Task Force в рамките на RFC 3951 с RTP полезен товар, описан в RFC 3952, iLBC беше проектиран специално за надежден предаване на глас по нестабилни IP връзки.
Докато съвременните уеб браузъри често използват кодека Opus за модерна комуникация в реално време, iLBC остава ключов, безплатен за използване стандарт, вграден в корпоративните телефонни стекове, SIP клиенти, профилите за обратно съвместимост на WebRTC и наследените VoIP устройства, произведени от Cisco, Polycom и Asterisk PBX системи.
2. Ключови характеристики на iLBC
| Параметър | Спецификация |
|---|---|
| Стандартизация | IETF RFC 3951 (Кодек), RFC 3952 (RTP полезен товар) |
| Общи файлови разширения | .ilbc, .lbc |
| MIME тип | audio/iLBC |
| Честота на дискретизация | $8\text{ kHz}$ (Тесен честотен диапазон) |
| Резолюция на квантизация | 16-битово линейно PCM |
| Аудио канали | Моно (Едноканална реч) |
| Поддържани дължини на кадрите | $20\text{ ms}$ режим и $30\text{ ms}$ режим |
| Оперативни битови скорости | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Битове на полезния товар на блок | $304\text{ бита}$ ($20\text{ ms}$) / $400\text{ бита}$ ($30\text{ ms}$) |
| Идентификатор на магическа заглавка | #!iLBC20\n ($20\text{ ms}$) или #!iLBC30\n ($30\text{ ms}$) |
| Лицензиране | Безплатен (3-клауза BSD отворен код чрез WebRTC) |
3. Подробни функции и архитектурен дизайн
Независимо кодиране на кадри (Нулево разпространение на грешки)
Традиционните формати за компресия на реч, като G.729 и кодеци от семейството CELP, използват inter-frame prediction, при което всеки аудио кадър зависи от информация за състоянието и вектори на предиктора на височината от предишния кадър. Ако пакет се загуби в претоварена мрежа, липсващото състояние се разпространява напред, като изкривява последващия аудио за няколко стотин милисекунди.
iLBC премахва тази зависимост. Всеки речеви кадър в iLBC се кодира независимо. Ако пакет $N$ се загуби по време на предаване, пакет $N+1$ се декодира с пълна акустична точност.
Два режима на работа ($20\text{ ms}$ срещу $30\text{ ms}$)
За да предостави на телекомуникационните инженери гъвкаво управление на латентността, iLBC определя два задължителни режима на работа:
- $20\text{ ms}$ Режим на кадър ($15.20\text{ kbit/s}$):
- Кодира 160 аудио проби на кадър в 38 байта ($304\text{ bits}$).
- Осигурява по-ниска алгоритмична латентност на буфериране, което го прави добре подходящ за интерактивни комуникации.
- $30\text{ ms}$ Режим на кадър ($13.33\text{ kbit/s}$):
- Кодира 240 аудио проби на кадър в 50 байта ($400\text{ bits}$).
- Намалява консумацията на битове с около $12%$, оптимизирайки ефективността на мрежовия товар при дълги връзки.
Разширено скриване на загуба на пакети (PLC)
Когато се появят изгубени пакети, iLBC използва синтезен филтър с променлива състояние LPC (Linear Predictive Coding), който възстановява липсващите представяния на цикъла на височината, използвайки граничните състояния от съседните кадри. Вместо да създава кликвания, цифрови пуканки или резки заглушения, изгубените гласови пакети се деградират плавно.
Качество на аудиото спрямо профил на битрейт
При идеални мрежови условия (0% загуба на пакети), iLBC постига средна оценка на мнението (MOS) приблизително 4.14 (от 5.0). Въпреки че е малко под некопресирания G.711 PCM ($\mu$-law при $\sim 4.3$), iLBC запазва яснотата на гласа при нива на загуба на пакети до $5%\text{ to }10%$, където разбирането при G.729 или G.711 намалява значително.
4. Как да отворим и възпроизведем аудио файлове .ilbc
Тъй като .ilbc е специализиран формат за необработени телефонни потоци, а не общ потребителски медиа контейнер (като MP3 или WAV), основните потребителски плейъри не винаги могат да го разпознаят без специализирани кодек пакети.
Метод 1: Използване на Audacity (Импорт на необработени данни)
Audacity може да импортира необработени PCM изходи или декодирани iLBC гласови файлове:
- Стартирайте Audacity.
- Навигирайте до File > Import > Raw Data…
- Изберете файла и задайте кодировката на Signed 16-bit PCM, байтовия ред на Little-endian, 1 канал (моно) и честотата на дискретизация на 8000 Hz.
Метод 2: Възпроизвеждане от команден ред чрез FFplay
Ако вашата версия на FFmpeg е компилирана с разширението libilbc:
ffplay -f ilbc sample.ilbc
Метод 3: Специализирани VoIP анализатори
Мрежови диагностични инструменти като Wireshark могат да извличат и възстановяват .ilbc гласови полезни натоварвания директно от заснети SIP/RTP пакетни сесии и да ги възпроизвеждат чрез вградената полезна програма RTP Player.
5. Как да създадем и конвертираме аудио файлове .ilbc
Работата с аудио .ilbc изисква 16-битово, едноканално, входно аудио с честота $8000\text{ Hz}$.
Кодиране към iLBC с помощта на FFmpeg
За да конвертирате съществуващ аудио пример .wav или .mp3 в битов поток .ilbc:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Пресема аудиото до необходимата честота 8 kHz.-ac 1: Смесва многоканално аудио до моно.-c:a libilbc: Използва референтния енкодерlibilbc.
Определяне на режима на кадъра ($20\text{ ms}$ или $30\text{ ms}$)
Можете да изберете режим на кадъра, като използвате флага -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
Декодиране на .ilbc файл обратно към стандартен WAV
За да конвертирате файл .ilbc в некомпресиран WAV файл, който може да се възпроизвежда навсякъде:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Често задавани въпроси (FAQ)
Q1: Какъв основен проблем беше създаден аудио форматът iLBC, за да реши?
Форматът iLBC е проектиран да запазва разборимостта на речта в IP мрежи, като прави всеки аудио кадър независим, предотвратявайки грешки от загуба на пакети да се разпространяват в следващите речеви кадри.
Q2: Какви са двата оперативни битрейта на .ilbc файл?
Поток .ilbc работи или със скорост $13.33\text{ kbit/s}$ при използване на кадри от $30\text{ ms}$, или $15.20\text{ kbit/s}$ когато е конфигуриран за кадри от $20\text{ ms}$.
Q3: Може ли форматът iLBC да се използва за стрийминг на висококачествена музика?
Не, iLBC е теснолентен гласов кодек, строго ограничен до честота на дискретизация $8\text{ kHz}$, оптимизиран изключително за човешка реч в диапазона от $90\text{ Hz}$ до $4000\text{ Hz}$.
Q4: Дали аудио кодекът iLBC е безплатен за използване?
Да, iLBC е напълно стандартизиран според IETF RFC 3951 и е издаден под отворен код, безплатен от роялти 3‑клауза BSD лиценз чрез проекта WebRTC.
Q5: Как се сравнява iLBC с модерния кодек Opus?
Докато iLBC предоставяше скриване на загуба на пакети за теснолентен VoIP в ранните широколентови мрежи, съвременният кодек Opus поддържа динамични битрейтове, пълнобандова ($48\text{ kHz}$) аудио и по-ниска алгоритмична латентност.
7. Официални спецификации и референции
- IETF RFC 3951 Спецификация: Интернет кодек с ниска битова скорост (iLBC) Стандарт за реч и аудио
- IETF RFC 3952 Формат на полезния товар: Протокол за транспорт в реално време (RTP) Формат на полезния товар за iLBC
- WebRTC Отворен проект с изходен код: Лицензиране на кодеци WebRTC & iLBC имплементация
- Документация за кодек FFmpeg: Ръководство за интеграция на FFmpeg libilbc