Тем не менее в статье нашла пару интересных архитектурных и тренировочных решений 👇
Архитектура
⏺Модель в двух версиях: 8B (опенсорс, на основе Qwen3-VL-8B) и MoE 30B-A3B (30B параметров, 3B активных)
⏺Whisper-large-v3 audio encoder
⏺Семантические токены S3Tokenizer от CosyVoice V3
🥺 Dual-Resolution Speech Representations
Модель генерит текст и речевые токены авторегрессионно. При этом у нее две головы: текстовая (по одному токену за шаг генерации) и аудио голова (k=5 токенов за шаг). И здесь появляется проблема audio-LLM: temporal rate mismatch. Текст генерится со скоростью ~3 Hz (токенов в секунду), а речь ~25 Hz (зависит от токенов конечно).
Решение такое: (см. картинку)
Grouping (25 Hz → 5 Hz): на вход LLM каждые k=5 последовательных речевых токенов конкатенируются и проецируются в эмбеддинг. Длина последовательности сокращается в 5 раз. Далее мерджат с текстовым эмбеддингом
Speech Refined Head (SRH): из output'а LLM отдельная голова разворачивает сгруппированные эмбеддинги обратно в 25 Hz токены, авторегрессионно генерируя 5 токенов за группу.
🍸 Core-Cocktail training
Классическая проблема мульти-модального обучения: если файнтюнить LLM на аудио-данных с высоким learning rate, то модель быстро учится новой модальности, но забывает текстовые способности. Если с низким, то обучение стагнирует. Из 🔗DrVoice (их же статья) есть конкретные цифры: после агрессивного fine-tuning текстовые метрики падают с 81.77 до 70.19, что существенно.
Тренируем агрессивно, потом частично откатываем:
🔴Фаза 1: full fine-tuning с высоким LR (LLM, энкодера, адаптера). Модель сдвигает параметры в сторону мультимодальности.
🟣Intermediate merge: интерполируем веса обученной модели M₁ с исходной LLM M₀:
M_r = α × M₁ + (1-α) × M₀. В тех репорте используют α=0.5, то есть 50/50 микс.💚Фаза 2: продолженное обучение с низким LR для стабилизации
Результат из DrVoice такой: после merge и фазы 2 текстовые метрики восстанавливаются до 74.73.
Интересно, что в DrVoice для маленькой модели использовали
α=0, то есть полный откат к исходной LLM (при этом аудио-энкодер, SRH и адаптеры сохраняют обученные веса). В Fun-Audio-Chat уже α=0.5, но авторы не показывают, как это влияет на метрики. Хотелось бы увидеть сравнение.🐱 Чего не хватило
Авторы упоминают мульти-таск DPO стейдж для устойчивости к шумным аудио, instruct-following и voice empathy, но нет деталей. Ни таблиц, ни абляций. Для сравнения, их же статья 🔗Fun-ASR содержит куда больше подробностей про RL пост-тренинг.
Также авторы упоминают full-duplex версию, но я не разобралась, как она поддерживает параллельный аудио-стрим пользователя вместе с генерацией модели. Если кто разобрался, напишите пожалуйста, как устроена параллельная обработка входящего аудио?
