Cocktail-Talker: когда речевой ассистент должен молчать
Cocktail-Talker поднимает полезную для речевых ассистентов задачу: в шумной многопользовательской беседе надо не только распознать речь и ответить, но и решить, адресована ли реплика ассистенту. Авторы вводят три действия - ответить, слушать или игнорировать - и обучают speech LLM выбирать действие перед текстом ответа. Главная ценность статьи в том, что она делает turn-taking измеримой задачей, а не побочным поведением диалоговой модели.
Метод. Система построена поверх Qwen2.5-Omni-7B: audio encoder и talker заморожены, а thinker дообучается через LoRA rank 128. В словарь добавлены action tokens <|respond|>, <|listen|> и <|ignore|>; ответ генерируется только после <|respond|>. Данные создаются пайплайном Cocktail-DialogGen: 14 400 уникальных диалогов превращаются в 72 000 шумовых смесей, около 1280 часов, с разными средами, ролями, числом говорящих и уровнями SNR. После supervised fine-tuning авторы добавляют GRPO с reward за правильное действие и корректный формат.
Результаты. На seen environments Cocktail-Talker SFT+GRPO получает accuracy 0.931, F1 для respond 0.914, F1 для silent 0.942 и macro F1 0.928. На unseen environments цифры почти не падают: accuracy 0.933 и macro F1 0.930. Для сравнения, speech-to-speech модели без механизма молчания вроде Moshi и PersonaPlex получают F1-S 0.000, потому что всегда пытаются говорить.
Ограничения. Основная слабость - синтетическая природа данных: диалоги пишет LLM, речь синтезируется Qwen3-TTS, шумы микшируются по заданным сценариям. Это не заменяет реальные встречи, семейные разговоры или колл-центры, где есть перекрытия, неполные фразы и социальные нюансы. Также постановка сводит поведение к трем токенам и не обсуждает задержку, потоковую обработку и цену полного speech LLM в реальном ассистенте.
Фишка из статьи. GRPO здесь не просто повышает средний F1: он исправляет конкретный failure mode - модель чаще распознает момент, когда надо ответить, и меньше путает listen с ignore.
| Условие | Respond recall | Listen correct | Ignore correct |
|---|---|---|---|
| SFT, seen | 80.0% | 76.6% | 99.9% |
| SFT+GRPO, seen | 86.5% | 81.2% | 100.0% |
| SFT, unseen | 81.1% | 75.0% | 100.0% |
| SFT+GRPO, unseen | 87.4% | 78.6% | 100.0% |
Как это читать: почти идеальный ignore означает, что модель хорошо отсекает явно нерелевантный шум, но труднее всего ей отличить адресованную реплику от реплики другим людям. Именно respond/listen зона дает основной выигрыш от GRPO.