Gradient-based forced alignment для любых differentiable ASR моделей
Статья предлагает универсальный способ получить word-level timestamps даже у ASR моделей, где aligner не заложен архитектурно: AED, Whisper-like models и speech LLMs. Идея проста и технически аккуратна: взять gradient teacher-forced token probability по входному аудио, превратить его в frame-level saliency и декодировать монотонный путь динамическим программированием. Это не замена быстрым production aligners, но сильный диагностический инструмент: один механизм работает для CTC, transducer, AED и speech LLM.
Метод. Для каждого токена авторы считают gradient его log probability относительно входа или промежуточного представления, редуцируют feature axis в saliency score, добавляют silence/blank topology и audio-energy weighting, а затем находят монотонное выравнивание. Для autoregressive AED и speech LLM они используют character targets, потому что input-grid saliency может уточнить границы тоньше, чем subword attention grid. Для CTC и transducer остаются native subwords, иначе char-level targets разваливают эмиссионную модель.
Результаты. На Buckeye Whisper-large-v3 с gradient на оптимальной глубине encoder дает WBE 39 ms и 80.0% границ в 50 ms collar против 49 ms и 69.1% у cross-attention. На TIMIT тот же вариант получает 33 ms WBE против 42 ms у cross-attention. В streaming моделях gradient особенно полезен: FastConformer-CTC на Buckeye имеет posterior WBE 366 ms, а gradient - 158 ms; Emformer transducer posterior 399 ms, gradient - 139 ms. При этом сильные native aligners остаются лучше в своих условиях: MMS-FA posterior на Buckeye дает 46 ms, тогда как gradient - 121 ms.
Ограничения. Главная цена - compute: нужен backward pass по токенам, поэтому авторы прямо не продают метод как практичный aligner для массового inference. Метод требует differentiable access к модели и teacher-forced scoring, а качество зависит от выбранной внутренней глубины и blank/silence схемы. Кроме того, сравнение с attention aligners частично использует tuned head selection на dev data, что ограничивает прямую переносимость абсолютных чисел.
Фишка из статьи. Самый интересный negative result: более высокая временная resolution входа не означает лучший alignment. Для Whisper-large-v3 лучший gradient берется не на log-mel input и не на выходе encoder, а примерно на 3/4 encoder; у streaming FastConformer глубокие слои, наоборот, накапливают задержку.
| Gradient level | Whisper-large-v3 WBE | Whisper <=50 ms | FastConformer WBE | FastConformer offset |
|---|---|---|---|---|
| Log-mel input | 53 ms | 66.2% | 158 ms | -80 ms |
| Encoder input | 44 ms | 74.6% | 152 ms | -63 ms |
| Encoder 1/2 | 41 ms | 78.2% | 146 ms | +73 ms |
| Encoder 3/4 | 39 ms | 80.0% | 229 ms | +196 ms |
| Encoder output | 42 ms | 79.0% | 305 ms | +274 ms |
Как это читать: gradient alignment зависит не только от temporal grid, но и от того, на каком уровне сеть уже сформировала устойчивую speech-text correspondence. Для Whisper оптимум в середине encoder, а для streaming CTC поздние слои становятся хуже из-за накопленной emission delay.