Сегодня разбираем статью о zero-shot TTS с управлением стилем через текстовые инструкции — FlexiVoice.
Авторы решают частую проблему таких моделей — конфликт модальностей. Если мы хотим озвучить фразу «Мне так грустно» весёлым голосом, опираясь на удивлённый голос спикера в референсе, модель скорее всего прочитает текст недостаточно радостно или вообще проигнорирует эмоцию из инструкции. Идея FlexiVoice заключается в чётком разделении источников сигнала: модель должна копировать из аудиопромпта только спикер-зависимые характеристики (тембр), а эмоцию, скорость и громкость брать исключительно из текстовой инструкции.
Архитектурно FlexiVoice — это текстовый претрейн Phi-3.5-mini-instruct, аудиотокенизатор Dual Codec, Flow Matching для генерации мел-спектрограммы и вокодер Vocos. На этапе претрейна модель учат только на текстовых инструкциях, без референсного аудио. Используют 8 тысяч часов открытых данных и 100 тысяч часов с синтетическими инструкциями, которые сгенерировали через DeepSeek-V3 по метаданным видео (датасет Emilia) и именам персонажей видеоигр, особенности голосов которых LLM и так хорошо знает. После этого претрейна у модели появляется базовая способность следовать инструкциям, но она всё ещё не следует сложным промптам.
Основной контрибьюшен статьи — решение этой проблемы с помощью трехстадийного RL-пайплайна, который постепенно усложняет задачу. Сначала модель учат базовому клонированию нейтрального голоса под нужную эмоцию. В качестве данных используют пары из датасета ESD для алгоритма DPO: позитивом выступает запись, лейбл которой совпадает с эмоцией из текстовой инструкции, а плохим — та же запись с любой другой эмоцией.
На втором этапе применяют алгоритм GRPO для разрешения конфликтов между аудиопромптом и текстом. В качестве reward используют две модели: SV оценивает схожесть тембра, а классификатор — точность эмоции. На третьей стадии добавляют сложные промпты: просьбы говорить с определённой манерой или от лица персонажа. Здесь тоже работает GRPO, но в роли LLM-as-a-judge выступает Kimi-Audio-7B-Instruct. Авторы показывают, что без предыдущих двух стадий, если после претрейна перейти сразу к третьему этапу, модель хуже следует сложным инструкциям и хуже клонирует эмоцию на противоречивых примерах.
Результаты на бенчмарках показали, что для английского языка FlexiVoice обходит весь опенсорс в умении следовать сложным инструкциям и разрешать конфликты модальностей. По WER модель немного уступает CosyVoice2, но выигрывает его по метрике CMOS.
Подводя итог, FlexiVoice — это пример того, как задачу синтеза речи с текстовыми инструкциями решают с помощью RL. Мне показались интересными три вещи. Во-первых, поднята важная проблема протекания эмоциональных аспектов из текста, и аудиопромпта. Во-вторых, показан простой способ собрать инструктивную разметку для претрейна при минимуме вводных (по тематике видео или имени персонажа). В-третьих, это хороший практический гайд по тому, где взять в опенсорсе DPO-датасеты для звука и какую модель использовать в качестве reward-моделей для GRPO.
Дарья Дятлова