Total-duration-aware duration modeling for text-to-speech systems
paper
#grokaem_audio
Про скорость в tts мы краем глаза смотрели
тут. Одна из проблем того же dubbing - регулирование скорости: речь в исходном языке должна быть по длине как и в таргет. Для этого мы можем использовать post-processing, когда мы ускоряем весь семпл. Также можем довериться самой TTS модели (implicit) или каким-то образом передавать durations (explicit). Наша задача здесь - это сделать модель, которая и будет предсказывать durations на sequence фонем.
Для предсказания этих durations мы можем тренировать модель как regression с MSE, маскируя рандомно durations, также можем делать предсказание с flow-matching. Авторы предлагают два ключевых изменения:
👍
1. вместо просто маскирования также передавать и duration, который остался. Грубо говоря, мы замаскировали n durations, общая duration 30 frames, после маскирования осталось 22, тогда в модель вместе с маской мы передадим 8 на каждый из n durations (d_tgt).
2. также вместо просто трансформера авторы используют MaskGIT, который отличается итеративным предсказанием маскированных токенов: выбрал k с наибольшей уверенностью, вставил их в sequence, предсказал заново. Так и с нашей duration моделью - предсказали k durations, уменьшили коли-о фреймов, которые передаем с маской (d_tgt). И так пока d_tgt не будет равна 0.
👍
По метрикам MaskGIT делает менее крутой slope как и по WER, так и по Speaker similarity, если мы начинаем ускорять речь. Также авторы проверили Frechet Duration Distance с train и их подход выигрывает над regression и FM, но мне кажется это не столь честным так как в train speech rate +- всегда одинаковый.
Несмотря на более subtle slope, дроп все таки остается сильным wer ~2 → ~7, но и учили авторы только на примерах с скоростью 1x.