Как запрограммировать голосовой агент IBM с помощью Watson
Демистификация процесса создания виртуального голосового агента
Введение
Вызов осуществляется через традиционное телефонное соединение, и на звонок отвечает голос… единственная разница в том, что… вы разговариваете не с человеком, а с роботом.
Ниже представлена схема служб, организованных для создания голосового агента. Следует отметить, что более поздняя документация относится к IBM Voice Agent with Watson. Но более ранняя документация относится к IBM Voice Gateway.
Команды и переменные сеанса, которые мы установим, по-прежнему будут соответствовать соглашению об именах голосового шлюза.
В этом видео показан процесс настройки эластичной магистрали SIP с помощью twilio. Настройка голосового агента в качестве шлюза SIP и настройка оркестрации облачных сервисов.
Изменить текст на речь Voice In-Call
Голос бота можно менять на лету. Вы можете написать подпрограмму, в которой пользователь говорит «Я хочу поговорить с Майком», и Майк может ответить и принять вызов оттуда.
{ "output": { "text": { "values": [ "Hi this is Mike! How can I help?" ], "selection_policy": "sequential" } }, "context": { "vgwTTSConfigSettings": { "config": { "voice": "en-US_MichaelVoice" } } } }
Это та часть JSON, которую вам нужно встроить в один из диалоговых узлов Watson Assistant.
То же самое можно сделать для любого другого голоса…
Если пользователь говорит Я хочу поговорить с Кейт, вызывается узел диалога со следующим JSON:
{ "output": { "text": { "values": [ "This is Kate, and I am the Great Britain voice, How can I help? " ], "selection_policy": "sequential" } }, "context": { "vgwTTSConfigSettings": { "config": { "voice": "en-GB_KateVoice" } } } }
Услуга TTS обновляется на лету, в рамках одного звонка, и звонок как бы передается другому человеку.
Изменить язык помощника во время вызова
Язык звонка также можно повторять на лету во время живого звонка. Пользователь может сказать: мы можем говорить по-итальянски или мы можем говорить по-французски. В этом случае голосовой бот может полностью переключиться на другой язык.
Если пользователь говорит: Я хочу говорить по-немецки… или используется определение языка, чтобы понять, что пользователь говорит по-немецки, язык и голос TTS могут быть обновлены.
{ "output": { "text": { "values": [ "Willkommen bei dieser IBM Watson-Demonstration. Was möchtest du mich fragen?" ], "selection_policy": "sequential" } }, "context": { "vgwTTSConfigSettings": { "config": { "voice": "de-DE_BirgitVoice" } } } }
В части JSON вы можете увидеть язык, а локаль изменена на конкретный немецкий голос TTS.
Таким образом, любой доступный язык, локаль или голос могут быть вызваны, и все это происходит во время разговора.
Вот пример смены языка на итальянский.
{ "output": { "text": { "values": [ "Adesso posso interpretare l'italiano. Cosa vorresti provare dopo?" ], "selection_policy": "sequential" } }, "context": { "vgwTTSConfigSettings": { "config": { "voice": "it-IT_FrancescaVoice" } } } }
Ниже приведена конфигурация с Watson Assistant. Вы можете открыть редактор JSON или отредактировать узел через графический интерфейс пользователя.
Обработка тайм-аутов ответа голосового агента
Обнаружение и обработка тайм-аута ответа довольно стандартны; перехват этого события позволяет разумно обрабатывать вызов.
Тишины во время голосового вызова следует избегать любой ценой.
Что мне нравится в шлюзе голосового агента, так это то, что vgwPostResponseTimeout можно установить непосредственно в качестве намерения в Watson Assistant.
Это иллюстрирует уровень интеграции между двумя элементами.
Голосовым шлюзом можно управлять из Watson Assistant по своему усмотрению.
Реакция помощника может быть определена в этот момент разговора.
Или же можно предпринять любое другое действие, например перевести звонок на представителя службы поддержки.
Завершение вызова со стороны агента
В IBM Voice Gateway есть несколько команд, которые позволяют очень эффективно программировать голосовой шлюз. Одним из них является vgwActHangup. Данную команду можно использовать для завершения звонка со стороны программы.
{ "output": { "vgwAction": { "command": "vgwActHangup" }, "generic": [ { "response_type": "text", "values": [], "selection_policy": "sequential" } ] } }
Код JSON можно добавить в диалоговый узел в Watson Assistant, как показано здесь.
Типичным подходом было бы иметь намерение, которое перехватывает все, что связано с зависанием или завершением вызова. Лучше всего иметь узел подтверждения; вы хотите завершить вызов, да или нет.
При подтверждении от пользователя можно активировать завершение вызова и завершить вызов.
Вывод
Диалоговые интерфейсы становятся все более распространенными и распространяются на различные среды. В этом случае разговорный ИИ распространяется на традиционную среду, такую как голосовой вызов.
Звонящие больше не привязаны к меню DTMF или клавиатуре и могут говорить свободно. Очевидно, будут проблемы, которые будут препятствовать воспринимаемому качеству обслуживания.
Фоновый шум, качество голоса во время звонка и первоначальный просмотр пользователя всегда будут влиять на работу пользователя.
Подробнее здесь…
https://www.ibm.com/support/knowledgecenter/SS4U29/welcome_voicegateway.html