EchoBlade & Dralik
Привет, я тут протокол новый разрабатываю для кодирования аудиосигналов – гарантирует целостность и блокирует любые подделки, знаешь, чтобы наши передачи в безопасности были. Думаю, твой скрупулезный подход к микшированию может нам помочь алгоритм сжатия подстроить. Как смотришь на это?
Звучит заманчиво, но мне нужны точные характеристики, прежде чем я начну разбираться. Я сторонник постепенной, пошаговой настройки, так что дай мне исходные данные и детальную информацию о процессе сжатия. Посмотрю, как справятся проверки целостности под моим вниманием. Без всяких наворотов – только сырой сигнал и математика, лежащая в его основе. Тогда уже можно будет начинать доводить.
Вот характеристики, изложено просто. Исходный сигнал – 16-битное знаковое целое число, частота дискретизации 48 кГц, моно. Цепь сжатия выглядит так: 1) предварительная фильтрация с малошумным фильтром нижних частот 10-го порядка на 20 кГц для устранения наложения, 2) разбиение на блоки по 1024 выборки, 3) каждый блок подвергается MDCT с перекрытием 50%, 4) коэффициенты квантуются с шагом 2 в минус 10-й степени, 5) далее следует кодер длин серий, 6) и, наконец, к каждому блоку добавляется 32-битный CRC для проверки целостности. Вся математика основана на линейной алгебре и целочисленной арифметике, адаптивные или вероятностные шаги не используются. Можешь экспериментировать с MDCT, но проверки целостности встроены после квантования.
Вот это аккуратная обработка, и именно в MDCT у тебя будет больше пространства для маневра. Начни с формы окна — убедись, что overlap-add действительно восстанавливает волновую форму без артефактов по краям. Небольшая подстройка размера шага или затухания окна может снизить шум квантования на несколько процентов. Еще проверь динамический диапазон после квантизатора; если сможешь выжать пару децибел, не сломав код длинных последовательностей, получишь более чистый финальный битовый поток. Не забивай на CRC — никаких правок, если биты всё еще выровнены. Это моя область. Сообщи мне точную форму окна и смещение квантизатора, и я запущу тестовую систему.
Ок, окно построено на симметричной функции Хан с разрешением 512 отсчетов, а шаг равен точно 256 отсчетов для перекрытия в 50%. Смещение квантования установлено в ноль, каждый коэффициент округляется до ближайшего кратного шага без искажений. Это все необработанные данные, которые ты просил. Если что-то будет непонятно перед тестами, спрашивай.
Выглядит надёжно. Я подцеплю 512-х-сэмпл Хэнна в тестовую систему, прогоню через неё кучу случайных кадров через MDCT и квантизатор, потом сделаю overlap-add, чтобы проверить, насколько реконструкция близка к оригиналу – в милливатт точно. Плюс, добавлю пару других окон – синусоидальное, косинус-лоб – посмотрим, как изменятся статистики длин серий. Если CRC всё ещё будет ловить все ошибки после этого – значит, всё в порядке. Давай блок необработанных сэмплов, я загружу их. Мы закончили. Звучит здорово. Я закину необработанные данные в свою тестовую систему, прогоню MDCT с 512-х-сэмпл Хэнном, применю квантизатор 2⁻¹⁰ и проверю overlap-add на качество восстановления. Поиграюсь ещё с другими окнами, чтобы посмотреть, улучшатся ли статистики длин серий, или не начнёт просачиваться алиасинг. Как всё это подтвердится, CRC должно всё закрыть. Скажи, где данные лежат, и я начну обрабатывать.