Speex
Speex — это свободный аудиокодек с открытым исходным кодом, предназначенный для сжатия речи с потерями. Разработан специально для передачи голоса в реальном времени по каналам с ограниченной пропускной способностью, таким как интернет-телефония (VoIP), и оптимизирован для работы в широком диапазоне битрейтов — от 2,15 до 44,2 кбит/с. Кодек поддерживает переменный битрейт (VBR), постоянный битрейт (CBR) и качественный битрейт (ABR), а также включает в себя функции подавления шума, обнаружения голосовой активности (VAD) и компенсации потери пакетов.
История
Разработка Speex началась в 2002 году французским программистом Жаном-Марком Валленом (Jean-Marc Valin). Основной целью было создание кодека, свободного от патентных ограничений, которые сдерживали распространение проприетарных решений, таких как G.729 и iLBC. В отличие от многих других кодеков, Speex с самого начала распространялся под лицензией BSD (позднее — под лицензией Xiph.Org), что позволяло свободно использовать его в коммерческих и некоммерческих проектах.
В 2003 году Speex был включён в состав проектов Xiph.Org Foundation, известного также разработкой контейнера Ogg и кодека Vorbis. Это обеспечило кодека широкую поддержку в сообществе свободного программного обеспечения. Версия 1.0 была выпущена в 2003 году, а последняя стабильная версия 1.2.1 — в 2010 году. В 2012 году разработка Speex была официально прекращена, и его место занял более современный кодек Opus, также созданный при участии Жана-Марка Валлена. Тем не менее, Speex остаётся широко распространённым в устаревших системах и встраиваемых устройствах.
Архитектура и принцип работы
Speex основан на алгоритме кодирования с линейным предсказанием с возбуждением от алгебраического кода (ACELP). В отличие от кодеков общего назначения (например, MP3 или Vorbis), он оптимизирован исключительно для речевых сигналов и плохо справляется с музыкой или сложными звуковыми сценами.
Кодирование и декодирование
Процесс кодирования включает анализ входного сигнала на кадры фиксированной длины (обычно 20 мс). Для каждого кадра вычисляются параметры линейного предсказания, которые описывают спектральную огибающую речи. Затем находится наилучшее возбуждение из алгебраической кодовой книги, которое минимизирует разницу между исходным и синтезированным сигналом. Декодирование, напротив, является относительно простым и требует малых вычислительных ресурсов, что важно для встраиваемых систем.
Режимы работы
Speex поддерживает три основных режима, определяющих качество и битрейт:
- Узкополосный (Narrowband): частота дискретизации 8 кГц, битрейт от 2,15 до 24,6 кбит/с. Предназначен для телефонного качества (диапазон 300–3400 Гц).
- Широкополосный (Wideband): частота дискретизации 16 кГц, битрейт от 3,95 до 42,2 кбит/с. Обеспечивает качество, близкое к FM-радио (диапазон 50–7000 Гц).
- Ультраширокополосный (Ultra-wideband): частота дискретизации 32 кГц, битрейт от 5,75 до 44,2 кбит/с. Ориентирован на высококачественную передачу речи (диапазон до 14 кГц).
Дополнительные функции
В состав Speex входят встроенные алгоритмы обработки сигнала:
- Подавление шума (Denoise): снижает уровень фонового шума без существенного ухудшения разборчивости речи.
- Обнаружение голосовой активности (VAD): позволяет не передавать пакеты в паузах, экономя пропускную способность.
- Компенсация потери пакетов (PLC): восстанавливает потерянные аудиокадры на стороне приёмника, минимизируя артефакты.
- Акустическое эхоподавление (AEC): реализовано в отдельной библиотеке, но часто используется совместно с кодеком.
Применение
Благодаря низкой задержке (менее 30 мс) и свободной лицензии, Speex нашёл применение в ряде программных продуктов и протоколов:
- VoIP-клиенты: Ekiga, Linphone, Twinkle, QuteCom.
- Мессенджеры: Jabber (XMPP) с поддержкой голосовых вызовов, некоторые версии Skype (до перехода на проприетарный кодек).
- Игровые движки: использовался для голосового чата в некоторых играх (например, в ранних версиях Mumble).
- Встраиваемые системы: применялся в IP-телефонах, VoIP-шлюзах и устройствах с ограниченными ресурсами.
- Протоколы: поддержка в RTP (RFC 5574) и SIP.
Сравнение с другими кодеками
Speex часто сравнивают с другими кодеками для речи:
| Кодек | Тип лицензии | Битрейт (кбит/с) | Качество речи | Задержка |
|---|---|---|---|---|
| Speex | BSD (свободная) | 2,15–44,2 | Хорошее (узкополосный), отличное (широкополосный) | ~30 мс |
| G.729 | Проприетарная (патентная) | 8 | Отличное (узкополосный) | ~15 мс |
| iLBC | Свободная (но с ограничениями) | 13,33 / 15,2 | Хорошее (узкополосный) | ~30 мс |
| Opus | BSD (свободная) | 6–510 | Отличное (речь и музыка) | 5–66,5 мс |
Основным недостатком Speex по сравнению с более современными кодеками (Opus, SILK) является более низкое качество при низких битрейтах (менее 8 кбит/с) и отсутствие поддержки стерео. Opus, который пришёл на смену Speex, обеспечивает лучшее качество как для речи, так и для музыки, при меньшей задержке.
Критика и ограничения
Несмотря на популярность, Speex подвергался критике по нескольким причинам:
- Устаревший алгоритм: ACELP, лежащий в основе, уступает по эффективности более новым методам, таким как кодирование на основе синусоидальной модели (SILK) или нейросетевые подходы.
- Плохая работа с музыкой: кодек не предназначен для музыкальных сигналов и при их кодировании вносит значительные искажения.
- Отсутствие поддержки стерео: Speex работает только с монофоническим сигналом.
- Прекращение разработки: с 2012 года кодек не обновляется, что ограничивает его использование в современных системах.
Интересные факты
- Speex является одним из первых свободных кодеков, получивших широкое распространение в VoIP-индустрии, наряду с iLBC.
- Название «Speex» происходит от слов «speech» (речь) и «excellent» (отличный), что отражает основную цель проекта.
- В 2010 году кодек был включён в стандарт RFC 5574, определяющий его использование в протоколе RTP.
Источники
- Valin, J.-M. (2003). «Speex: A Free Codec For Free Speech». Proceedings of the 2003 International Conference on Auditory Display.
- RFC 5574 — «RTP Payload Format for the Speex Codec».
- Официальная документация проекта Speex (speex.org, архив).
- Xiph.Org Foundation — Speex (xiph.org/speex).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


