Opus что за формат
Перейти к содержимому

Opus что за формат

  • автор:

Opus что за формат

Все аудиокодеки работают, сжимая и распаковывая информацию. Хотя это не такой распространенный формат, как MP3, Opus является одним из самых популярных кодеков для аудио в Интернете. Opus регулярно используется миллиардами пользователей. Он имеет встроенную поддержку в Windows 10, macOS, iOS, Android, и является частью основных мультимедийных систем Unix. Кроме того, поскольку Opus – это обязательная часть стандарта WebRTC для обмена данными в реальном времени, данный аудиокодек поддерживает каждый современный веб-браузер. Основные системы связи, такие как WhatsApp, Facebook Messenger и большинство мировых приложений для видеоконференций используют Opus – и это лишь малая часть. Давайте посмотрим на кодек Opus более подробно: откуда он взялся, что в нем такого особенного, как он обычно используется, и что мы можем ожидать от аудиокодеков в будущем.

Как появился Opus

Данный аудиокодек стал результатом нескольких других проектов кодеков, над которыми работала Целевая группа по инженерным разработкам Интернета (IETF), целью которой было создание универсального аудиокодека для Интернета. Еще почти десять лет назад IETF признала, что Интернету нужен единый надежный аудиокодек, который можно было бы использовать для любых способов передачи звука через Интернет, начиная голосовым, и заканчивая распространением живой музыки. Проекты-предшественники Opus – это кодеки CELT, Speex от Xiph.org и SILK от Skype. На самом деле Opus включает в себя основные части этих кодеков. Opus был представлен в 2010 году, и стандартизирован, как RFC 6716 в 2012 г. В качестве интернет-стандарта ее поддерживали браузеры, операционные системы, а также наиболее популярное аудио/видео программное обеспечение. Место Opus в качестве кодека для связи в реальном времени де-факто было закреплено позже, когда его использование стало обязательным, как часть стандарта WebRTC.

Почему Opus?

Когда речь идет именно об аудиокодеках, Opus – безусловный лидер, объединяющий современный набор функций, предназначенных для работы в различных условиях и форматах. Интернет-стандарт, безусловно, поспособствовал его популярности, но кодек стал номером один, в первую очередь, благодаря своей производительности, уникальным функциям, отсутствию лицензионных отчислений, а также множеству ссылок с открытым исходным кодом.

Качество

Всем известно, что интернет-кодеки должны обеспечивать сжатие для минимизации полосы пропуска. Этот коэффициент должен быть сбалансирован с качеством выходного звука и его обработкой, необходимой для кодирования и декодирования данной аудиоинформации. Одной из основных причин успеха Opus является его превосходная производительность в самых разных условиях.

Аудиокодек Opus – лучший инструмент для видеостриминга и видеоконференцсвязи

Аудиокодек Opus прекрасно подходит для воспроизведения сигнала на скорости, как 6 кбит/с, так и 510 кбит/с. В любом случае сжатие выполняется с минимальными потерями, практически незаметными для человеческого уха. Этот кодек может динамически переключаться на сжатие с разным битрейтом, в зависимости от изменения пропускной способности той или иной полосы. На данный момент не появилось ни одного аналога, обеспечивающего лучшую производительность, спектр возможностей, а также качество звука и видео.

Основные характеристики и главные преимущества:

Комплексное сочетание характеристик производительности

Многие пользователи задаются вопросом: откуда у кодека Opus такая отличная производительность? Ответ простой – все дело заключается в специально разработанном наборе функций и возможностей: Низкий уровень задержки Промежуток времени между тем, когда пользователь говорит, и собеседник на другой стороне слышит его, называется задержкой звука. Чем она короче, тем лучше, и это особенно важно, когда вам нужна интерактивность в режиме реального времени. Конечно, физика и природа Интернета вносят некоторые присущие ему задержки, но в процессе кодирования и декодирования Opus длинных задержек не добавляет. Данный кодек обеспечивает практически неощутимую задержку, а именно 26,5 мс, используя настройки по умолчанию (размер кадра 20 мс), что делает его идеально подходящим для передачи голоса по IP (VoIP).

От узкополосного к полнополосному

Одной из уникальных особенностей Opus является то, что он работает как для сэмплирования человеческого голоса, так и музыки. Когда человек говорит, большую часть времени используется относительно ограниченный диапазон частот, и поэтому его легче сжать до того – это называется узкополосным звуком. Он имеет тонкое, но заметное искажение, когда вы его слышите. Широкополосный звук, охватывающий весь диапазон человеческой речи – то, к чему стремится большинство кодеков, ориентированных на речь. С другой стороны, музыка охватывает весь спектральный диапазон того, что могут слышать наши уши. Кодирование этих дополнительных функций требует больше битов и обычно называется полнополосным. Кодеки, обеспечивающие высокое сжатие при низком битрейте, оптимизированы для ограниченного диапазона частот. В отличие от них, Opus поддерживает голосовую связь с низкой пропускной способностью и полный спектр того, что мы слышим. Это, к примеру, музыка, поскольку она фактически объединяет части двух разных кодеков, а именно SILK для узкополосного и CELT для широкополосного. В самых последних версиях кодека алгоритм нейронной сети, основанный на глубоком обучении, фактически используется для определения того, какой именно вариант применять в данный момент времени. Именно по этой причине всегда автоматически выбирается оптимальный вариант, даже когда присутствуют и речь, и музыка.

Где используется?

Теперь давайте посмотрим, как Opus применяется в Интернете:

Opus обычно используется в приложениях для связи в реальном времени, прямых трансляций и просмотров видео в режиме онлайн. Это часто сопровождается видеопотоками, хотя и необязательно. Говоря о звуковой составляющей, следует помнить, что видео обычно следует параллельно аудио, что обеспечивает идеальное качество, как звука, так и картинки.

Имея собственные интернет стандарты, Opus может работать без WebRTC, однако сам WebRTC не может работать без Opus. Поэтому кодек прекрасно передает звуковую часть интернет-вызовов.

Видеостриминг Opus с помощью стандарта WebRTC также оказался очень полезным инструментом для проведения прямых трансляций. Вместо использования специализированного оборудования, установленного программного обеспечения или флэш-памяти, стримеры могут отправлять аудио (и видео) прямо из браузера, используя только микрофон (и/или веб-камеру).

Flussonic и OPUS

Начиная с версии 21.12 Flussonic Media Server поддерживает кодек OPUS. Документация

0. Об авторе

image

Всем привет, меня зовут Максим Логвинов и я студент Харьковского Национального университета радиоэлектроники.

Меня всегда интересовали звук и музыка. Я сам любил писать электронную танцевальную музыку и мне всегда было интересно, как человеку, который недостаточно хорошо разбирается в высоких материях математики, узнать, что же происходит со звуком в компьютере: как он пишется, сжимается, какие для этого существуют технологии и так далее. Ведь со школьной скамьи и физики я понимал, что звук — он «аналоговый»: его мало того что нужно преобразовать в цифровой (для чего необходимы такие устройства как АЦП), но его нужно как-то сохранить. А ещё лучше, чтобы эта музыка занимала поменьше дискового пространства, чтобы можно было поместить в скупую папку побольше музыки. И чтобы звучала хорошо, без всяких слышимых артефактов сжатия. Музыкант ведь. Натренированное ухо, не лишённое музыкального слуха, достаточно сложно обмануть методами, которые используются для компрессии звука с потерями — по крайней мере, на достаточно низких битрейтах. Ишь, какой привередливый.

А давайте посмотрим, что из себя представляет звук, как он кодируется и какие инструменты используются для этого самого кодирования. Более того, поэкспериментируем с битрейтами одного из самых продвинутых на сегодняшний день кодеков — Opus и оценим, что и с какими циферками можно закодировать, чтобы и рыбку съесть, и… Собственно, просто почему бы и нет? Почему бы не попытаться описать простым языком не только то, как хранится и кодируется аудио компьютером, но и протестировать один из лучших кодеков на сегодняшний день? Особенно, если речь идёт о сверхнизких битрейтах, где практически все существующие кодеки начинают творить невероятные вещи со звуком в попытках уложиться в малый размер файла. Если хочется отвлечься от рутины и узнать, какие выводы были получены при тестировании нового кодека — добро пожаловать под кат.

1. Кодирование звука

Звук имеет физическую природу. Любой звук — это колебания в пространстве (в данном случае — в воздухе), которые улавливаются нашим ухом. Колебания имеют непрерывный характер, который можно описать математическими моделями. Делать же этого мы, конечно же, не будем, но поставим перед собой вопрос: как колебания, имеющие непрерывную природу, записать в машину, которая оперирует лишь нулями и единицами?

1.1. Ни сжатия, ни потерь

image
Рис. 1.1 — Графическое описание импульсно-кодовой модуляции

Для того, чтобы записать звук, нам необходимо преобразовать его в набор нулей и единиц. В случае с форматом WAV делается это наитупейшим образом: входящий звуковой поток разбивается на малейшие отрезки (кванты, отсюда термины «частота квантования», «частота выборки» или «частота дискретизации«) и в каждый такой отрезок времени пишется текущее значение аналогового сигнала в двоичной форме. Файлы формата WAV могут быть записаны с частотой дискретизации, к примеру, от 8 кГц до 192 кГц, но, де-факто, стандартом считается частота выборки в 44.1 кГц.

Следует отметить, что WAV, как контейнер, поддерживает и другие способы хранения аудио-информации: к примеру, ADPCM, который способен, в зависимости от полосы пропускания, кодировать аудио-данные с переменной частотой дискретизации.

В каждом таком отрезке в двоичной форме кодируется фактическое напряжение аналогового сигнала: наивысший уровень можно представить в виде «1111», наинизший — в виде «0000». И вот здесь вступает в игру второй параметр — глубина звучания, определяющая, насколько точно будет оцифровано значение волны в отрезок времени. Зачастую файлы формата WAV пишутся с разрядностью в 16 бит или 32 бит. Выше разрядность — точнее запись.

  • 44100 раз в секунду пишется 16-битное число. 44100 * 16 = 705600 бит/с для одного канала;
  • для стерео-записи данное значение умножается на 2 — 1411200 бит/с или наши
1.2. Сжатие без потерь

О сжатии без потерь я не буду много писать. С этим термином можно ознакомиться здесь. Фактически, данный метод представляет собой, говоря грубо, архивацию аудиозаписи алгоритмами, заложенными в кодек, но данные при этом не теряются и сохраняется возможность восстановить аудио-запись с точностью бит-в-бит. При декодировании таких форматов мы получаем, фактически, тот же WAVE-формат, только он занимает меньше дискового пространства; сжатие — приблизительно двухкратное и зависит от характера кодируемой композиции. При прослушивании записи кодек производит «разархивирование» композиции и шлёт поток несжатых нулей и единиц на обработку звуковой карте.

Таких кодеков существует достаточно много: это FLAC (Free Lossless Audio Codec), разработанный организацией Xiph (она же и разработала Opus), ALAC (Apple Lossless) от одноимённой компании, APE (Monkey’s audio), WV (WavPack) и прочие, менее известные форматы сжатия аудио без потерь.

1.3. Сжатие с потерями — обманываем свой слух

Учёные умы начали задумываться о том, что, в принципе, часто нет смысла сохранять полную информацию об аудиозаписи, так как наше ухо несовершенно. Оно может не слышать тихих звуков после громких, оно может не слышать слишком высокие и слишком низкие частоты и так далее. Эти феномены называются эффектом маскировки.

В итоге поняли: можно ведь выбросить здесь, подрезать там, а слушатель практически ничего не заметит — несовершенное ухо просто даст возможность слушателю обмануть себя. Следовательно, появляется возможность избавиться от психоакустической избыточности в файле.

Собственно, психоакустика существует как дисциплина и изучает психологические и физиологические особенности восприятия звуков человеком. Собственно, эти психоакустические модели и были заложены в основу работы программ сжатия с потерями и одним из первых таких форматов стал MPEG 1 Layer III или просто MP3. Здесь же оговорюсь, что маркетинг, оперирующий фактами практически без преувеличения, сделал своё дело: аудио-файл занимает в десять раз меньше места (с оговоркой: это при кодировании с битрейтом в 128 кбит/с, что позволяет получить «приемлемое для типичного слушателя качество» — вспоминаем 1411 кбит/с для WAVE), а, следовательно, на компакт-диск или на жёсткий диск поместится уже на порядок больше аудио-записей. Фурор! Популярность формата взорвала индустрию цифровой звукозаписи. В периоды не самых быстрых подключений к сети Интернет передавать подобные файлы стало как нельзя удобно. Удобно передавать, удобно хранить, удобно закинуть пачку композиций себе на плеер. Создано множество аппаратных декодеров формата MP3, в связи с чем файл проигрывался чуть ли не на холодильнике каждой железке.

На момент написания данной статьи уже истекли сроки патентных ограничений и лицензионные сборы прекращены.

Что же касается сжатия с потерями и каким образом получается сжать аудио-файл на порядок без существенной потери для слушателя качества? Если вкратце, от одного кодека к другому нижеследующая последовательность мало отличается. Описание данного процесса упрощено до безобразия, но его течение приблизительно таково:

  1. входящий поток несжатых данных разбивается равные отрезки — на кадры (фреймы);
  2. для того, чтобы создать непрерывный участок спектра, для анализа, помимо уже выбранного кадра, берётся предыдущий и следующий кадр;
  3. сжатие №1: участок проходит через MDCT (модифицированное дискретное косинус-преобразование). Говоря грубо, это преобразование проводит спектральный анализ звукового сигнала — оно даёт возможность получить информацию о том, насколько велика энергия звука в каждом отрезке спектра. В случае с Layer III производится второе MDCT-преобразование, которые повышает эффективность кодирования высоких частот на более низких битрейтах — это оказалось серебряной пулей для взрыва популярности данного кодека. Спасибо пользователю interrupt за поправку: MPEG 1 Layer III использует гибридный подход для преобразования аудио-данных: сначала спектр кодируемого аудио-файла разделяется на множество спектральных полос, как это происходит в SBC (Sub-band coding, англ.); каждая из этих полос преобразуется MDCT к частотному виду, который, собственно, уже даёт конкретную информацию о том, какие частоты и с какой энергией, присутствуют в кадре.
  4. Результат анализа MDCT передаётся психоакустической модели, которая является чем-то вроде «виртуального уха». На данном этапе даются ответы на вопросы, что оставлять, а что можно выбросить из аудио-сигнала без существенного ущерба для восприятия.
  5. сжатие №2: кадр, который прошёл через такое преобразование, может быть сжат с использованием кодов Хаффмана; фактически, если опять говорить грубо, каждый кадр дополнительно архивируется, избавляясь от избыточности. Это похоже на что-то вроде упаковки длинных цепочек нулей и единиц в более короткий формат;
  6. кадры склеиваются; в каждый такой кадр добавляется необходимая информация для кодека:

  • номер/размер кадра;
  • версия формата (MPEG1/2/2.5);
  • версия слоя (Layer I/II/III);
  • частота дискретизации;
  • режим стерео-базы (моно, стерео, совмещённое стерео).

Следует отметить факт того, что формат MP3 не лишён существенных недостатков, при этом сам формат уже не позволяет должным образом расширять его возможности. Возьмём, к примеру, такое явление как pre-echo. Феномен данного артефакта сжатия кратко и достаточно неплохо описан здесь, но его суть заключается в искажении резко нарастающих относительно тишины звуков, например, инструмента Hi Hat. При кодировании такого инструмента в тишине, из-за особенностей работы MDCT, резкий переход будет создаваться с множеством колебаний. В исходной записи этих колебаний не существует, но при их наличии в результирующей записи они достаточно отчётливо улавливаются ухом. Современные кодеки, такие как AAC и OGG также не лишены этого недостатка, но стараются бороться с ними, применяя более точные и совершенные алгоритмы. А вот MusePack (о нём ниже), к примеру, данного недостатка лишён, так как не использует для повышения эффективности второе MDCT-преобразование использует SBC вкупе с очень качественной психоакустической моделью, чем и объясняется его качественное кодирование лишь начиная с битрейтов в 160 кбит/с. Редко, но метко: с таким битрейтом кодек кодирует аудио лучше, чем MP3 с аналогичным битрейтом.

Нельзя не отметить, что разработчики свободного кодека Lame всё же пытаются совершенствовать своё детище, улучшая психоакустические модели и алгоритмы кодирования с переменным битрейтом; релиз версии 3.100 представлен в декабре 2017 года.

Подробную информацию о том, как внутри устроен MP3 с точки зрения формата кадров, можно почитать здесь.

А вот потрясающую статью (а, точнее, её перевод) о том, как работает сжатие аудио кодеком MP3, можно прочитать здесь. Рекомендую!

1.4. Кодирование с потерями совершенствуется: краткое описание формата AAC

На момент написания статьи кодеку MP3 уже более 23 лет. Дабы не повторяться со статьёй (её более новая версия), где уже описаны кодеки OGG Vorbis (и снова привет организации Xiph — это также её разработка), MPC (Musepack), WMA (Windows Media Audio) и AAC, я опишу здесь вкратце формат AAC с точки зрения технологий, которые являлись до недавних пор передовыми в сфере кодирования с потерями.

По моему скромному мнению, AAC (Advanced Audio Codec) — один из самих продвинутых форматов в области кодирования данных. Опишу основные особенности данного формата, начиная с популярных профилей, которые можно представить матрёшкой (см. рис. ниже):

image
Рис. 1.2 — Иерархия профилей AAC, источник — Википедия

— Low Complexity Advanced Audio Coding (LC-AAC)

Низкая сложность декодирования отлично подходит для реализации аппаратного кодека; аппаратные требования к ЦПУ и ОЗУ также низки, что и снискало большую популярность к этому профилю. Достаточно эффективно кодирует сигнал с 96 кбит/с.

— High-Efficiency Advanced Audio Coding (HE-AAC).

Профиль HE-AAC является расширением LC-AAC и дополнен запатентованной технологией SBR (Spectral Band Replication, груб. — «спектральное повторение», статья на английском). Именно технология спектрального повторения позволяет «сохранить» высокие частоты при кодировании с низкими битрейтами.

image
Рис. 1.3 — Графическое изображение принципа восстановления высоких частот

— High-Efficiency Advanced Audio Coding Version 2 (HE-AACv2)

Данный профиль относительно молодой (описан в 2006 году), он создан для более эффективного кодирования аудио в условиях низкой пропускной способности.
Вторая версия профиля является расширением, собственно, первого профиля, изменения заключаются в добавлении технологии PS (Parametric Stereo). Принцип несколько похож на технологию SBR: кодек также отводит место под информацию для восстановления стерео-базы, жертвуя аккуратностью.

image
Рис. 1.4 — Графическое изображения кодирования параметрического стерео

— AAC-LD (Advanced Audio Coding — Low Delay)

Профиль AAC-LD имеет усовершенствованные алгоритмы кодирования для уменьшения задержек (до 20 мс.);

— AAC-ELD (Advanced Audio Coding — Enhanced Low Delay)

Данный профиль, который наследует все возможности HE-AACv2 (используются аналоги технологий SBR и PS, но спроектированные для низких задержек);

— AAC Main Profile

Данный профиль был представлен как MPEG-2 AAC или HC-AAC (High Complexity Advanced Audio Coding). Не совместим с LC-AAC;

— AAC-LTP (Advanced Audio Coding — Long Term Prediction)

Этот профиль более сложный и ресурсоёмкий (но и более качественный), чем все остальные. Также не совместим с LC-AAC.

Вот и всё, что я хотел написать об этом кодеке. Основной акцент я сделал на технологии, которые используются в различных профилях AAC (которые, кстати, порождают множество аббревиатур: AAC, LC-AAC, eAAC+, aacPlus, HE-AAC и т.д.), так как буду сравнивать их с таковыми в Opus, но кодек делает своё дело: он широко используется в интернет-радио, а также в технологиях цифрового радио-вещания: DRM (Digital Radio Mondiale) и DAB (Digital Audio Broadcasting) (ознакомиться с этими технологиями можно здесь), YouTube, как аудио-дорожка к множеству роликов в контейнерах mp4, mkv и пр.

2. Введение в Opus: описание формата

image
Рис. 2.1 — Логотип Opus

21 декабря 2017 года организация Xiph представила бета-версию аудиокодека Opus версии 1.3. Я не буду вдаваться в высокие материи при описании данного кодека, так как подобная информация находится в свободном доступе (например, здесь, здесь, а для знающих английский — здесь и здесь.)). Информацию о релизе этой бета-версии можно найти здесь. Здесь я отмечу, что данный кодек является замечательным кандидатом на замену остальных кодеков. У него немало достоинств:

  • битрейт от 6 до 510 Kbit/s;
  • частота дискретизации от 8 до 48KHz;
  • поддержка постоянного (CBR) и переменного (VBR) битрейтов;
  • поддержка узкополосного и широкополосного звука;
  • поддержка голоса и музыки;
  • поддержка стерео и моно;
  • поддержка переменного битрейта (VBR);
  • возможность восстановления звукового потока в случае потери кадров (PLC);
  • поддержка до 255 каналов;
  • доступность реализаций с использованием арифметики с плавающей и фиксированной запятой.

Может возникнуть резонный вопрос: что такого особенного в вышеописанных тезисах? Всё это есть практически в любом более-менее современном кодеке. Ответы последуют далее в статье.

Одна из ключевых особенностей данного кодека — чрезвычайно низкие задержки кодирования: от 2.5 мс. (!) до 60 мс, что просто необходимо, как воздух, приложениям, позволяющим пользователям общаться голосом в сети Интернет. Такие низкие задержки также позволяют строить интерактивные приложения, например, цифровую звуковую студию для совместного написания музыки или что-то в этом роде. Стоит отметить, что по этому параметру кодек конкурирует с относительно новым профилем AAC-ELD, описанному выше; тем не менее, минимальная задержка алгоритмов кодирования составляет прибл. 20 мс., что ни чуть не является проблемой для свободного, открытого и бесплатного кодека Opus.

Я не буду рассматривать все тонкости, связанные с кодированием аудио этим кодеком, но ниже опишу режимы, которые меняются кодеком в зависимости от смены битрейта.

2.1. Opus: режимы кодирования

image
Рис. 2.2 — Сравнение качества кодирования различными кодеками — официальный график с сайта opus-codec.org

После выхода данной бета-версии мне стало интересно, как меняются режимы кодирования в зависимости от битрейта, поэтому я и решил провести эксперименты, начиная с самых низких битрейтов, но только с ними. Проводить эксперименты с более высокими битрейтами я не вижу смысла — это отлично описано в статьях (например, здесь).

Сейчас же перечислим те режимы, которыми оперирует кодек:

  1. Режим кодирования сигнала — LP, hybrid, MDCT:
    • LPC или LP (кодирование с линейным предсказанием, статья на английском) используется в кодеках сжатия голоса и позволяет кодировать голос с достаточным для восприятия качеством, используя при этом очень низкие битрейты. Используется в кодеках GSM, AMR, SILK (также используемый в Skype), Speex (и снова привет Xiph; правда, она объявила кодек как «deprecated» и рекомендует использовать Opus). В кодеке Opus для кодирования голоса на низких битрейтах используется модифицированный кодек SILK, который не является обратно совместимым с таковым в Skype; (модифицированное дискретное косинус-преобразование) — разновидность преобразования Фурье (о нём можно почитать здесь), используется практически во всех кодеках для сжатия музыки с потерями (lossy compression): MP3, AAC, OGG Vorbis и т.д. В кодеке Opus используется кодек CELT (статья на английском);
    • Hybrid mode (гибридный режим кодирования) является разработкой организации Xiph и заключается в том, что для кодирования нижней части спектра сигнала (до 8 кГц) используется LP, а для верхнего (от 8 кГц и выше) — MDCT, а на выходе получаем компромиссное качество звука при сохранении достаточно низкого битрейта.

  2. Стерео-база:
    • кодирование в режиме моно;
    • кодирование в режиме стерео;
    • кодирование в режиме совмещённого стерео (Joint Stereo).

  3. Исходя из вышеперечисленного — изменение ширины спектра в зависимости от битрейта:
    • Narrowband (узкополосное кодирование) — кодирование сигнала с шириной спектра до 6 кГц, соответствует качеству кодирования кодеками GSM и AMR-NB;
    • Wideband (широкополосное кодирование) — кодирование сигнала с шириной полосы от 6 кГц до 14 кГц, соответствует качеству кодирования кодеком AMR-WB (или так называемый операторами «HD Voice»), который используется ныне в сетях третьего поколения (3G);
    • Fullband (полное кодирование полосы) — сохранение всей слышимой человеческим ухом полосы (от 20 Гц до 20 кГц), моно-сигнал;
    • Fullband stereo — см. выше, но стерео-сигнал.
2.2. Низкие битрейты — высокие частоты. Как достигнуты такие результаты?

В начале данной статьи я не зря рассматривал кодек AAC и его навороченные профили, которые, фактически, строят стерео-базу и восстановление высоких частот, что называется, «из воздуха». Утрирую, конечно, но выражение недалеко от истины. Но вот беда: кодек покрыт патентами и является проприетарной разработкой альянса из компаний Bell Labs, Института интегральных схем общества Фраунгофера (который, кстати, и является ключевым создателем формата MP3), Dolby Laboratories и т.д. Следовательно, использование данных технологий потребует лицензионных отчислений, что недопустимо для полностью открытого и свободного кодека. Поэтому разработчики Opus пошли иным путём: они реализовали собственные алгоритмы воспроизведения высоких частот — Band Folding (Spectral Folding, Hybrid Folding). Об этом подходе кодирования высоких частот можно ознакомиться, соответственно, здесь (там даже интерактивные картинки есть), здесь (см. 4.4.1) и здесь. Кодек не синтезирует высокие частоты из дополнительных данных, как это делает HE-AACv2, он берёт за основу сам сигнал, исходя из энергии в области высоких частот, закодированной в оригинальном сигнале. Слепое тестирование со стороны энтузиастов показывает, что данный метод очень эффективен, не говоря уже о том, что подобный метод такого воспроизведения высоких частот, по заверениям разработчиков, более прост в исполнении, нежели SBR или его аналог и реализуем с меньшими алгоритмическими задержками.

К слову: результаты слепого тестирования можно посмотреть на графиках по следующей ссылке.

Давайте же испытаем это последнее слово в области сжатии звука с потерями.

2.3. Opus: инструменты для кодирования и тестирования

Данное тестирование проводилось на коротком отрывке из аудиокниги Вадима Зеланда — Трансерфинг реальности. Книга была озвучена российским актёром и радиоведущим Михаилом Черняком, который обладает приятным тембром голоса.

Как был получен отрывок?

    Утилитой «youtube-dl» был скачан фрагмент файла формата WebM — контейнер, в котором присутствует только аудио-дорожка:

Дальше пойдёт описание практически каждой из них — с приложением скриншотов и субъективного описания звучания, после чего последуют небольшие выводы.

3. Оценка звучания кодированных дорожек

По-хорошему, оценка звучания должна быть объективной и проводиться, к примеру, с использованием метода слепого ABX-тестирования (статья на английском). Тестирование проводится для того, чтобы исключить эффект пустышки (плацебо).

Если вкратце, суть метода заключается в прослушивании при помощи вспомогательного ПО (Foobar или аналогичное веб-приложение, см. прим. на рис. 3.1) двух семплов: референсного и сжатого ­— кнопки А и В соответственно. Слушатель заранее не знает, какой из них является сжатым, а какой — референсным.

image
Рис. 3.1 — Пример внешнего вида одной из программ слепого ABX-тестирования

Далее слушатель прослушивает аудиозапись, подставленную программой под кнопку Х и пытается определить: к какому из двух семплов (А или В) относится семпл на кнопке Х. После выбора ответа слушателем цикл повторяется определённое количество раз, после чего программой выводится результат, где показано, с какой вероятностью слушатель нажимал кнопки случайно.

Я принципиально не проводил слепое ABX-тестирование, но пожелал описать субъективное восприятие звука с приведением скриншотов спектрограммы каждого семпла в надежде, что читателям данной статьи это будет интересно.
Поехали.

image
Рис. 3.2 — Спектрограмма записи, кодированной с битрейтом 8 кбит/с
opus-enc-8.opus

1. На рис. 3.2 показана спектрограмма для кодирования практически с самым низким битрейтом. Аудио-файл кодируется методом LP, кодек отводит спектр частот в 6 кГц; всё, что выше — обрезается. В итоге размер файла чрезвычайно мал, качество звучания соответствует таковому с кодеком AMR-NB (Narrowband). Классика жанра в сетях сотовой связи второго поколения (GSM). Поведение кодека Opus соответствует вышеописанному в диапазоне битрейтов от 6 до 9 кбит/с.

image
Рис. 3.3 — Спектрограмма записи, кодированной с битрейтом 10 кбит/с
opus-enc-10.opus

2. На рис. 3.3 показана спектрограмма для кодирования с битрейтом в 10 кбит/с. Та же ситуация: кодирование методом LP, но спектр частот уже шире — до 8 кГц. По звучанию — среднее между AMR-NB и AMR-WB.

image
Рис. 3.4 — Спектрограмма записей, кодированных с битрейтами 12 и 13 кбит/с
opus-enc-12.opus
opus-enc-13.opus

3. На рис. 3.4 показано две спектрограммы: для битрейтов 12 и 13 кбит/с соответственно. Здесь ситуация интереснее: при 12 кбит/с используется всё то же LP, но ширина спектра расширена ещё больше: до 10 кГц и звучание практически идентично таковому в AMR-WB.

Начиная с битрейта 13 кбит/с кодек переключается в гибридный режим и начинает использовать сразу три метода: LP, MDCT и Band Folding. Всё, что лежит в диапазоне от 0 до 8 кГц, кодируется LP, от 8 до 10 кГц — MDCT; именно этот отрезок спектра в 2 кГц используется как исходная информация для использования Band Folding — отсюда получаем фактически восстановленные высокие частоты, вплоть до 20 кГц.

Отчётливо видны «мазки» вдоль записи, начинающиеся с 10 кГц; видна попытка кодека сохранить максимум информации о высоких частотах. Интересно, что уже при 13 кбит/с. кодек в гибридном режиме, с использованием Hybrid Folding, пытается работать в режиме Fullband, восстанавливая спектр вплоть до 20 кГц.

Что же по поводу звучания? Звучание голоса просто Фантастическое — с большой буквы Ф. На такой результат не способен даже HE-AAC с его SBR — даже близко не способен. Высокие частоты, в области которых находятся шипящие, свистящие, цокающие (Ш, Щ, С, Ц) звуки воспроизводятся потрясающе, слушать человеческую речь — приятно. Не забываем про цифру «13 кбит/с», а ведь с таким битрейтом раньше работали кодеки GSM (AMR-NB), где толком и не разобрать, где «Ш», а где «С»…

Тем не менее, не стоит забывать, что для кодирования музыки такой режим всё ещё плохо подходит: из-за кодирования нижней части спектра методом LP в области нижних частот присутствуют существенные искажения, особенно, в области перехода, где голоса нет, но слышен соответствующий данной области FX-эффект «атмосферного ржавого скрипа».

image
Рис. 3.5 — Спектрограмма записей, кодированных с битрейтами 14 и 15 кбит/с
opus-enc-14.opus
opus-enc-15.opus

image
Рис. 3.6 — Обратите внимание на выделенную область FX-эффекта

4. На рис 3.5 видно, как меняется способ кодирования сигнала от перехода к более высокому битрейту — с 14 до 15 кбит/с. Пока спектрограмма записи для битрейта в 14 кбит/с похожа на вышеописанную с 13 кбит/с, то начиная с битрейта в 15 кбит/с использование гибридного режима прекращается и кодек полностью полагается на MDCT и Band Folding.

Почему я так решил? Потому что при прослушивании записи в области FX-эффектов все искажения, которые присущи LP, пропадают. Да и если присмотреться на спектрограмму обеих записей (см. также рис. 3.6), то можно увидеть, что точность воспроизведения спектра увеличена. Однако, характерный «мазок», разделяющий спектр пополам, в области 10 кГц, можно увидеть в обоих случаях.

Это как раз тот случай, когда качество здесь сопоставимо с таковым у mp3@80 кбит/с, если не выше. Опять-таки, не имею права ставить свои суждения истиной в последней инстанции, так как не проводил слепое ABX-тестирование.

5. Начиная с битрейта в 18 кбит/с (opus-enc-18.opus), последнего становится достаточно для того, чтобы переключиться в режим Fullband Stereo, а это означает, что на данном битрейте можно получить «приемлемое» качество записи в условиях очень малой пропускной способности сети. Нет, это не фиаско, братан, это победа!

Далее всё достаточно просто: пропорционально, с увеличением битрейта, кодек всё реже использует Band Folding, так как, собственно, битрейт становится достаточным для того, чтобы закодировать более высокие частоты без надобности в их искусственном восстановлении. Чем выше битрейт — тем более широкий спектр будет закодирован без применения Band Folding.

4. Вместо заключения

Что же касается меня, то тот «порог прозрачности» (или «Transparency», как это называют носители английского языка), который выражается в моей неспособности отличить оригинал от сжатого аналога — прибл. 170 кбит/с. Для mp3 этот параметр лежит в пределах 224-256 кбит/с, в зависимости от характера музыки.

Что же тут сказать. Технологии стремительно развиваются. И не только технологии сжатия аудио-данных — все технологии, не побоюсь обобщить. Особенно приятно, что такие качественные технологии, которые позволяют так качественно обмануть человеческое ухо и позволяющие быть настолько универсальными, также развиваются и остаются свободными и открытыми. Спасибо разработчикам и тем потрясающим людям, которые творят и двигают прогресс. А также спасибо всем за внимание и всем, кто осилил статью до конца.

Опус про Opus. Новый кодек — прощай, MP3?

Отдельные открытия, сделанные человеком, оказываются настолько практичными изобретениями, что остаются в повседневной жизни надолго . Например, стандарту цифрового сжатия звука MP3 уже около 20 лет, что по меркам компьютерных технологий — более чем долгий срок. За эти двадцать лет произошло немало открытий и технологических прорывов. Но для цифрового аудио, как это ни странно, пока мало что изменилось. MP3 «забрался» во все устройства, какие только можно, — смартфоны, портативные проигрыватели, DVD-плееры, часы и прочие электронные приборы.

Почему так? Ведь кодирование с потерями — это неизбежное ухудшение качества звука. Простому обывателю вполне может показаться, что у MP3 давно есть альтернативы — FLAC, APE и прочие алгоритмы компрессии аудиоданных с возможностью идентичного восстановления волновой формы после декодирования. Суждение о том, что появление алгоритмов сжатия звука без потерь составит MP3 конкуренцию во всех отношениях, — очень поверхностно. Помимо качества звука, за которое так переживают любители музыкальных коллекций, существует еще немало других объективных причин, по которым MP3 не может быть забыт и заменен принципами сжатия без потерь.

Прежде всего, потому что форматы кодирования звука с потерями используются не только для музыки, но и для передачи голоса через Интернет. Главный козырь MP3 и других механизмов сжатия с потерями — эффективное использование каналов передачи. Чтобы организовать IP-телефонию, необходимо обеспечить внятную речь как можно большему числу абонентов. При этом качество звука уходит на второй план. Кроме этого, очень важна возможность «мгновенного» декодирования потока, без которого затрудняется синхронный обмен информацией. В данном случае использование (даже теоретически) алгоритмов сжатия без потерь приводило бы к сильным временным задержкам, и интерактивное общение было бы просто невозможным.

Тем не менее MP3 не лишен недостатков. Не секрет, что низкий битрейт «съедает» детали звука, наделяя его к тому же целым набором неприятных артефактов — призвуками, свистом и звоном, разного рода искажениями. При использовании MP3 в IP-телефонии наблюдаются большие временные задержки из-за необходимости дополнительной буферизации данных.

⇡#Opus: новое слово в цифровом звуке

Новый открытый кодек Opus лишен самых серьезных недостатков MP3, при этом он сохранил все достоинства «народного» кодека и даже приумножил их.

Структура Opus позволяет ему эффективно справляться со звуковыми артефактами. Для этого была предложена многоступенчатая архитектура обработки аудиосигнала. Основной аргумент, который говорит в пользу применения нового кодека для IP-телефонии, — низкая временная задержка.

Основную работу над созданием уникального алгоритма сжатия вели несколько человек: Jean-Marc Valin (Xiph.Org, Octasic, Mozilla Corporation), Koen Vos (Skype) и Timothy B. Terriberry (Xiph.Org, Mozilla Corporation). Не обошлось и без вездесущей Google — по словам самих создателей Opus, интернет-гигант оказал значительную поддержку при разработке и тестировании кодека.

Один из создателей кодека Opus — Jean-Marc Valin

Движок нового кодека основывается на двух независимых стандартах, предложенных Xiph.Org Foundation и Skype Technologies S.A. (принадлежит Microsoft). Новый кодек является гибридным решением, он сочетает в себе технологии кодеков CELT (Constrained Energy Lapped Transform) и SILK. Последний используется для реализации связи в Skype.

⇡#Как работает Opus

Принцип работы кодека не нов, но оригинален и главное — позволяет получить очень хороший результат на выходе. Поступивший сигнал кодируется SILK или CELT избирательно.

Первый движок (SILK) применяется для компрессии голоса, а также в тех случаях, когда требуется эффективно расходовать пропускную способность канала связи. Обрабатываемый аудиосигнал анализируется кодеком на предмет наличия человеческой речи. Голосовые составляющие отделяются от прочих звуков, после чего кодек выполняет анализ частотной характеристики звука, понижая уровень дискретизации для данных, содержащих голосовую информацию, то есть речь. Затем Opus исследует присутствующие шумы и оптимизирует сигнал для определенного битрейта. Далее кодек преобразовывает сигнал с помощью фильтра предварительной очистки. Используя речевые кадры, модуль предсказания частоты аудиосигнала вносит изменения в последующие кадры, после чего частотное квантование нормирует частоты человеческой речи. Далее следует важный этап обработки звука — устранение искажений, возникающих при недостаточно высоком битрейте. После этого используется модуль формирования шума квантования, который снижает шумы внутри рабочей полосы, вытесняя их за пределы рабочего диапазона. На заключительном этапе интервального кодирования SILK работает с дискретными величинами, которые могут принимать ограниченное число значений, — осуществляется покадровый вывод сигнала.

В процессе кодирования аудиоданных с высоким качеством, например музыки, задействуется модуль CELT. Его механизм схож с принципом работы наиболее популярных кодеков с потерями и завязан на дискретных косинусных преобразованиях, а также на «оптимизации» звука. Последняя состоит в том, что из сигнала удаляются составляющие, которые не несут полезной нагрузки для слуха человека, — до кодирования он их или не слышит, или слышит с большим трудом.

Если заглянуть в настройки кодирования, например в программе EZ CD Audio Converter (бывший Easy CD-DA Extractor), можно увидеть, что новый кодек предлагает выбрать режим сжатия — звук или музыку. Эта настройка и определяет приоритет того или иного алгоритма кодирования Opus.

Opus поддерживает частоты дискретизации от 8 до 48 кГц. Кодирование звука возможно в диапазоне битрейта 6—510 кбит/с. Длительность кадров варьируется от 2,5 до 20 мс.

Кодек осуществляет кодирование в режимах моно и стерео, используя технологию постоянного и переменного битрейта, а также поддерживает компрессию до 255 каналов.

⇡#Opus: наглядная победа

Универсальность структуры кодека Opus позволила ему на невысоком битрейте обойти самых главных конкурентов — Apple HE-AAC, Nero HE-AAC, Vorbis и AAC LC. На данной диаграмме вы можете наблюдать, насколько лучше параметры задержки у нового кодека по сравнению с конкурентами.

А это — график, демонстрирующий превосходство Opus над другими кодеками по качеству звука. Результаты тестирования говорят о том, что аудио, декодированное с помощью Opus, в большинстве случаев более полно восстанавливает исходную картину звука — на разных битрейтах и на разной частоте. Под терминами fullband stereo и narrowband подразумеваются граничные частоты дискретизации.

Говоря о достоинствах нового кодека, нужно отметить и стабильность его работы в разных условиях, что особенно важно при передаче данных в беспроводных сетях. Opus обладает гибким алгоритмом адаптации к изменению пропускной способности канала связи, поэтому качество звука остается неизменным, а сам кодек частично компенсирует потери, обеспечивая трансляцию без сбоев.

⇡#Софт для работы с Opus

Разработчики программного обеспечения торопятся выпустить обновления с поддержкой кодека Opus. Такие популярные утилиты для работы со звуком, как EZ CD Audio Converter, foobar2000, AIMP, VLC Media Player, уже могут работать с файлами в этом формате. Новый кодек принят на вооружение и при организации потокового вещания посредством Icecast, он включен в K-Lite Codec Pack и фильтры LAV.

В ближайших версиях альтернативной прошивки для портативных аудиоустройств Rockbox также появится поддержка Opus. Любители смогут слушать музыку и аудиокниги на плеерах iPod, Archos и прочих. На портативных устройствах под управлением Android также можно будет слушать аудио через Rockbox, установив соответствующее приложение RaaA (Rockbox as an Application).

На данный момент новый кодек уже поддерживается в разработках Mozilla — Firefox и Thunderbird. Очевидно, что поддержку Opus скоро можно будет увидеть и в других браузерах. В ближайшее время он появится и в Skype.

Opus: палки в колесах

Очевидное превосходство качества, которое показывает Opus при кодировании, еще не означает его безоговорочной победы. Данный кодек пока не избавился от всех багов и только в сентябре этого года прошел сертификацию в IETF (Internet Engineering Task Force) как стандарт аудиокодека для использования в Интернете.

Кроме того, новой разработке еще предстоит «пободаться» с многочисленными претензиями и судебными исками, которые следует ожидать в будущем. Opus имеет статус royalty-free, то есть за его использование не нужно платить никаких отчислений правообладателям. Появление такого продукта, понятное дело, невыгодно многим конкурентам.

Первые «бузотеры» уже высказались против нового кодека — компании Qualcomm и Huawei заявили о том, что новая разработка нарушает принадлежащие им патенты. Разработчики Opus дали комментарии по этому поводу, сообщив, что они не нарушили авторских прав и более того — они ожидали появления подобных заявлений и готовы отстаивать свою правоту.

⇡#Заключение

Спустя 20 лет существования MP3 человек все так же плохо слышит разницу между оригинальным звуком и звуком, который претерпел потери в результате компрессии. Тем не менее он всячески ищет способы улучшить качество оцифрованного звука и минимизировать потери при одинаковом битрейте.

Кодек Opus, безусловно, ждет большое будущее. Низкий уровень искажений, а также минимальные по сравнению с конкурирующими алгоритмами временные задержки — все это делает Opus идеальным для интеграции данной технологии в сфере IP-телефонии и трансляции речи.

Впрочем, скорее всего, такого размаха, который сопутствовал победоносному шествию MP3, «Опусу» вряд ли удастся достичь. В свое время появление кодека MP3 стало настоящей революцией в сфере хранения и передачи звука. Сегодня новый кодек может лишь предложить более эффективное использование каналов передачи на низких скоростях. Что же касается музыкальных предпочтений, то, полагаем, любители портативного звука останутся стоять на своем — звук должен быть без потерь. Да и сами разработчики это не отрицают.

В презентации Opus сказано буквально следующее: «Кодек может использоваться для любых целей, за исключением Lossless-сохранения (для этого используйте FLAC) и за исключением кодирования с ультранизким битрейтом (для этого используйте codec2)».

Аппаратная поддержка Opus будет обязательно. Ведь показатели у нового кодека отличные, а значит, в скором времени можно будет ожидать использования новой технологии в беспроводных наушниках и портативных плеерах, которые мы по-прежнему будем по старинке называть MP3-плеерами.

OPUS — Opus Audio File

Формат OPUS, разработанный для поддержки он-лайн вещания сообществом Internet Engineering Task Force, представляет собой аудиоформат сжатия данных с потерями. Файлы OPUS, кодированные с помощью кодека OPUS, встречаются редко, т.к. в большинстве случаев кодек OPUS используется для потокового он-лайн вещания.

Формат OPUS позволяет легко менять битрейт файла от 6 до 510 Кбит/с с использованием кодеков SILK (используемого Skype) и CELT. Этот кодек очень часто используется для проведения видеоконференций, передачи речи по IP, видеочатов и др.

Вот небольшой, но неполный список программ, которые могут открывать документы OPUS:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *