Дата публикации
ai_products

KVAE-Audio от Сбера: аудио‑токенизатор 48 кГц для генеративных моделей

Что нового

KVAE-Audio — это аудио‑автоэнкодер от команды KandinskyLab (Сбер), который работает с полным диапазоном частот: 48 кГц по всему спектру.

Главное:

  • Сжимает сырые аудиосигналы в компактные непрерывные латентные представления.
  • Работает не только с речью, но и с музыкой и «общими звуками».
  • Внутри текст‑в‑аудио пайплайна Сбера замена старого автоэнкодера на KVAE-Audio повышает качество генерации при том же генераторе.
  • Размер модели: 166,9 млн параметров.
  • Размер латентного пространства: 64 измерения.
  • Частота дискретизации: полный диапазон 48 кГц (full-band), без даунсемплинга до 16–24 кГц.

KVAE-Audio конкурирует с рядом уже известных аудио‑VAE:

  • MMAudio 44,1 кГц: 427,6M параметров, 40‑мерный латент.
  • DACVAE MovieGen: 107,7M параметров, 128‑мерный латент.
  • SAME-L (Stable Audio 3 VAE): 852,1M параметров, 256‑мерный латент.

На стандартных бенчмарках KVAE-Audio показывает сравнимое или лучшее качество генерации и реконструкции при существенно меньшем размере, чем SAME-L, и заметно меньшем, чем MMAudio.

Генерация: качество латентного пространства

Модель тестировали в сценарии генерации: один и тот же DiT‑генератор, одно и то же обучение, меняется только автоэнкодер. Сравнивали объективные метрики и слепую оценку людьми.

AudioCaps (описания звуков):

  • KVAE-Audio (166,9M, латент 64):
    • CLAP: 0,344
    • CE: 3,982
    • PQ: 6,242
    • FAD (PANNs): 15,381
    • FAD (PASST): 193,760
    • FAD (VGGIsh): 1,210
  • MMAudio 44,1 кГц (427,6M, латент 40): CLAP 0,336, PQ 6,192, FAD (PANNs) 17,873, FAD (VGGIsh) 1,364
  • DACVAE MovieGen (107,7M, латент 128): CLAP 0,313, PQ 6,167, FAD (PANNs) 20,558, FAD (VGGIsh) 1,700
  • SAME-L (852,1M, латент 256): CLAP 0,322, PQ 5,756, FAD (PANNs) 18,446, FAD (VGGIsh) 1,325

На AudioCaps KVAE-Audio даёт лучший CLAP и PQ и самые низкие FAD (PANNs и VGGIsh) среди всех четырёх.

Song Describer (описания музыки):

  • KVAE-Audio: CLAP 0,339, CE 7,216, PQ 7,929, FAD (PANNs) 7,971, FAD (PASST) 189,427, FAD (VGGIsh) 0,599
  • MMAudio: CLAP 0,356, PQ 7,707, FAD (PANNs) 5,412, FAD (VGGIsh) 0,356
  • DACVAE MovieGen: CLAP 0,312, PQ 7,538, FAD (PANNs) 10,194, FAD (VGGIsh) 1,046
  • SAME-L: CLAP 0,345, PQ 7,465, FAD (PANNs) 8,442, FAD (VGGIsh) 0,987

На музыкальном корпусе KVAE-Audio и MMAudio обмениваются лидерством по разным метрикам: у KVAE-Audio выше PQ, у MMAudio немного лучше CLAP и FAD (PANNs).

LibriSpeech test-clean (речь):

  • KVAE-Audio: CLAP 0,389, CE 5,906, PQ 6,940, FAD (PANNs) 4,677, FAD (PASST) 185,609, FAD (VGGIsh) 2,138, WER 0,244, CER 0,576
  • MMAudio: CLAP 0,368, PQ 6,629, FAD (PANNs) 8,305, WER 0,257, CER 0,593
  • DACVAE MovieGen: CLAP 0,413, PQ 7,052, FAD (PANNs) 5,008, WER 0,911, CER 1,048
  • SAME-L: CLAP 0,379, PQ 5,024, FAD (PANNs) 10,257, WER 0,349, CER 0,629

KVAE-Audio даёт одну из лучших комбинаций: низкий FAD (PANNs) и самые низкие WER/CER среди четырёх моделей.

Реконструкция: насколько хорошо автоэнкодер «слышит» исходник

Реконструкцию проверяли на открытых датасетах из разных доменов. Метрики: MEL, STFT, Waveform (ошибка, ниже — лучше), SI-SDR/SDR/SNR (выше — лучше), PESQ (качество речи, выше — лучше).

AudioSet (первая таблица):

  • KVAE-Audio: MEL 0,537, STFT 1,770, Waveform 0,027, SI-SDR 9,065, SDR 9,920, SNR 9,933
  • MMAudio: MEL 0,636, STFT 1,938, Waveform 0,106, SI-SDR −32,080, SDR −2,682, SNR −2,686
  • DACVAE MovieGen: MEL 0,669, STFT 2,275, Waveform 0,029, SI-SDR 8,384, SDR 9,421, SNR 9,416
  • SAME-L: MEL 0,986, STFT 2,726, Waveform 0,027, SI-SDR 9,586, SDR 10,347, SNR 10,339

AudioSet (вторая таблица):

  • KVAE-Audio: MEL 0,516, STFT 1,725, Waveform 0,022, SI-SDR 10,390, SDR 10,675, SNR 10,677
  • MMAudio: MEL 0,681, STFT 1,865, Waveform 0,114, SI-SDR −40,204, SDR −3,274, SNR −3,273
  • DACVAE MovieGen: MEL 0,519, STFT 1,762, Waveform 0,024, SI-SDR 9,688, SDR 10,046, SNR 10,047
  • SAME-L: MEL 0,668, STFT 1,786, Waveform 0,023, SI-SDR 10,278, SDR 10,648, SNR 10,648

KVAE-Audio здесь держится на уровне или лучше DACVAE и SAME-L по большинству метрик и заметно лучше MMAudio.

EARS (речь, важен PESQ):

  • KVAE-Audio: MEL 0,463, STFT 1,314, Waveform 0,006, SI-SDR 9,952, SDR 10,377, SNR 10,384, PESQ 4,266
  • MMAudio: MEL 0,616, STFT 1,395, Waveform 0,030, SI-SDR −29,947, SDR −2,728, SNR −2,697, PESQ 2,424
  • DACVAE MovieGen: MEL 0,453, STFT 1,310, Waveform 0,006, SI-SDR 10,264, SDR 10,680, SNR 10,681, PESQ 4,246
  • SAME-L: MEL 0,774, STFT 1,575, Waveform 0,007, SI-SDR 9,939, SDR 10,374, SNR 10,376, PESQ 2,982

KVAE-Audio и DACVAE показывают почти одинаковое качество речи (PESQ около 4,25–4,27), при этом KVAE-Audio использует латент размером 64 против 128 у DACVAE.

Как это работает

KVAE-Audio — это непрерывный автоэнкодер для аудио:

  • На вход подаётся сырая волна (raw waveform) с частотой 48 кГц.
  • Энкодер сжимает сигнал в латентное представление фиксированного размера (64‑мерный вектор во времени).
  • Декодер восстанавливает аудио по этим латентам.

Ключевая идея: использовать не дискретные токены, а непрерывное латентное пространство. Это важно для генеративных моделей:

  • Трансформер или DiT‑генератор работает не с волной напрямую, а с компактными латентами.
  • Меньше шагов по времени, ниже нагрузка на память и GPU.
  • Генерация становится более устойчивой к артефактам, чем при прямой работе с волной.

В Python‑интерфейсе KVAE-Audio работает как обычная PyTorch‑модель:

  • encode возвращает латенты. По умолчанию — среднее значение mu (детерминированный энкодинг).
  • Если передать sample=True, энкодер будет стахастически сэмплировать латенты.
  • Полная реконструкция эквивалентна вызову model(waveform, sample_rate)["audio"].

Поддержка 48 кГц означает, что модель сохраняет высокочастотные детали, которые часто теряются в токенизаторах, ограниченных 16–24 кГц.

Что это значит для вас

Кому KVAE-Audio действительно полезен

  1. Исследователям и разработчикам генеративного аудио.

    • Если вы строите свой текст‑в‑аудио или аудио‑в‑аудио генератор, KVAE-Audio можно использовать как латентный слой вместо VAE из других проектов.
    • Бенчмарки показывают, что при фиксированном генераторе переход на KVAE-Audio улучшает качество генерации на AudioCaps и даёт конкурентные результаты на музыке и речи.
  2. Создателям музыкальных и звуковых моделей.

    • Поддержка full-band 48 кГц делает KVAE-Audio интересным для задач, где важны верхние частоты: синтез музыкальных инструментов, пространственный звук, саунд‑дизайн.
  3. Командам, которые считают бюджет параметров.

    • По сравнению с SAME-L (852,1M параметров) KVAE-Audio весит 166,9M, то есть примерно в 5 раз меньше.
    • При этом по ряду метрик реконструкции и генерации он не уступает более тяжёлым моделям.

Когда KVAE-Audio не лучший выбор

  • Если вам нужна готовая end‑to‑end система для конечных пользователей (типа «заливай текст — получай трек»), KVAE-Audio — только одно звено цепочки. Нужен отдельный генератор (например, DiT) и пайплайн обучения.
  • Если вы работаете строго в ограниченных ресурсах (мобильные устройства, микроконтроллеры), 166,9M параметров могут оказаться слишком тяжёлыми.
  • Если вы уже глубоко интегрировали другой VAE (например, SAME-L или DACVAE) и вас устраивает качество, переход на KVAE-Audio потребует переобучения генератора.

Практический сценарий использования

  • Обучаете или используете DiT/Transformer для генерации аудио.
  • Заменяете существующий VAE‑токенизатор на KVAE-Audio.
  • Генератор работает в пространстве латентов (64‑мерный латент по времени).
  • Для вывода вы пропускаете сгенерированные латенты через decode и получаете 48‑кГц волну.

KVAE-Audio распространяется через GitHub‑репозиторий kandinskylab/kvae-audio. Для загрузки исходников не нужен VPN, но доступ к GitHub может зависеть от вашей сети и политики провайдера.

Место на рынке

Если смотреть только на цифры из бенчмарков, KVAE-Audio занимает интересную нишу между компактными и тяжёлыми VAE.

По размеру модели и латента

  • MMAudio 44,1 кГц: 427,6M параметров, латент 40.
  • DACVAE MovieGen: 107,7M параметров, латент 128.
  • SAME-L (Stable Audio 3 VAE): 852,1M параметров, латент 256.
  • KVAE-Audio: 166,9M параметров, латент 64.

KVAE-Audio крупнее DACVAE, но заметно меньше MMAudio и особенно SAME-L. При этом латент 64 даёт компромисс между компактностью и выразительностью.

По качеству генерации

  • На AudioCaps KVAE-Audio показывает лучшие CLAP и PQ и самые низкие FAD (PANNs, VGGIsh) среди всех четырёх.
  • На Song Describer KVAE-Audio и MMAudio делят лидерство: у KVAE-Audio выше PQ, у MMAudio лучше CLAP и FAD (PANNs).
  • На LibriSpeech KVAE-Audio даёт одну из лучших комбинаций CLAP/FAD и самые низкие WER/CER.

Суммарно KVAE-Audio выглядит сильным выбором, если вы хотите хорошее латентное пространство для генерации без гигантского VAE на сотни миллионов параметров сверху.

По качеству реконструкции

  • На AudioSet KVAE-Audio держится на уровне DACVAE и SAME-L по SI-SDR/SDR/SNR и показывает хорошие MEL/STFT ошибки.
  • На EARS KVAE-Audio и DACVAE почти совпадают по PESQ (~4,26), при этом KVAE-Audio использует вдвое меньший латент.

Если вам нужна именно качественная реконструкция речи и общих звуков при умеренном размере модели, KVAE-Audio выглядит конкурентоспособно.

Установка

KVAE-Audio ориентирован на Python и PyTorch.

  1. Установите PyTorch, torchvision и torchaudio, подобрав версию под вашу CUDA. В примере используется CUDA 12.8:
pip install torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 --index-url https://download.pytorch.org/whl/cu128
  1. Установите KVAE-Audio из локального пакета (предполагается, что вы клонировали репозиторий kvae-audio):
pip install -e ./kvae-audio

Проект тестировали с Python 3.14.

Как запустить

Запуск инференса

Подготовьте директории:

  • Положите входные WAV‑файлы в папку input_samples.
  • Реконструкции появятся в папке output_samples.

Команда инференса:

python scripts/infer.py \
 --weights_path kvae-audio.pt \
 --input_path input_samples \
 --output_path output_samples

kvae-audio.pt — это файл весов модели. Его нужно скачать отдельно из репозитория или релизов.

Оценка качества реконструкции

Для сравнения оригиналов и реконструкций используйте скрипт eval.py. Он сопоставляет WAV‑файлы с одинаковыми именами в input_samples и output_samples и записывает метрики в metrics.csv в output_samples.

python scripts/eval.py \
 --input_path input_samples \
 --output_path output_samples

Python API: пример кода

Ниже — полный пример, как закодировать аудио, декодировать его обратно и сохранить результат.

import torch
import soundfile as sf
from kvae_audio import KVAEAudio

model = KVAEAudio.load("kvae-audio.pt", map_location="cpu")
model.eval()

data, sr = sf.read("audio.wav")
waveform = torch.from_numpy(data).float().unsqueeze(0).unsqueeze(0)
length = waveform.shape[-1]

with torch.no_grad():
    latents, _, _, _ = model.encode(waveform, sample_rate=sr)
    audio = model.decode(latents)[..., :length]

sf.write("output.wav", audio.squeeze(0).T.numpy(), sr)

Кратко по API:

  • KVAEAudio.load("kvae-audio.pt") — загрузка весов.
  • model.encode(waveform, sample_rate=sr) — получение латентов.
  • model.decode(latents) — восстановление волны.
  • По умолчанию encode возвращает среднее mu. Если нужен стохастический энкодинг, передавайте sample=True.

Цитирование

Если вы используете KVAE-Audio в исследовании или продукте, авторы предлагают такую BibTeX‑ссылку:

@misc{kvae_audio_2026,
  author = {Ivan Kirillov, Denis Parkhomenko, Alexandr Ivanov, Azat Saginbaev, Egor Silvestrov, Denis Dimitrov},
  title = {KVAE-Audio: a full-band continuous audio tokenizer for generative models},
  howpublished = {\url{https://github.com/kandinskylab/kvae-audio}},
  year = 2026
}

Читайте также