Почему склеить ASR + LLM + TTS — плохая идея?
В 2024 году каждый второй стартап по голосовым ассистентам собирал конвейер из распознавателя речи, большой языковой модели и синтезатора. На бумаге звучало логично: услышали — поняли — ответили. На практике вылезали три проблемы, которые сводили на нет всё впечатление:
- Задержка — каждый компонент добавляет сотни миллисекунд, итого 1-2 секунды. Для диалога это смертельно.
- Потеря просодии — интонация, тембр, эмоции, паузы. ASR выкидывает всё, кроме текста, TTS синтезирует заново, но «усреднённо».
- Монолитность — ошибка на этапе распознавания неисправима. Если ASR услышал «пять» вместо «пятьдесят», LLM ответит про пятерку, а TTS скажет с уверенным голосом «берём пять рублей» — получится фарс.
Voice-2-voice (V2V) модели решают это кардинально: они работают напрямую с акустическим сигналом, минуя текст как промежуточное представление. Но как именно? Под капотом у них два столпа — нейронные кодеки и трансформеры аудио. Разберём каждый до шестерёнок.
Нейронные кодеки: как сжать голос до токенов
Классические аудиокодеки (Opus, AAC) работают на психоакустике — выбрасывают то, что якобы не слышно. Нейронные кодеки делают иначе: учатся сжимать сырой звук в компактное латентное представление, из которого потом можно восстановить сигнал с минимальными потерями. Более того, это представление можно подавать на вход нейросети — получается дискретный «язык» звука.
Ключевая идея — Residual Vector Quantization (RVQ). Звуковой фрагмент (обычно 10-20 мс) кодируется энкодером в непрерывный вектор. Затем он проходит несколько уровней квантования: каждый следующий уровень кодирует ошибку предыдущего. На выходе — стопка из N токенов (обычно 4-16) на каждый временной шаг. Эти токены можно потом декодировать обратно в waveform.
Три главных кодека, на которых построены современные V2V модели (данные на июль 2026):
| Кодек | Битрейт (кбит/с) | Уровни RVQ | Особенность |
|---|---|---|---|
| SoundStream (Google, 2021) | 3-12 | 8-16 | Первый end-to-end нейрокодек, адаптивный битрейт |
| EnCodec (Meta, 2022) | 1.5-24 | 4-32 | Спектральная потеря + adversarial training, основа AudioLM |
| DAC (Descript, 2023-2024) | 8-16 | 4-12 | Устранение тональных артефактов, открытый вес, популярен в open-source |
| SpeechTokenizer (2025) | 4-8 | 4-8 | Разделение семантики и акустики на разных уровнях RVQ |
Выбор кодека — компромисс. Чем меньше битрейт, тем ниже качество ресинтеза, но тем проще трансформеру обрабатывать последовательность. Ошибки кодека (например, «металлический» призвук у EnCodec на низких битрейтах) убивают естественность голоса. Поэтому современные V2V модели (как в Voxtral-TTS) часто используют DAC или SpeechTokenizer, а не оригинальный EnCodec.
Трансформеры аудио: как обработать последовательность кодековых токенов
После кодирования мы получаем не одну последовательность, а N параллельных потоков токенов (по числу уровней RVQ). Задача трансформера — предсказать следующую «стопку» токенов по предыдущим. Это похоже на языковое моделирование, но в многомерном пространстве.
💡 Важно: Трансформер работает не с сырым аудио, а с токенами. Как и в классических LLM, мы используем кросс-энтропию, но на каждый уровень RVQ — своя голова. Иногда уровни предсказываются последовательно (авторегрессивно), иногда — параллельно с помощью декодеров.
Три основных подхода к архитектуре:
- Одноуровневая авторегрессия (AudioLM, Bark). Трансформер генерирует сначала «семантические» токены (первый уровень RVQ), затем на их основе — «акустические» (остальные уровни). Это даёт хороший контроль просодии, но медленно — генерация идёт токен за токеном.
- Многоуровневая поточная генерация (VoiceBox, CosyVoice). Трансформер предсказывает все уровни RVQ одновременно, используя маскирование и зашумление. Это быстрее, но хуже улавливает глобальные интонационные паттерны.
- Диффузионные трансформеры (NaturalSpeech 3, 2025-2026). Генерация начинается с шума и постепенно денойзится, управляемая контекстом (спикер, эмоция, текст). Показывают лучшее качество, но требуют больше итераций.
Последние тренды (середина 2026): гибридные модели, где семантический уровень генерируется авторегрессивно (как в LLM), а акустические — неавторегрессивно или через диффузию. Это сочетает лучшую контролируемость с производительностью. Для реальных диалоговых систем с субсекундной задержкой такой подход становится стандартом.
Разделение семантики и акустики: главный архитектурный трюк
Одно из самых изящных решений — заставить разные уровни кодека нести разную информацию. SpeechTokenizer от Microsoft (обновлённая версия 2026) делает это принудительно: первый уровень RVQ кодирует только фонемы и ритм (семантика), второй — тембр, третий — шумы и артефакты. Это позволяет независимо менять содержание речи, не трогая голос.
Голосовые эмбеддинги Qwen3, например, работают в непрерывном пространстве размерности 1024, но их можно свести к дискретным токенам через проецирование. Однако дискретные токены дают преимущество — можно применять все техники LLM: KV cache, speculative decoding, beam search.
На практике разделение семантики и акустики решает проблему «путаницы»: если V2V модель хочет изменить только эмоцию, но сохранить смысл, она меняет акустический уровень, а семантический оставляет неизменным. Без разделения любая замена токена может сломать и смысл, и голос.
Пошаговый план: как построить V2V систему (без кода, но с пониманием)
1 Выбор кодека
Если важна обратная совместимость с уже обученными моделями — берите DAC (веса открыты, биоинспирированные потери). Если нужна максимальная степень сжатия — EnCodec с 8 уровнями. Для академических экспериментов — SpeechTokenizer.
2 Выбор архитектуры трансформера
Для диалогов (низкая задержка) — одноуровневый декодер с 4-8 уровнями RVQ, предсказываемыми параллельно через неавторегрессивную голову (например, MaskGIT стиль). Для креативных задач (озвучка, аудиокниги) — авторегрессия на семантическом уровне + диффузия на акустических.
3 Обучение
Нужны парные данные: входное аудио и выходное аудио (например, speech-to-speech конверсия или TTS с голосом). Для V2V без текстовой транскрипции — применяйте самоконтролируемое обучение (маскирование части токенов). Размер датасета — от 5 тысяч часов. Обратите внимание: если вы планируете работать с конверсией голоса с сохранением интонации, датасет должен содержать много спикеров.
4 Инференс
Кодируете входной аудиопоток чанками (40-80 мс), трансформер генерирует кодековые токены ответа, декодер восстанавливает waveform. Чтобы добиться потоковости — используйте конвейеризацию: пока трансформер считает, следующий чанк кодируется. ExecuTorch позволяет запускать такие модели на мобильных устройствах и встраиваемых системах с минимальной задержкой.
Нюансы и ошибки, которые сломают ваш продакшн
Будущее V2V: прогноз на 2026-2027
Текст как промежуточное представление умирает. Уже сейчас модели вроде Moshi 2.0 и LlamaVoice 2026 работают напрямую с акустическими токенами, обходясь без фонем. Это означает, что задержка упадёт до 50-100 мс, а эмоциональная выразительность станет нативным свойством, а не прикрученным «параметром». Единственное препятствие — вычислительные ресурсы: потоковый инференс требует GPU с памятью хотя бы 8 ГБ, но с ростом открытых моделей и оптимизаций (вроде ExecuTorch) это станет доступно даже на Raspberry Pi.
Мой совет: если вы строите голосового ассистента — не копируйте пайплайн «ASR → LLM → TTS». Потратьте время на освоение кодековых токенов и гибридных трансформеров. Через год это будет стандартом, а вы будете в числе тех, кто не догоняет, а ведёт.