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 остаётся ключевым, royalty‑free стандартом, встроенным в корпоративные телефонные стеки, 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{ мс}$) |
| Лицензирование | Без роялти (открытый исходный код по лицензии BSD с 3 условиями через WebRTC) |
3. Подробные особенности и архитектурный дизайн
Независимое кодирование кадров (ноль распространения ошибок)
Традиционные форматы сжатия речи, такие как G.729 и кодеки семейства CELP, используют межкадровое предсказание, при котором каждый аудиофрейм зависит от информации о состоянии и векторов предиктора тона из предыдущего фрейма. Если пакет теряется в перегруженной сети, отсутствующее состояние распространяется вперёд, искажая последующее аудио на несколько сотен миллисекунд.
iLBC устраняет эту зависимость. Каждый речевой фрейм в iLBC кодируется независимо. Если пакет $N$ теряется во время передачи, пакет $N+1$ декодируется с полной акустической точностью.
Два режима работы ($20\text{ ms}$ vs. $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) с переменной состояния, который восстанавливает отсутствующие представления цикла тона, используя граничные состояния соседних кадров. Вместо создания щелчков, цифровых хлопков или резких заглушений, потерянные голосовые пакеты деградируют плавно.
Качество аудио vs. Профиль битрейта
При идеальных сетевых условиях (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)
В1: Какую основную проблему был создан аудиоформат iLBC?
Формат iLBC был разработан для сохранения разборчивости речи в IP‑сетях, делая каждый аудиокадр независимым, что предотвращает распространение ошибок потери пакетов на последующие кадры речи.
В2: Каковы два рабочих битрейта файла .ilbc?
Поток .ilbc работает либо со скоростью $13.33\text{ kbit/s}$ при использовании кадров длительностью $30\text{ ms}$, либо $15.20\text{ kbit/s}$ при настройке на кадры длительностью $20\text{ ms}$.
В3: Можно ли использовать формат iLBC для потоковой передачи музыки высокого качества?
Нет, iLBC — это узкополосный речевой кодек, строго ограниченный частотой дискретизации $8\text{ kHz}$, оптимизированный исключительно для человеческой речи в диапазоне от $90\text{ Hz}$ до $4000\text{ Hz}$.
В4: Является ли аудиокодек iLBC свободным от роялти?
Да, iLBC полностью стандартизирован в соответствии с IETF RFC 3951 и выпущен под открытой лицензией BSD с 3‑пунктовым условием без лицензионных отчислений через проект WebRTC.
В5: Как iLBC сравнивается с современным кодеком Opus?
В то время как iLBC обеспечивал скрытие потери пакетов для узкополосного VoIP в ранних широкополосных сетях, современный кодек Opus поддерживает динамические битрейты, полнополосный ($48\text{ kHz}$) звук и более низкую алгоритмическую задержку.
7. Официальные спецификации и ссылки
- Спецификация IETF RFC 3951: Стандарт речи и аудио (iLBC) для низкобитового интернет‑кода
- Формат полезной нагрузки IETF RFC 3952: Формат полезной нагрузки протокола реального времени (RTP) для iLBC
- Проект открытого кода WebRTC: Лицензирование кодеков WebRTC и реализация iLBC
- Документация кодеков FFmpeg: Руководство по интеграции libilbc в FFmpeg