DTM-Codec: variable-frame-rate speech codec с mask-guided decoding
DTM-Codec — практичная работа про variable-frame-rate speech coding: кодек не обязан хранить токены через равный шаг, если часть речи спектрально избыточна, а часть быстро меняется. Авторы предлагают Dynamic Token Masking, где retained time steps передаются вместе с position bits, а decoder заполняет пропуски через mask-guided reconstruction. Интересно, что выигрыш показан при честном matched total bitrate, то есть вместе с ценой side information.
Метод
Backbone похож на transformer audio autoencoder: STFT features проходят через Enc1, DTM выбирает retained Stage-1 tokens, Enc2 сжимает их до VQ bottleneck, после чего Dec1/Dec2 восстанавливают spectrogram и waveform. Вместо FSQ авторы используют single-codebook VQ с |C|=16 384, то есть 14 bits/token; position side information считается явно как 1 bit per Stage-1 step. Transformer layers работают с sliding attention window 128, а variable-length batches обрабатываются через FlashAttention variable-length kernel.
Главный технический блок — Path Length Equalization: selector выбирает boundary positions так, чтобы сохраненные токены покрывали динамичные участки, но path length оставался управляемым. В decoder пропуски представлены специальным mask embedding, а не простым повторением соседнего токена.
Результаты
- На LibriSpeech test-clean DTM-Codec@50Hz при 800 bps дает UTMOS 4.22, PESQ 2.66, STOI 0.93, Spk-Sim 0.78 и WER 2.91.
- При 400 bps DTM-Codec@25Hz дает UTMOS 4.11, PESQ 2.07, STOI 0.90 и WER 4.73; это заметно лучше VARSTok@406 bps по MUSHRA и WER.
- Matched FFR→VFR сравнение на 800 bps улучшает PESQ 2.46→2.66 и WER 3.31→2.91.
- MUSHRA: DTM-Codec VFR@50Hz получает 81.62±2.52 против 78.79±2.81 у matched FFR, а VFR@25Hz — 71.26±3.02 против 68.13±3.35.
Ограничения
Training идет на LibriSpeech-960 при 16 kHz, поэтому generalization на music, noisy far-field, emotional TTS или multilingual conversational speech требует отдельной проверки. VFR@80Hz показывает важную границу: при 1280 bps WER становится хуже, чем у FFR (2.98 против 2.54), то есть adaptive masking не всегда полезен на высоком frame-rate. Кодек также остается сравнительно крупным: около 127M parameters.
Фишка из статьи. Самая ценная таблица — matched-rate FFR→VFR: она показывает, что side information не “бесплатная”, но при 400-800 bps VFR всё равно дает выигрыш по quality/intelligibility.
| Rate | Total bps | PESQ FFR→VFR | WER FFR→VFR |
|---|---|---|---|
| 25Hz | 400 | 1.97→2.07 | 5.61→4.73 |
| 40Hz | 640 | 2.32→2.49 | 3.77→3.27 |
| 50Hz | 800 | 2.46→2.66 | 3.31→2.91 |
| 80Hz | 1280 | 2.92→2.95 | 2.54→2.98 |
Как это читать: DTM хорош именно как low-bitrate VFR codec. На 80Hz полезность почти исчерпывается, и adaptive layout может уже вредить ASR-readable reconstruction.