1. Що таке аудіоформат iLBC?
The Internet Low Bitrate Codec спочатку був створений компанією Global IP Solutions (GIPS) — шведською аудіоінженерною фірмою, яку у 2010 році придбала Google. Визначений 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{ кбіт/с}$ ($20\text{ мс}$) / $13.33\text{ кбіт/с}$ ($30\text{ мс}$) |
| Біти корисного навантаження за блок | $304\text{ біт}$ ($20\text{ мс}$) / $400\text{ біт}$ ($30\text{ мс}$) |
| Ідентифікатор магічного заголовка | #!iLBC20\n ($20\text{ мс}$) or #!iLBC30\n ($30\text{ мс}$) |
| Ліцензування | Без роялті (відкритий код 3‑клаузовий BSD через WebRTC) |
3. Детальні особливості та архітектурний дизайн
Незалежне кодування кадрів (нульове поширення помилок)
Традиційні формати стиснення мови, такі як G.729 та кодеки сімейства CELP, використовують міжкадрове передбачення, де кожен аудіокадр залежить від інформації про стан та векторів предиктора висоти тону попереднього кадру. Якщо пакет втрачається в перевантаженій мережі, відсутній стан поширюється далі, спотворюючи подальший аудіо сигнал протягом кількох сотень мілісекунд.
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 Гц.
Метод 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 кГц.-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 і випущено під відкритою, без роялті ліцензією 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