Speech LLM Диалог Turn-taking
Речевые LLM

Cocktail-Talker: когда речевой ассистент должен молчать

F1 0.930

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 recallListen correctIgnore correct
SFT, seen80.0%76.6%99.9%
SFT+GRPO, seen86.5%81.2%100.0%
SFT, unseen81.1%75.0%100.0%
SFT+GRPO, unseen87.4%78.6%100.0%

Как это читать: почти идеальный ignore означает, что модель хорошо отсекает явно нерелевантный шум, но труднее всего ей отличить адресованную реплику от реплики другим людям. Именно respond/listen зона дает основной выигрыш от GRPO.

Оригинальная статья на arXiv