The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Доступен аудиокодек Opus 1.4"
Отправлено Аноним, 25-Апр-23 11:47 
Спроектируем простейший кодек. Предположим что частота дискретизации входного сигнала 44100
Одна из первых стадий любого transform кодека (в том числе и opus) это разбиение входных PCM семплов на фреймы размера N (обычно выбирается какой то степенью двойки, хотя в opus не так), пусть N=1024, после чего к этим фреймам применяется MDCT, на выходе которого получается набор из N коэффициентов, где каждый  коэффициент, если очень очень грубо то представляет амплитуду сигнала с частотой Ai*fs/N в исходном фрейме (я тут специально скипнул про фазу, перекрытие, и оконную функцию) где fs - частота Найквиста. Далее с этими коэффициентами можно что то сделать, например квантовать. В самом простом виде можно просто под низкочастотную часть оставить бит по 12, а в высокочастотном по 3-4, самые высокочастотные вообще обнулить. Почему так можно это вопрос нашего восприятия звука.

И... Поздравляю вы написали простейший lossy кодек. На средних и больших битрейтах он даже будет как то работать. Я сам такой писал)

Возвращаясь к частоте дискретизации
Когда вы проделаете обратное преобразование вы получите снова сигнал с частотой дискретизации 44100. Но значит ли это что мы сохранили высокочастотные составляющие? Нет, мы их грубо квантовали и даже занулили. Породив там искажения много много больше чем любой нормальный ресемпл.

Вернемся к ресемплингу. В чем его проблема? Сам по себе ресемплинг в большую сторону не несет никаких искажений. Проблема в том что нам нужен идеальный lowpass фильтр, то есть фильтр пропускающий все частоты без искажений в области пропускания, и полностью заграждающей выше определенной частоты. На практике такой фильтр не реализуем. Поэтому да на практике ресемплинг вносит некоторые искажения АЧХ в области высоких частот. Но для ресемплинга мы можем реализовать фильтр так что все искажения будут ниже уровня заметности.

В нашем же выдуманом кодеке мы не делали ресемплинг явно, но мы уже внесли искажений на несколько порядков больше.

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

Все, уже много написал. Далее goto hydrogenaud.io


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру