Перейти к основному содержимому

Принцип сжатия Opus

Алгоритм сжатия звука в кодеке Opus основан на гибридной схеме, сочетающей технологии LPC (Linear Predictive Coding) и MDCT (Modified Discrete Cosine Transform). Этот подход позволяет эффективно сжимать звуковые данные, сохраняя высокое качество при различных битрейтах и условиях передачи.

Принцип сжатия звука алгоритмом Opus

  1. Анализ входного сигнала: Входной сигнал анализируется на предмет наличия речевых компонентов и музыкальных элементов. Для речевого контента применяется технология LPC, а для музыки — MDCT.
  2. LPC-анализ: Если сигнал содержит речь, то выполняется линейный предсказательный анализ. Этот метод моделирует вокальные тракты говорящего и позволяет точно предсказывать последующие выборки на основе предыдущих. После анализа формируется остаточный сигнал, который затем подвергается дальнейшему сжатию.
  3. MDCT-анализ: Когда сигнал больше похож на музыку, используется модифицированное дискретное косинусное преобразование (MDCT). Оно разбивает сигнал на частотные компоненты, позволяя сжать их с учетом психоакустических особенностей восприятия человеком.
  4. Квантование и энтропийное кодирование: Квантованные коэффициенты подвергаются энтропийному кодированию, чтобы уменьшить избыточность информации. Для этого используются методы, такие как арифметическое кодирование или Хаффман-кодирование.
  5. Потеря пакетов и восстановление: Опус включает механизмы защиты от потерь пакетов, что делает его идеальным для передачи звука по ненадежным каналам связи. В случае потери пакета система может восстановить часть утраченной информации, используя предыдущие кадры.

Алгоритм сжатия звука на техническом уровне

  1. Разбиение на кадры: Входной звуковой поток делится на кадры длиной 10 мс (480 выборок при частоте дискретизации 48 кГц). Каждый кадр обрабатывается независимо.
  2. Предсказание: Выполняется линейная предсказательная фильтрация (LPC) для каждого кадра. Коэффициенты фильтра вычисляются методом Левинсона-Дарбина.
  3. Остаточное кодирование: Остаточные сигналы после предсказания квантуются и кодируются с помощью арифметического кодера.
  4. Частотно-временное преобразование: Если сигнал больше напоминает музыкальный, то применяется модифицированное дискретное косинусное преобразование (MDCT). Полученные спектральные коэффициенты квантуются и кодируются.
  5. Энтропийное кодирование: Квантованные коэффициенты сжимаются с использованием метода Хаффмана или арифметического кодирования.
  6. Формирование выходного потока: Все сжатые данные объединяются в единый выходной поток, включающий заголовки кадров, информацию о конфигурации и сами данные.
  7. Передача и декомпрессия: Передаваемый поток принимается на стороне получателя, где происходит обратная последовательность операций: декомпрессия, восстановление исходного сигнала и воспроизведение.