Audio coding Latents Frame-rate
Neural audio coding

Elastic Time: динамический frame-rate для аудио-латентов без внешних подсказок

10.75-21.29 Hz

Elastic Time решает очень практичную проблему нейронных аудиокодеков и audio autoencoder-ов: почти все они умеют менять bitrate внутри одного latent frame, но продолжают выдавать фиксированную частоту latent frames. В итоге стабильный участок речи, тишина, долгий вокальный звук и плотный transient получают одинаковый временной бюджет, хотя downstream-модели платят именно за длину latent-последовательности.

Почему это важно

Для сжатия фиксированный frame-rate еще можно пережить, если качество реконструкции хорошее. Но для генеративного аудио это становится прямым compute bottleneck: autoregressive-модели платят за число токенов, diffusion/flow-модели с attention тоже чувствительны к длине контекста. Если можно оставить больше anchors на сложных участках и меньше на предсказуемых, то длинный контекст становится дешевле без грубого uniform downsampling.

Метод

  • Базовый autoencoder заморожен: в экспериментах используется Stable Audio Open VAE с латентами 64 channels и частотой 21.5 Hz для 44.1 kHz stereo audio.
  • Поверх bottleneck добавляется Re-Bottleneck-модуль и маленький autoregressive predictor: всего около 0.5M параметров, 3 GRU layers и SwiGLU-FFN.
  • Predictor учится восстанавливать будущие latent frames из anchor frame. Если участок хорошо предсказывается, его frames считаются временно избыточными и могут быть пропущены.
  • Boundary selection делается либо быстрым greedy-алгоритмом, либо exact dynamic programming. На inference пользователь задает средний kept fraction, а модель сама распределяет temporal budget по аудио.

Что показали эксперименты

Авторы тестируют разные operating points в диапазоне примерно 10.75-21.29 latent Hz на SongDescriber, AudioCaps, MuChin и DAPS. Greedy и DP дают близкие результаты, что важно для практического deployment: дорогая оптимизация не обязательна для большей части выигрыша.

На SongDescriber и DAPS Elastic Time обычно дает ниже mel distance и FAD, чем CodecSlime; на AudioCaps картина смешаннее, и авторы честно связывают это с доменным перекосом train data в сторону музыки. На MuChin при rho=0.7 ET-dp-widerange получает 1.04 / 1.65 / 3.6 по mel-d / STFT-d / SI-SDR, тогда как CodecSlime при том же rho дает 1.04 / 1.65 / 2.6. Это не “магическое сжатие без потерь”, но хороший знак: learned latent dynamics помогает выбирать, какие frames действительно можно восстановить из контекста.

Практический вывод

Главная ценность работы не в отдельном SOTA-числе, а в интерфейсе управления: взять сильный фиксированный audio VAE и добавить deployment-time knob для temporal resolution без ASR-aligner, semantic labels или переобучения всего кодека. Для long-context TTS, audio continuation и генерации музыки это ровно тот тип компрессии, который уменьшает длину последовательности там, где модель действительно переплачивает.

Фишка из статьи. Elastic Time сжимает не waveform и не mel напрямую, а латентную временную ось замороженного pretrained autoencoder. Re-Bottleneck выбирает, какие латентные кадры оставить, поэтому частота представления становится контент-зависимой: при kept ratio от 0.5 до 0.99 авторы получают диапазон примерно 10.75-21.29 Гц.

Метод на MuChinKept ratioMel-dSTFT-dSI-SDR
ET-greedy@0.50.51.111.712.3
ET-greedy0.51.141.731.6
ET-greedy0.71.031.653.4
ET-greedy0.90.951.584.6
ET-DP0.71.051.663.4
Conv-Downsample0.51.111.722.5
CodecSlime0.51.141.730.7
CodecSlime0.90.961.594.3

Самая практичная деталь: greedy-выбор почти догоняет точный DP по объективу, но проще для пайплайна. Это делает работу похожей на инженерный plug-in для существующих autoencoder-based speech моделей, а не на еще один отдельный codec.

Оригинальная статья на arXiv