Opus
Opus — это проприетарный аудиокодек, разработанный компанией Skype Technologies (позднее — подразделение Microsoft) и впоследствии стандартизированный в 2012 году как RFC 6716. Кодек предназначен для сжатия звука с потерями и ориентирован на интерактивную передачу речи в реальном времени (VoIP, видеоконференции) и потоковое аудио (музыка, подкасты). Отличительной особенностью Opus является его высокая гибкость: он поддерживает переменный битрейт от 6 кбит/с до 510 кбит/с, частоты дискретизации от 8 до 48 кГц и переменную длину кадра от 2,5 до 60 мс. Opus объединяет в себе два алгоритма: SILK (для речи) и CELT (для музыки), что позволяет ему адаптироваться к типу сигнала и обеспечивать наилучшее качество при заданном битрейте. Кодек распространяется по лицензии BSD, является свободным и кроссплатформенным. Opus признан эталонным кодеком для интерактивной передачи речи по качеству и задержке, превосходя многие коммерческие и открытые альтернативы.
История
Разработка Opus началась в 2008 году в рамках проекта IETF (Internet Engineering Task Force) по созданию нового, открытого и универсального аудиокодека для интернета. Основной движущей силой стала компания Skype Technologies, которая искала замену проприетарному кодека SILK, используемому в Skype, а также необходимость в кодека, способном работать как с речью, так и с музыкой с низкой задержкой.
В 2010 году проект был объединён с разработкой кодека CELT (Constrained Energy Lapped Transform) от компании Xiph.Org Foundation (основатель — Кристофер Монтгомери). CELT обеспечивал высокое качество звука для музыки, но имел более высокую задержку, чем SILK. В результате слияния был создан гибридный кодек, который получил название Opus.
В 2012 году Opus был официально утверждён как стандарт IETF (RFC 6716). В 2013 году он был включён в спецификацию WebRTC (Web Real-Time Communication) — стандарта для браузерной передачи аудио и видео в реальном времени. С этого момента Opus стал обязательным для поддержки в браузерах, поддерживающих WebRTC (Chrome, Firefox, Opera, Edge, Safari). В 2017 году Opus был включён в стандарт HTML5, что сделало его обязательным для воспроизведения в браузерах без дополнительных плагинов.
Принцип работы
Opus использует гибридную архитектуру, объединяющую два алгоритма кодирования: SILK и CELT. Выбор алгоритма или их комбинации происходит на основе анализа входного сигнала и требований к битрейту и задержке.
SILK (Speech-optimized Low-delay Codec)
SILK — это кодек, оптимизированный для кодирования речи. Он использует линейное предсказание с кодовым возбуждением (CELP — Code-Excited Linear Prediction). SILK эффективно сжимает речевые сигналы, достигая хорошего качества при низких битрейтах (от 6 до 40 кбит/с). Он обеспечивает низкую задержку (от 5 до 60 мс) и может адаптироваться к различным частотам дискретизации (8, 12, 16, 24 кГц). SILK особенно эффективен для передачи речи в условиях ограниченной пропускной способности сети.
CELT (Constrained Energy Lapped Transform)
CELT — это кодек, основанный на модифицированном дискретном косинусном преобразовании (MDCT). Он оптимизирован для кодирования музыки и сложных звуковых сигналов, обеспечивая высокое качество при средних и высоких битрейтах (от 32 до 510 кбит/с). CELT использует алгебраическое кодовое возбуждение и предсказание в частотной области. Он поддерживает частоты дискретизации до 48 кГц и обеспечивает задержку от 2,5 до 20 мс.
Гибридный режим
При битрейтах от 32 до 64 кбит/с Opus может работать в гибридном режиме, объединяя SILK для низкочастотной части спектра (речь) и CELT для высокочастотной части (музыка, шумы). Это позволяет достичь оптимального качества для смешанных сигналов (например, речь с фоновой музыкой). При более высоких битрейтах (выше 64 кбит/с) Opus обычно использует только CELT, так как он обеспечивает лучшее качество для музыки.
Характеристики
Opus обладает рядом ключевых характеристик, определяющих его производительность и область применения:
- Битрейт: от 6 кбит/с (моно, 8 кГц) до 510 кбит/с (стерео, 48 кГц). Поддерживается переменный битрейт (VBR) и постоянный битрейт (CBR).
- Частота дискретизации: от 8 кГц (телефонное качество) до 48 кГц (CD-качество).
- Задержка: от 2,5 до 60 мс. Минимальная задержка в 2,5 мс достигается при использовании только CELT. Для интерактивной передачи речи (VoIP) типичная задержка составляет 20–40 мс.
- Каналы: моно, стерео, многоканальный звук (до 255 каналов, но стандартная реализация поддерживает до 8).
- Качество: По субъективным оценкам (MUSHRA — MUltiple Stimuli with Hidden Reference and Anchor), Opus при битрейте 64 кбит/с для стерео обеспечивает качество, неотличимое от исходного сигнала для большинства слушателей. При битрейте 128 кбит/с качество приближается к эталонному.
- Сложность кодирования: Умеренная. Кодирование требует больше вычислительных ресурсов, чем декодирование, но современные процессоры справляются с ним легко.
- Лицензия: Свободная (BSD). Opus не требует лицензионных отчислений.
Применение
Opus широко используется в различных областях, где требуется передача или хранение аудио с низкой задержкой и высоким качеством.
Передача речи в реальном времени (VoIP)
Opus является стандартным кодеком для многих VoIP-сервисов и приложений для видеоконференций. Его высокая эффективность при низких битрейтах и низкая задержка делают его идеальным для использования в условиях нестабильного интернет-соединения. Примеры: Skype, Discord, Zoom, Telegram, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ), Signal, Microsoft Teams, Google Meet.
Потоковое аудио
Opus используется для потоковой передачи музыки и подкастов. Благодаря высокому качеству при умеренных битрейтах, он позволяет экономить трафик и обеспечивать хорошее звучание. Примеры: Spotify (для некоторых форматов), YouTube, SoundCloud (частично), подкаст-платформы.
Браузеры и WebRTC
Opus является обязательным кодеком для WebRTC, что делает его стандартом для браузерной передачи аудио в реальном времени. Все современные браузеры (Chrome, Firefox, Safari, Edge, Opera) поддерживают Opus для воспроизведения и записи аудио.
Хранение аудио
Opus может использоваться для хранения аудиофайлов в контейнерах Ogg, Matroska (MKV), WebM и MP4. Формат Ogg Opus (.opus) является стандартным для хранения аудио, сжатого Opus. Он используется в некоторых операционных системах (например, в Android для системных звуков) и в игровых движках.
Игры
Opus используется в игровых движках для сжатия звуковых эффектов, музыки и голосового чата. Его низкая задержка и высокое качество делают его подходящим для интерактивных приложений. Примеры: Unity, Unreal Engine, Source Engine (Valve).
Сравнение с другими кодеками
Opus часто сравнивают с другими популярными аудиокодеками, такими как MP3, AAC, Vorbis и Speex.
| Кодек | Тип | Задержка | Качество при 64 кбит/с (стерео) | Лицензия |
|---|---|---|---|---|
| Opus | Гибридный (SILK + CELT) | 2.5–60 мс | Высокое (неотличимо от оригинала) | Свободная (BSD) |
| MP3 | Перцептуальное кодирование | ~100 мс | Среднее | Проприетарная (срок действия патентов истёк) |
| AAC | Перцептуальное кодирование | ~100 мс | Высокое | Проприетарная (лицензионные отчисления) |
| Vorbis | Перцептуальное кодирование | ~100 мс | Высокое | Свободная (BSD) |
| Speex | CELP | 30–200 мс | Низкое (только речь) | Свободная (BSD) |
Opus превосходит MP3, AAC и Vorbis по качеству при одинаковом битрейте, особенно на низких битрейтах. Его задержка значительно ниже, что критически важно для интерактивных приложений. Speex, также разработанный Xiph.Org, уступает Opus по качеству и задержке и считается устаревшим.
Критика и ограничения
Несмотря на широкое признание, Opus имеет некоторые ограничения и критикуется по ряду направлений:
- Вычислительная сложность: Кодирование в Opus требует больше вычислительных ресурсов, чем кодирование в MP3 или AAC, особенно на высоких битрейтах. На мобильных устройствах с низким энергопотреблением это может приводить к повышенному расходу батареи.
- Совместимость: Несмотря на широкую поддержку, некоторые старые устройства и плееры не поддерживают Opus. Это ограничивает его использование в legacy-системах.
- Качество на очень низких битрейтах: При битрейтах ниже 12 кбит/с качество Opus ухудшается, хотя он всё равно превосходит многие другие кодеки в этом диапазоне.
- Патентные споры: Хотя Opus распространяется по свободной лицензии, в 2013 году компания Qualcomm подала жалобу в IETF, утверждая, что Opus нарушает её патенты. Однако IETF и Xiph.Org оспорили эти претензии, и до настоящего времени судебных разбирательств не было. Opus считается свободным от патентных ограничений.
Интересные факты
- Opus был разработан в рамках IETF как открытый стандарт, а не как проприетарный продукт. Это гарантирует его независимость от какой-либо одной компании.
- Кодек поддерживает переменную длину кадра от 2,5 до 60 мс. Это позволяет адаптироваться к различным условиям сети: при плохом соединении можно использовать более длинные кадры для лучшего сжатия.
- Opus способен кодировать многоканальный звук (до 255 каналов), что делает его пригодным для объёмного звука (surround sound).
- В 2018 году Opus был включён в стандарт Bluetooth Audio (LC3 — Low Complexity Communication Codec) как один из обязательных кодеков для новых профилей.
- Opus используется в операционной системе Android для системных звуков и в некоторых версиях iOS для голосовых сообщений.
Источники
- RFC 6716 — Definition of the Opus Audio Codec
- RFC 8251 — Updates to the Opus Audio Codec
- Xiph.Org Foundation — Opus Codec Documentation
- IETF — Opus Audio Codec Working Group
- Wikipedia — Opus (audio format)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →