Как запрограммировать голосовой агент 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