LINUX.ORG.RU

Хочу тоже поделиться своим поделием: аудио компрессор!

 , , ,


1

1

На волне метапрога, уверен, эта тема останется почти незамеченной, но! Представляю вашему вниманию лосслесс компрессор аудио, работающий на технологии вейвлет-сжатия, лол. Написан на необычном, так любимом всеми common lisp.

Вот ссылка:

https://github.com/shamazmazum/wavelet-audio

Там ещё можно сгенерировать документацию через codex, но codex, похоже, теперь сломан. Для работы нужна моя версия trivial-bit-streams (просто положите её в local-projects), всё лень послать ловсану патчи.

https://github.com/shamazmazum/trivial-bit-streams

Ещё нужен easy-audio, но эту штуку я вроде добавлял в quicklisp

Можно сжимать и расжимать несжатые wav файлы так:

(wavelet-audio:encode-wavelet-audio "~/file.wav" "~/file.wa")
(wavelet-audio:decode-wavelet-audio "~/file.wa" "~/file.wav")

Самое интересное, на мой взгляд, Принцип работы кодирования:

  1. Делим входные данные на блоки по wavelet-audio:*block-size* семплов (4096 по умолчанию).
  2. Проводим декорреляцию каналов (пока тестил только с 2 каналами), используя вейвлет Хаара.
  3. Для каждого канала проводим полное DWT с биортогональным (4,2) вейвлетом (использую тот, который при нужной нормализации дает целочисленные коэффициенты). ЕМНИП, это CDF-вейвлет.
  4. Каждый получившийся subband кодирую адаптивным кодом Райса, в котором параметр кода выбирается на основе бегущего среднего.
  5. Пишу на диск первое значение параметра кода, и получившиеся коды Райса.

Декодирование происходит в обратном порядке примерно за то же время (по факту чуть быстрее из-за реализации, видимо).

Жмёт примерно на 2-4% хуже flac (итого типично сжатие на 25-40%).

Вопрос для тех, кто шарит в вейвлетах

Я использую отражение сигнала от краёв, чтобы преобразовать сэмплы, лежащие на краях блока. Это дает непрерывный сигнал, но с разрывной первой производной. Соответственно, у краевых вейвлетов 1 исчезающий момент. Можно ли как-то сделать 4 исчезающих момента, как и у основных, «внутренних» вейвлетов? Смотрел абсолютно везде, но не нашел ответа. Читал статью про CDV вейвлеты, но это не из той оперы, оказалось

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.