Elastic Time: динамический frame-rate для аудио-латентов без внешних подсказок
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 Гц.
| Метод на MuChin | Kept ratio | Mel-d | STFT-d | SI-SDR |
|---|---|---|---|---|
| ET-greedy@0.5 | 0.5 | 1.11 | 1.71 | 2.3 |
| ET-greedy | 0.5 | 1.14 | 1.73 | 1.6 |
| ET-greedy | 0.7 | 1.03 | 1.65 | 3.4 |
| ET-greedy | 0.9 | 0.95 | 1.58 | 4.6 |
| ET-DP | 0.7 | 1.05 | 1.66 | 3.4 |
| Conv-Downsample | 0.5 | 1.11 | 1.72 | 2.5 |
| CodecSlime | 0.5 | 1.14 | 1.73 | 0.7 |
| CodecSlime | 0.9 | 0.96 | 1.59 | 4.3 |
Самая практичная деталь: greedy-выбор почти догоняет точный DP по объективу, но проще для пайплайна. Это делает работу похожей на инженерный plug-in для существующих autoencoder-based speech моделей, а не на еще один отдельный codec.