Голосовые интерфейсы и ассистенты
1) Что такое VUI и когда он нужен
Голосовой интерфейс (VUI) — способ взаимодействия через речь: ассистенты в приложении/браузере, умные колонки, IVR/телефония, голос в авто и ТВ.
Подходит для: рук-занятых сценариев (вождение, кухня), быстрых команд («включи…», «позвони…»), доступности, навигации по сложным меню.
Не подходит для: точного визуального выбора (каталоги, таблицы), долгого ввода структурированных данных без экрана.
2) Модель диалога: интенты, сущности и контекст
Интент (цель): что хочет пользователь: `Создать_платеж`, `Проверить_баланс`.
Слоты/сущности: параметры цели: сумма, валюта, адресат, дата.
Контекст/диалог-стейт: что уже известно, что уточняем, где ветвимся.
Правила подтверждения: что подтверждаем явно (деньги, персональные данные).
json
{
"intent": "MakeDeposit",
"slots": {
"amount": {"type": "number", "required": true, "confirm": "sensitive"},
"currency": {"type": "currency", "required": true, "default": "UAH"},
"method": {"type": "payment_method", "required": false}
}
}
3) Паттерны диалога
1. Команда одной фразой: «Пополни счет на 500 гривен Apple Pay». → подтверждение → действие.
2. Уточняющий диалог: «Кому перевести?» → «На какую сумму?» → подтверждение.
3. Пошаговый мастер: сложные сценарии с проверкой данных и обратным шагом.
4. Распознавание намерения + NLU-перефраз: поддержка вариативных формулировок.
5. Быстрые справки: «Какие лимиты на вывод?» — короткий ответ + «Показать на экране».
4) Формулировки: голос и тон
Голос бренда: уверенный, спокойный, дружелюбный; без уменьшительных и «шуточек» в критических шагах (платежи, безопасность).
Макс. длина реплики ассистента: 1–2 предложения; длинные ответы — разбивать и предлагать «Продолжить?»
Вопросы — конкретные: «На какую сумму пополнить?» вместо «Что делаем дальше?»
5) Подтверждения, безопасность и этика
Жесткое подтверждение чувствительных действий: проговаривать ключевые параметры («Пополнить на 500 гривен картой …4581?»)
Двойное подтверждение для необратимых операций.
Без озвучивания полных персональных данных.
Возможность отмены/отката: «Отмена», «Стоп», «Отменить последний шаг».
6) Ошибки и непонимание
Типы сбоев и ответы:- ASR-ошибка (не расслышал): «Не расслышала сумму. Повторите, пожалуйста.»
- NLU-непонятно: «Я не поняла запрос. Могу пополнить счет или показать баланс. Что выберете?»
- Нет данных/ограничение: «Этот метод недоступен в вашем регионе. Назвать другие варианты?»
- Сеть/сервис: «Сейчас нет связи с платежным сервисом. Повторить через минуту?»
Правило: максимум 2 попытки переспрашивания → предложить альтернативу (на экран/человека).
7) Скорость и бардж-ин (перебивание)
Латентность TTFB: целевая < 300–500 мс; если дольше — короткий «эм-мм»-сигнал/earcon.
Barge-in: пользователь может перебить ассистента в любой момент; обрабатываем прерывание корректно.
Стриминг ответа: начинаем говорить раньше, чем готов весь текст, но без обрыва смысла.
8) TTS/ASR и SSML: как говорить «человечно»
Произношение чисел/валют/дат: локальные форматы («п’ятсот гривень», «15 листопада»).
Паузы и ударения: SSML `<break time="300ms"/>`, `<emphasis level="moderate">`.
Чтение аббревиатур/кодов: `<say-as interpret-as="characters">IBAN</say-as>`.
Скорость и тембр: не быстрее 0.9× базовой, чтобы было разборчиво.
xml
<speak>
Top up on <say-as interpret-as = "cardinal"> 500 </say-as>
<sub alias = "hryvnia"> UAH </sub>?
<break time="300ms"/>
Please confirm.
</speak>
9) Мультимодальность: голос + экран
Визуальные подсказки: карточка подтверждения, список методов, прогресс.
Hand-off на экран: «Я отправила варианты на экран. Выберите метод.»
Синхронизация состояния: голос инициирует, экран завершает (и наоборот).
10) Мультиязычность и локализация
Автоопределение языка по сессии/настройке, а не по одной фразе.
Глоссарий терминов: единая терминология для RU/UA/TR/EN.
Региональные форматы чисел/валют/дат, произношение имен/топонимов.
Переключение в диалоге: «Перейти на українську» — явная команда.
11) Доступность (A11y) в голосе
Подтверждение действий — четкое и короткое.
Повтор по запросу: «Повторить» озвучивает последнюю реплику.
Громкость/скорость: «Говори медленнее/тише/громче».
Для слабослышащих: субтитры/транскрипт на экране, вибро-сигналы.
Для нарушений речи: альтернативные способы ввода (кнопка, пресеты).
12) Конфиденциальность, логирование и комплаенс
Wake-word и индикатор записи: явное состояние «слушаю».
Локальная обработка, если возможно; иначе — минимизация данных.
Маскирование чувствительных фрагментов в логах (PAN, IBAN, адрес) и авто-редакция аудио.
Сроки хранения и право на удаление по запросу; настройки «Не сохранять историю».
Возрастные ограничения/родительский контроль (детские голоса/команды).
Прозрачность: «Я записываю эту команду, чтобы улучшить распознавание. Можно отключить в настройках.»
13) Персона ассистента
Имя/персона: краткая биография, область компетенций, что умеет/не умеет.
Тон по ситуациям: обычный (дружелюбный), критический (нейтральный), обучающий (поддерживающий).
Границы: «Я не даю финансовых советов, но могу показать справку.»
14) Метрики качества VUI
Intent recognition rate (точность NLU).
Slot fill rate и avg. turns to fill.
ASR WER/CER (ошибка распознавания слов/символов).
Task Success / Completion rate и Time-to-Complete.
Escalation rate (на оператора/экран).
Barge-in usage и Latency p95.
User Satisfaction / CSAT после сценария.
Abandonment на шаге.
15) Тестирование и QA голоса
Наборы тестовых фраз: синонимы, разговорные формы, акценты, ошибки.
Шумы окружения: улица/авто/кухня, разные микрофоны.
Диалог-реплеи: воспроизводимые сценарии, golden-set для регрессии.
Wizard-of-Oz на ранних этапах.
Юридические сценарии: как ассистент реагирует на потенциально опасные запросы.
16) Интеграция с продуктом (iGaming-кейсы)
Баланс/депозит/вывод: «Какой баланс?», «Пополнить на 200 UAH…», «Статус вывода».
Бонусы/миссии: «Какие бонусы доступны?», «Активируй недельный кэшбэк».
Ответственная игра: «Установи лимит депозита 1000 UAH в неделю.»
Статус систем: «Есть ли сейчас техработы?»
17) Анти-паттерны
Длинные монологи ассистента без возможности перебить.
Неявные подтверждения денежных операций.
Безальтернативное «не поняла» без подсказки вариантов.
Переизбыточные звуки/джинглы, мешающие восприятию.
Попытка «голосом» решать задачи, где нужен детальный визуальный выбор.
18) Шаблоны промтов и ответов
Уточнение слота (сумма):- Ассистент: «На какую сумму пополнить счет?»
- Пользователь: «Пятьсот.»
- Ассистент: «Пополнить на 500 гривен? Подтвердите, пожалуйста.»
- «Подтвердите пополнение на 500 гривен картой …4581. Сказать “подтверждаю” или “отмена”.»
- «Я не расслышала метод оплаты. Могу предложить: Apple Pay, карта, криптокошелек. Что выберете?»
- «Отправила доступные методы на экран. Выберите и скажите “готово”, чтобы продолжить.»
19) Примеры SSML-паттернов
Числа/валюта и пауза:xml
<speak>
Your current balance is
<say-as interpret-as="cardinal">1250</say-as>
<sub alias = "hryvnia"> UAH </sub>.
<break time="250ms"/>
Shall we continue?
</speak>
Акцент на важном слове:
xml
<speak>
<emphasis level = "moderate "> Caution </emphasis>: Verification is required for output.
</speak>
Произношение аббревиатуры:
xml
<speak>
Recharge with <say-as interpret-as = "characters"> IBAN </say-as>?
</speak>
20) Чек-листы
Диалог/контент перед релизом
- На каждый интент — список синонимов/вариантов фраз.
- На каждый обязательный слот — один четкий вопрос.
- Чувствительные действия — с явным подтверждением.
- Есть короткая альтернатива «на экран»/«оператор».
- Реплики ≤ 2 предложений; длинные — с «Продолжить?».
Техника и качество
- Поддержан barge-in и возврат в диалог после перебивания.
- Латентность p95 в норме; есть earcons при задержке.
- SSML настроен: паузы, числа, ударения.
- Логи обезличены/замаскированы; управление историей есть.
- Мультиязычность и локальные форматы проверены.
A11y и безопасность
- «Повторить/Говори медленнее/Громче» работают.
- Не озвучиваются полные персональные/платежные данные.
- Есть отмена/откат действия голосом.
- Возрастные и региональные ограничения проверены.
21) Каркас спецификации диалога (шаблон)
Цель сценария: (например, «Депозит ≤ 90 сек»)
Интенты и синонимы: список примеров фраз.
Слоты: `amount` (req, confirm), `currency` (default=UAH), `method` (enum).
Правила подтверждений: для каких значений/порогов требуется повтор.
Варианты ошибок: ASR, NLU, нет сервиса — тексты + ветки.
Мультимодальные выходы: какие карточки/экраны показываем.
Логи и приватность: что и как маскируем, TTL хранения.
Итоговая шпаргалка
Сначала интенты/слоты/правила подтверждений, потом тексты.
Говорите коротко, позволяйте перебивать и отменять.
Настройте SSML, локальные форматы и тон по контексту.
Держите приватность и логирование под контролем.
Измеряйте Intent/Slot/ASR-метрики, Task Success и латентность.
Всегда имейте альтернативу на экран и путь к человеку.