Синтез и распознавание речи

Два компонента дают сценарию голос и слух: один синтезирует речь из текста, другой распознаёт сказанное абонентом. Оба работают через сервис Yandex SpeechKit и доступны в сценариях IVR и в служебных сценариях.

Требуется ключ доступа и оплата Оба компонента не заработают без настроенного ключа доступа к сервису. Каждый запрос к Яндексу платный — это определяет и то, как компоненты настраивают, и то, зачем в синтезе есть кэш.

Синтез речи

Озвучивает заданную фразу. В сценарии IVR может либо сразу воспроизвести результат в линию, либо сгенерировать файл для дальнейшего использования; в служебных сценариях доступна только генерация файла. Полученные файлы имеют формат MP3.

Кэш

Держите кэш включённым Все сгенерированные файлы сохраняются в папку \Oktell\Server\LocalStorage\SynthesisCache. При включённом кэше повторный запрос с тем же текстом не уходит на сервер Яндекса — берётся готовый файл. Для типовых фраз голосового меню это означает, что вы платите за них один раз, а не при каждом звонке.

Обратная сторона: папка со временем разрастается. Её объём стоит держать под наблюдением.

Свойства

СвойствоОписание
РежимВоспроизвести или Сгенерировать файл. В IVR доступны оба, в служебных сценариях — только генерация.
ТекстАргумент с текстом для синтеза.
Голосjane — женский, zahar — мужской, либо «Указать свой». Другие доступные голоса перечислены в документации Yandex SpeechKit.
Пользовательский голосАргумент с именем голоса, если выбрано «Указать свой».
ЭмоцияОкраска голоса: по умолчанию — стандартная; good — добрый, neutral — нейтральный, evil — злой, mixed — смешанный.
КэшИспользовать — брать готовый файл, если такой запрос уже генерировался. Не использовать — всегда обращаться к сервису.
Таймаут ожидания ответа, сПредельное время ожидания ответа от сервера.
Символы прерыванияТолько в режиме «Воспроизвести». Символы или последовательности через запятую либо пробел; при их наборе проигрывание прекращается.
Буфер для DTMFТолько в режиме «Воспроизвести». Переменная для набранной последовательности прерывания.
Очистить буферТолько в режиме «Воспроизвести». Да — очистить буфер, нет — дописать символы в конец.
Путь к файлу в переменнуюПеременная, куда заносится полный путь к сгенерированному файлу.
ПереходПосле успешного завершения синтеза.
Переход, таймаутСервер не ответил за указанное время.
Переход, ошибкаСинтез завершился неудачей.
Две ветки отказа, а не одна Таймаут и ошибка разведены намеренно: в первом случае сервис, скорее всего, жив и стоит попробовать позже, во втором — запрос отвергнут. В обеих ветках у сценария должен быть запасной путь: заранее записанный файл вместо синтезированного, иначе абонент услышит тишину.

Распознавание речи

Распознаёт речь либо из готового файла, либо прямо из линии.

РежимГде доступенТребования и скорость
Файл IVR и служебные сценарии Файл должен быть в формате PCM 16bit 8kHz Mono. Время распознавания примерно равно длительности файла.
Запись Только IVR Запись и отправка звука на распознавание идут одновременно, поэтому ответ приходит почти мгновенно.

В режиме записи она прекращается, когда произошло одно из событий: истекло время записи, набрана последовательность DTMF-символов прерывания, набрано установленное количество DTMF-символов.

Клавиши имеют приоритет над голосом Если абонент вместо ответа голосом нажал клавиши и в буфере оказались значимые символы, распознавание не производится вовсе — результатом становится набранная последовательность DTMF. Исключение — прерывание символом, который сам не оставляет в буфере значимых символов.

Это удобно: один компонент обслуживает и голосовое управление, и привычный набор с клавиатуры, а сценарий разбирает результат одинаково.

Свойства

СвойствоОписание
РежимЗапись или файл.
ФайлТолько в режиме «Файл». Звуковой файл в формате PCM 16bit 8kHz Mono или путь к нему.
Символы прерыванияТолько в режиме «Запись».
Буфер для DTMFТолько в режиме «Запись». Переменная для введённых символов, исключая символы прерывания.
Очистить буферТолько в режиме «Запись». Дописывать или очищать перед записью.
Максимальное время записиТолько в режиме «Запись». Время ожидания в секундах.
Сигнал окончания записиТолько в режиме «Запись». Звуковой файл, который прозвучит по окончании записи. См. примечание ниже.
ТемаТематика речи — см. таблицу ниже.
Пользовательская темаСтрока с индивидуальной темой, поддерживаемой сервисом.
Предопределённые значенияТаблица заранее заданных вариантов с группировкой. Упрощает последующее разветвление сценария.
Текст в переменнуюРезультат распознавания.
Код группировки в переменнуюКод, выявленный при сравнении результата со списком предопределённых значений.
Вероятность совпадения в переменнуюЗначение от 0 до 1.
Переход / Переход, ошибкаУспешное распознавание либо неудача.
Зачем сигнал окончания записи Абонент договорил и ждёт. Короткий звуковой сигнал отделяет момент, когда система перестала слушать, от паузы на распознавание, — иначе человек начинает повторять сказанное, думая, что его не услышали.

Темы распознавания

ТемаДля чегоКачество
queries Поисковые запросы и короткие фразы в 3—5 слов на разные темы: «а где ближайший банкомат», «мне нужно заблокировать карту», «соедините меня с оператором», «хочу отменить заказ такси». Рекомендуемая тема для голосового управления IVR-сценариями. 85 %
maps Адреса, названия географических объектов и организаций: «такси на улицу Кирпичные Выемки 5», «мой адрес доставки — Льва Толстого 16». 95 %
notes Свободная диктовка коротких текстов: SMS, заметки, комментарии. 82 %
music Запросы на музыкальную тематику: названия песен и групп, имена исполнителей. —

Как разветвлять сценарий по распознанному

Таблица предопределённых значений с группировкой закрывает простые случаи: несколько ожидаемых ответов, каждому присвоен код, сценарий ветвится по коду.

Для масштабных сценариев маршрутизации Там сравнивать варианты распознавания придётся с базой данных, и группировку логичнее делать тоже в базе. Побочная выгода: неизвестные новые варианты можно копить в отдельном списке, а потом проставлять им коды — так словарь ответов пополняется сам, по реальным обращениям.