Принцип сжатия Opus
Алгоритм сжатия звука в кодеке Opus основан на гибридной схеме, сочетающей технологии LPC (Linear Predictive Coding) и MDCT (Modified Discrete Cosine Transform). Этот подход позволяет эффективно сжимать звуковые данные, сохраняя высокое качество при различных битрейтах и условиях передачи.
Принцип сжатия звука алгоритмом Opus
- Анализ входного сигнала: Входной сигнал анализируется на предмет наличия речевых компонентов и музыкальных элементов. Для речевого контента применяется технология LPC, а для музыки — MDCT.
- LPC-анализ: Если сигнал содержит речь, то выполняется линейный предсказательный анализ. Этот метод моделирует вокальные тракты говорящего и позволяет точно предсказывать последующие выборки на основе предыдущих. После анализа формируется остаточный сигнал, который затем подвергается дальнейшему сжатию.
- MDCT-анализ: Когда сигнал больше похож на музыку, используется модифицированное дискретное косинусное преобразование (MDCT). Оно разбивает сигнал на частотные компоненты, позволяя сжать их с учетом психоакустических особенностей восприятия человеком.
- Квантование и энтропийное кодирование: Квантованные коэффициенты подвергаются энтропийному кодированию, чтобы уменьшить избыточность информации. Для этого используются методы, такие как арифметическое кодирование или Хаффман-кодирование.
- Потеря пакетов и восстановление: Опус включает механизмы защиты от потерь пакетов, что делает его идеальным для передачи звука по ненадежным каналам связи. В случае потери пакета система может восстановить часть утраченной информации, используя предыдущие кадры.
Алгоритм сжатия звука на техническом уровне
- Разбиение на кадры: Входной звуковой поток делится на кадры длиной 10 мс (480 выборок при частоте дискретизации 48 кГц). Каждый кадр обрабатывается независимо.
- Предсказание: Выполняется линейная предсказательная фильтрация (LPC) для каждого кадра. Коэффициенты фильтра вычисляются методом Левинсона-Дарбина.
- Остаточное кодирование: Остаточные сигналы после предсказания квантуются и кодируются с помощью арифметического кодера.
- Частотно-временное преобразование: Если сигнал больше напоминает музыкальный, то применяется модифицированное дискретное косинусное преобразование (MDCT). Полученные спектральные коэффициенты квантуются и кодируются.
- Энтропийное кодирование: Квантованные коэффициенты сжимаются с использованием метода Хаффмана или арифметического кодирования.
- Формирование выходного потока: Все сжатые данные объединяются в единый выходной поток, включающий заголовки кадров, информацию о конфигурации и сами данные.
- Передача и декомпрессия: Передаваемый поток принимается на стороне получателя, где происходит обратная последовательность операций: декомпрессия, восстановление исходного сигнала и воспроизведение.