Филлеры и фоновое аудио
Для создания естественного диалогового опыта голосовые агенты поддерживают голосовые филлеры (хезитации), фоновые звуки и тонкую настройку обработки прерываний.
Обработка прерываний
Настройки прерываний определяют, как агент реагирует, когда пользователь начинает говорить во время ответа агента.
Параметры
| Параметр | Описание | По умолчанию |
|---|---|---|
| Allow Interruptions | Разрешить пользователю перебивать агента | Включено |
| Min Interruption Duration | Минимальная длительность речи пользователя (в секундах) для распознавания как прерывание | 0.5 сек |
| Resume After False Interruption | Продолжить ответ агента, если прерывание оказалось ложным (короткий звук) | Включено |
| False Interruption Timeout | Время ожидания (в секундах) после прерывания -- если пользователь не продолжает говорить, агент возобновляет свой ответ | 2.0 сек |
Для телефонных агентов рекомендуется увеличить Min Interruption Duration до 0.7-1.0 секунды, чтобы фоновые шумы телефонной линии не воспринимались как прерывания.
Как это работает
- Агент произносит ответ
- Пользователь начинает говорить
- Если речь пользователя длится дольше
Min Interruption Duration:- Агент останавливается и начинает слушать
- Если речь короче порога (ложное прерывание):
- Агент ждёт
False Interruption Timeout - Если пользователь не продолжает -- агент возобновляет свой ответ
- Агент ждёт
Простой и возврат в диалог
Когда пользователь перестаёт говорить на длительное время, агент может попытаться возобновить разговор. Настройки находятся в секции Простой и возврат в диалог.
Параметры
| Параметр | Описание | По умолчанию |
|---|---|---|
| Таймаут молчания пользователя (сек) | Время до определения пользователя как "отсутствующего". От 5 до 120 секунд | 15 сек |
| Попыток вернуть в диалог | Количество попыток перед завершением сессии. От 1 до 10 | 3 |
| Сообщение для возврата в диалог | Фразы, которые агент произносит, чтобы вернуть пользователя. Несколько фраз разделяются символом | | "Вы ещё здесь? | Я вас не слышу, вы на связи? | Если вас нет, я завершу звонок." |
Логика работы
- Пользователь молчит дольше таймаута молчания
- Агент произносит очередную фразу из сообщения для возврата в диалог: первая попытка -- первая фраза, вторая -- вторая и далее по кругу. Если фраз меньше, чем попыток, они повторяются с начала
- Ожидает ещё один таймаут
- Повторяет, пока не исчерпает число попыток
- Если пользователь так и не ответил -- сессия автоматически завершается с итогом "Таймаут"
Как только пользователь заговорил, счётчик попыток сбрасывается.
Сообщение по умолчанию и язык
Если поле Сообщение для возврата в диалог пустое, при открытии настроек агента оно заполняется стандартными фразами на языке интерфейса платформы. Текст сохраняется вместе с агентом при следующем сохранении, после чего его можно отредактировать как обычно.
Стандартные фразы подставляются на языке интерфейса, а не агента. Если вы работаете в русском интерфейсе, а агент говорит по-английски (или наоборот), перепишите сообщение на языке агента -- иначе он обратится к собеседнику на другом языке.
Если у агента сообщение не сохранено совсем (например, он создан через API), агент использует встроенные фразы на своём языке: русском, английском или иврите. Язык берётся из настройки Язык секции TTS. Для остальных языков встроенные фразы английские -- задайте сообщение вручную.
В режиме Pipeline фраза произносится дословно. В режиме Realtime она передаётся модели с указанием произнести именно этот текст, и модель может слегка его перефразировать.
В фразах можно использовать плейсхолдеры {attempt} (номер попытки), {max_retries} и {timeout}, а также {{key}} из метаданных сессии. Например, если в метаданных передано customer_name: {{customer_name}}, вы ещё здесь? (попытка {attempt} из {max_retries})
Фоновое аудио
Фоновые звуки делают разговор более естественным и создают ощущение "живого" call-центра.
Фоновый шум (Ambient Sound)
| Параметр | Описание | По умолчанию |
|---|---|---|
| Background noise | Включить фоновый звук офиса во время разговора | Выключено |
| Volume | Громкость фонового звука (10% -- 70%) | 30% |
При включении воспроизводится лёгкий офисный эмбиент, создающий ощущение рабочего пространства.
Звук обработки (Typing Sound)
| Параметр | Описание | По умолчанию |
|---|---|---|
| Typing sound | Воспроизводить звук при обработке запроса | Выключено |
Когда включен, пользователь слышит звук печати/обработки, пока агент "думает" над ответом.
Звук печати управляется только своим переключателем и не зависит от хезитаций: включение блока "Хезитации при обдумывании" звук печати не включает.
Голосовые филлеры (Хезитации)
Филлеры -- это короткие звуковые фрагменты ("угу", "хмм", "так..."), которые агент воспроизводит во время разговора для имитации естественной речи.
Две категории филлеров
Филлеры делятся на два независимых списка, каждый со своим переключателем и своим набором фраз:
| Категория | Когда звучит | Примеры фраз |
|---|---|---|
| Хезитации при обдумывании | Агент ждёт ответ от LLM (режим Pipeline) и пауза затянулась | "ммм...", "так...", "эм...", "хм..." -- только очень короткие звуки: до ответа LLM обычно около секунды, а ответ агента ждёт, пока клип доиграет, поэтому длинная фраза только оттянет ответ |
| Поддакивание | Пользователь говорит длинную фразу -- агент показывает, что слушает | "угу", "ага", "понятно" |
Фразы разные по смыслу, поэтому списки раздельные: одна и та же фраза редко годится в обе роли.
Раньше список филлеров был один. При разделении все ранее сгенерированные фразы попали в категорию Поддакивание, а список Хезитации при обдумывании остался пустым. Если у агента были включены хезитации при обдумывании, сгенерируйте для них фразы заново -- иначе в паузах перед ответом ничего не прозвучит.
Управление филлерами
В каждом блоке:
- Включите переключатель категории -- появятся поля с фразами по умолчанию. Язык фраз берётся из языка распознавания (STT), а в режиме Realtime -- из языка модели. Если в STT стоит
Auto-detect, фразы предлагаются на английском -- замените их на язык агента - Отредактируйте или удалите ненужные фразы, добавьте свои
- Нажмите Сгенерировать у фразы (или Сгенерировать все) -- система синтезирует аудио голосом текущего TTS-провайдера агента и сохранит его
- Сгенерированные фразы можно прослушать, удалить или перегенерировать все (удаляет только фразы этой категории)
Настройки воспроизведения
Когда включена хотя бы одна категория, появляются общие параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
| Задержка поддакивания (мин -- макс) | Сколько пользователь должен говорить, прежде чем агент поддакнёт в первый раз (показывается только при включённом поддакивании). У хезитаций при обдумывании задержки нет -- они звучат сразу, как только агент ждёт ответа модели | 1.5с -- 3.5с |
| Громкость | Громкость воспроизведения филлеров обеих категорий | 80% |
Как это работает
-
Хезитации при обдумывании (только режим Pipeline) -- как только агент входит в состояние "думает" (ждёт ответ LLM), звучит одна случайная фраза из списка -- не та, что звучала в прошлый раз. Фраза всегда доигрывает до конца: она никогда не обрывается и не приглушается. Если ответ агента готов раньше, чем фраза закончилась, его речь ждёт окончания фразы и начинается сразу после неё. Поэтому фразы должны быть очень короткими.
-
Поддакивание -- после начала речи пользователя выжидается случайная задержка из диапазона, затем периодически (каждые 2--5 секунд) звучит фраза из списка поддакивания. Подряд одна и та же фраза не повторяется. На короткой паузе в речи пользователя (вдох, пауза между словами) новые фразы не планируются, а уже звучащая доигрывает до конца; когда агент берёт слово, его речь ждёт окончания звучащей фразы -- фразы никогда не обрываются.
В Realtime-режиме блок "Хезитации при обдумывании" не показывается: модель отвечает аудио-в-аудио, состояния "думает" у агента нет. Поддакивание работает в обоих режимах.
Символ | в фразах филлеров
Раньше символ | в тексте филлера задавал точку прерывания -- место, где фразу можно было оборвать, когда готов ответ агента. Теперь филлеры не обрываются никогда: начавшаяся фраза всегда доигрывает, а речь агента ждёт её окончания (не дольше 5 секунд). Символ | в тексте филлера на звучание не влияет и при генерации убирается.
Поэтому вместо длинных фраз с точками прерывания используйте короткие звуки -- они не задерживают ответ.
Не путайте с сообщением для возврата в диалог: там | по-прежнему разделяет фразы для разных попыток.
Фонемная запись для Yandex SpeechKit
Неслова вроде «ммм», «мгм» или «э-э» обычный синтез читает непредсказуемо: один голос тянет звук, другой произносит по буквам. Если TTS-провайдер агента -- Yandex SpeechKit, текст филлера можно записать фонемами в блоке [[ ]]: фонемы перечисляются через пробел, например [[m g m]]. Разметка работает только для русского языка. Текст филлера передаётся в синтез как есть, поэтому в нём можно использовать и паузы sil<[мс]> (длительность в миллисекундах), и ударение + перед гласной в обычных словах: зам+ок.
Особенности разметки:
- Ударение внутри
[[ ]]задаётся выбором гласного, а не знаком+. Ударные гласные:a,ɛ,i,ɔ,u; безударные:ʌ(а/о в первом предударном слоге),ə(о/а в остальных слогах),ɪ(е/и),ʊ(у); отдельноɨ(ы). - Мягкость согласного помечается знаком
ʲ:nʲ,tʲ,sʲ. Шипящие и аффрикаты:ʂ(ш),ʐ(ж),ɕː(щ),t͡ɕ(ч),t͡s(ц);x-- х,j-- й. - Знака долготы нет. Протяжный звук записывается повторением фонемы (
[[m m m]],[[ɛ ɛ]]) или паузой между двумя блоками ([[m]] sil<[120]> [[m]]). Как голос озвучит повтор, зависит от голоса -- прослушайте результат после генерации. - Символ
|внутри[[ ]]ставить нельзя.
Полная таблица фонем -- в документации Yandex SpeechKit.
Хезитации при обдумывании
Только короткие звуки: клип доигрывает до конца, а ответ агента ждёт его окончания.
| Текст | Фонемы | Комментарий |
|---|---|---|
| ммм | [[m m m]] | базовый вариант |
| м-м | [[m]] sil<[120]> [[m]] | два такта |
| хм | [[x m]] | задумчивый |
| мгм | [[m g m]] | с закрытым ртом |
| э-э | [[ɛ ɛ]] | открытая хезитация |
| эм | [[ɛ m]] | |
| а-а | [[a a]] | |
| так | [[t a k]] | короткое переключение |
| та-ак | [[t a a k]] | растянутый вариант |
| ну | [[n u]] | перед ответом |
| ну-у | [[n u u]] | растянутый вариант |
| сейчас | [[sʲ ɪ t͡ɕ a s]] | на грани по длительности -- проверьте, не задерживает ли ответ |
Поддакивание
| Текст | Фонемы |
|---|---|
| угу | [[ʊ g u]] |
| ага | [[ʌ g a]] |
| мм | [[m m]] |
| мгм | [[m g m]] |
| да | [[d a]] |
| да-да | [[d a]] sil<[150]> [[d a]] |
| так | [[t a k]] |
| так-так | [[t a k]] sil<[120]> [[t a k]] |
| ясно | [[j a s n ə]] |
| понятно | [[p ʌ nʲ a t n ə]] |
| хорошо | [[x ə r ʌ ʂ ɔ]] |
| конечно | [[k ʌ nʲ ɛ ʂ n ə]] |
Фонемы оправданы для неслов: «ммм», «мгм», «хм», «э-э». Обычные слова («понятно», «хорошо») синтез и так произносит правильно -- сгенерируйте оба варианта и оставьте тот, что звучит естественнее для выбранного голоса.
Включение филлеров значительно улучшает пользовательский опыт в телефонных разговорах. Пользователь чувствует, что агент "слушает" и "думает", а не просто молчит.
Филлеры генерируются выбранным голосом агента с теми же настройками, что и живая речь: язык, скорость и эмоция (для Yandex SpeechKit -- роль голоса). Если вы измените голос или эти настройки, перегенерируйте филлеры, чтобы они совпадали с речью агента.