👀
WavTokenizer - новый сота аудио кодек с 1 кодовой книгой, лучшим качеством реконструкции и сжатием до 40-75 токенов на секунду аудио. Аудио кодек, объеденивший множество преимуществ из остальных кодеков.
Многие современные аудио кодеки используют остаточное векторное квантование (RVQ), и кроме этого хороших идей как будто бы нет... Сейчас речь пойдет про аудио кодек, в котором только 1 кодовая книга (кодбук) и типа... Стоп, мы же отказались от 1 кодбука и перешли на RVQ, зачем делать шаг назад?
Отказались от 1 кодбука, потому что для хорошего качества реконструкции он должен быть очень большой, типа 2^40... Это число привели авторы
SoundStream - первого аудио кодека на основе RVQ.
Остаточное векторное квантование использует несколько кодбуков и в результате мы получаем несколько латентов из каждого кодбука. Чтобы обработать все латенты, модели на основе RVQ используют иерархические архитектуры: в моделях
VALL-E это AR/NAR архитектура, в
MusicGen это slanted autoregression, в
UniAudio это LT и GT архитектура. Также есть идеи, позволяющие уменьшить количество кодовых книг с 8 до 4, как в
Hifi-Codec.
Получается такой баланс:
1) Экономим на размере кодбука, но вынуждены использоать иерархические архитекуры в моделях, а это увеличивает размер последовательности с которой придется работать трансформерам.
2) Не экономим на размере кодбука, но будем долго сранивать элементы кодбука с латентом из энкодера. При этом будем экономить на длине последовательности.
⭐️ НОООО авторы WavTokenizer все же работают с 1 кодбуком и достигли лучшего качества реконструкции, как? Честно говоря я сам не понял, в статье написано, мол мы взяли 200 центроидов из LibriTTS и сопоставили их с текстовым вокабом... Поэтому я даже
решил спросить у авторов подробностей и щас жду ответа. В итоге размер кодбука составил всего-лишь 2^12 и количество токенов в секунду всего 40-75. Вау, теперь и кодбук мелкий и размер последовательности тоже. Число 2^12 получилось не просто так, при этом размере элементы кодбука наиболее эффективно используются. Для того, чтобы в кодбуке было меньше "неактивных" элементов применяется метод random awaking, как в
JukeBox. Мы просто периодически будем заменять неиспользуемые элементы на рандомные векторы из текущего батча.
Теперь про качество реконструкции. В декодер был добавлен механизм внимания, расширенное контекстное окно, STFT и
ConvNeXt блоки. Также итоговый лосс состоит из 4 лоссов: потеря квантования (евклидово расстояние), L1 между мел-спектрограмами, состязательный хиндж лосс, L1 фичермапов между субдискриминаторами.
Основные идеи закончились, дальше советую почитать папиру) На последок скажу, что сейчас доступна лишь small модель и модельки побольше стоят на обучении. В статье вы не найдете некоторых деталей экспериментов, поэтому почитайте ишьюсы в их репе. Каких-то особых проблем в их китайском коде не наблюдается) Очень интересная работа, спасибо 👋
#papers #audio