Руководство. Реализация поддержки голосового ввода для бота
Вы можете использовать речь ИИ Azure для голосового включения бота чата.
В этом руководстве вы используете Microsoft Bot Framework для создания бота, который отвечает на то, что вы говорите. Вы развертываете бота в Azure и регистрируете его в канале "Речь Direct Line" Bot Framework. Затем вы настроите пример клиентского приложения для Windows, которое позволяет говорить с ботом и слышать его обратно.
Для работы с этим руководством вам не потребуется обширный опыт или знакомство с Azure, ботами Bot Framework и Direct Line Speech.
Чат-бот с поддержкой голосового ввода, который используется в данном учебнике, работает следующим образом.
- Пример клиентского приложения настроен для подключения к каналу Direct Line Speech и эхо-боту.
- Когда пользователь нажимает кнопку, из микрофона начинает приниматься звуковой поток. Либо звук начинает записываться при использовании пользовательского ключевого слова.
- Если используется пользовательское ключевое слово, на локальном устройстве выполняется обнаружение ключевых слов, а звуковой поток отправляется через шлюз в облако.
- Пример клиентского приложения использует пакет SDK службы "Речь" для подключения к каналу "Речь Direct Line" и потоковой передачи звука.
- При необходимости в службе происходит проверка ключевых слов с более высокой точностью.
- Звук передается в службу распознавания речи и расшифровывается в текст.
- Распознанный текст передается в эхо-бот через посредством платформы Bot Framework.
- Текст ответа преобразуется в звук в службу речи и передается обратно в клиентское приложение для воспроизведения.
Примечание.
Для выполнения действий, описанных в этом руководстве, не требуется платная служба. Как новый пользователь Azure вы можете использовать кредиты бесплатной пробной подписки Azure и бесплатный уровень службы "Речь" для выполнения этого руководства.
Темы, рассматриваемые в этом руководстве:
- Создание ресурсов Azure.
- Создание, тестирование и развертывание примера эхо-бота в Службе приложений Azure.
- Регистрация бота в канале Direct Line Speech.
- Создание и запуск клиента голосового помощника Windows для взаимодействия с эхо-ботом.
- Добавление активации по пользовательскому ключевому слову.
- Вы узнаете, как изменить язык распознаваемой и произносимой речи.
Необходимые компоненты
Вот что вам нужно выполнить в этом руководстве:
- Компьютер с Windows 10 с рабочим микрофоном и динамиками (или наушниками).
- Visual Studio 2017 или более поздней версии с установленной рабочей нагрузкой ASP.NET и веб-разработка.
- .NET Framework Runtime 4.6.1 или более поздней версии.
- Учетная запись Azure. Зарегистрируйтесь для использования бесплатной версии.
- Учетная запись GitHub.
- Git для Windows.
Создание или изменение группы ресурсов
Клиентское приложение, создаваемое в этом руководстве, использует несколько служб Azure. Чтобы сократить время кругового пути для ответов бота, необходимо убедиться, что эти службы находятся в одном регионе Azure.
В этом разделе описывается создание группы ресурсов в регионе "западная часть США". Эта группа ресурсов используется при создании отдельных ресурсов для Bot Framework, канала прямой речи и службы "Речь".
- Перейдите на страницу портала Azure для создания группы ресурсов.
- Укажите следующие сведения:
- Установите для подписки значение Бесплатная пробная версия. (Вы также можете использовать существующую подписку.)
- И введите имя группы ресурсов. Рекомендуется SpeechEchoBotTutorial-ResourceGroup.
- В раскрывающемся меню Регион выберите Западная часть США.
- Выберите Просмотр и создание. Появится баннер с надписью Проверка пройдена.
- Нажмите кнопку создания. Создание группы ресурсов займет несколько минут.
- Как и в случае с ресурсами, которые вы создали позже в этом руководстве, рекомендуется закрепить эту группу ресурсов на панели мониторинга для простого доступа. Если вы хотите закрепить эту группу ресурсов, щелкните значок закрепления рядом с именем.
Выбор региона Azure
Убедитесь, что вы используете поддерживаемый регион Azure. Канал "Прямая речь" использует текст для службы "Речь", которая имеет нейронные и стандартные голоса. Нейронные голоса используются в этих регионах Azure, а стандартные голоса (снимаемые с поддержки) используются в этих регионах Azure.
Дополнительные сведения о регионах Azure см. здесь.
Создание ресурсов
Теперь, когда у вас есть группа ресурсов в поддерживаемом регионе, необходимо создать отдельные ресурсы для каждой службы, которая будет использоваться в этом руководстве.
Создание ресурса службы "Речь"
- Перейдите на страницу портала Azure для создания ресурса службы "Речь".
- Укажите следующие сведения:
- В качестве имени ресурса рекомендуем использовать SpeechEchoBotTutorial-Speech.
- Убедитесь, что в качестве подпискивыбрана Бесплатная пробная версия.
- В разделе Расположение выберите Западная часть США.
- Выберите категорию F0 в поле Ценовая категория. Эта категория является бесплатной.
- В качестве группы ресурсоввыберите SpeechEchoBotTutorial-ResourceGroup.
- После ввода всех необходимых сведений нажмите кнопку "Создать". Создание ресурса займет несколько минут.
- Далее в этом руководстве вам потребуются ключи подписки для этой службы. Доступ к этим ключам можно получить в любое время в области Обзор (под разделом Управление ключами) или в области Ключи.
На этом этапе убедитесь, что в группе ресурсов (SpeechEchoBotTutorial-ResourceGroup) присутствует ресурс службы "Речь":
Имя. | Тип | Расположение |
---|---|---|
SpeechEchoBotTutorial-Speech | Речь | западная часть США |
Создание плана службы приложений Azure
План службы приложений определяет набор вычислительных ресурсов, на которых выполняется веб-приложение.
- Перейдите на страницу портал Azure, чтобы создать план Службы приложений Azure.
- Укажите следующие сведения:
- Установите для подписки значение Бесплатная пробная версия. (Вы также можете использовать существующую подписку.)
- В качестве группы ресурсоввыберите SpeechEchoBotTutorial-ResourceGroup.
- В качестве имени плана рекомендуем использовать SpeechEchoBotTutorial-AppServicePlan.
- Операционная система: выберите Windows.
- В поле Регион выберите Западная часть США.
- Убедитесь, что для ценовой категории выбрано значение Стандартный S1. Этот параметр указан по умолчанию. Если это не так, задайте для параметра Операционная система значение Windows.
- Выберите Просмотр и создание. Появится баннер с надписью Проверка пройдена.
- Нажмите кнопку создания. Создание ресурса займет несколько минут.
На этом этапе убедитесь, что в группе ресурсов (SpeechEchoBotTutorial-ResourceGroup) присутствуют два ресурса:
Имя. | Тип | Расположение |
---|---|---|
SpeechEchoBotTutorial-AppServicePlan | План службы приложений | западная часть США |
SpeechEchoBotTutorial-Speech | Службы ИИ Azure | западная часть США |
Создание эхо-бота
Теперь, когда вы создали ресурсы, начните с примера эхо-бота, который отражает текст, введенный в качестве ответа. Пример кода уже настроен для работы с каналом "Речь Direct Line", который подключается после развертывания бота в Azure.
Примечание.
Приведенные ниже инструкции, а также дополнительные сведения об эхо-боте доступны в файле README этого примера на сайте GitHub.
Запуск экземпляра бота на компьютере
Клонирование репозитория примеров.
git clone https://github.com/Microsoft/botbuilder-samples.git
Откройте Visual Studio.
На панели инструментов выберите Файл>Открыть>Проект или решение. Затем откройте решение проекта:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
После загрузки проекта нажмите клавишу F5, чтобы собрать и запустить проект.
В открываемом браузере отображается экран, аналогичный следующему:
Тестирование образца бота с помощью эмулятора Bot Framework
Эмулятор Bot Framework Emulator — это классическое приложение, которое позволяет разработчикам тестировать и отлаживать ботов локально или удаленно, через туннель. В качестве входных данных эмулятор принимает текст (не голос). Бот также отвечает с текстом.
Выполните следующие действия, чтобы использовать эмулятор Bot Framework для проверки функционирования эхо-бота, запущенного на локальном компьютере с текстовым вводом и выводом. После развертывания бота в Azure вы протестируете его с голосовым вводом и голосовым выводом.
Установите Bot Framework Emulator версии 4.3.0 или более поздней.
Откройте Bot Framework Emulator, а затем выберите в меню Файл>Открыть бота.
Введите URL-адрес для своего бота. Например:
http://localhost:3978/api/messages
Нажмите Подключиться.
Бот должен поприветствовать вас словами "Hello and welcome!" Введите любое текстовое сообщение и убедитесь, что бот отправляет ответ.
Это то, что обмен данными с эхо-ботом может выглядеть следующим образом:
Развертывание бота в Службе приложений Azure
Далее следует развернуть эхо-бота в Azure. Существует несколько способов развертывания бота, включая Azure CLI и шаблоны развертывания. В этом руководстве рассматривается публикация непосредственно из Visual Studio.
Примечание.
Если опция Опубликовать не отображается при выполнении следующих действий, используйте Visual Studio Installer, чтобы добавить рабочую нагрузку ASP.NET и веб-разработка.
В Visual Studio откройте эхо-бота, настроенного для использования с каналом Direct Line Speech.
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
В Обозревателе решений щелкните правой кнопкой мыши проект EchoBot и выберите пункт Опубликовать.
В открывшемся окне Публикация выполните следующие действия.
- Выберите Azure>Далее.
- Выберите Служба приложений Azure (Windows)>Далее.
- Выберите Создать новую Службу приложений Azure рядом с зеленым значком плюса.
Когда появится окно службы приложений (Windows):
Нажмите Добавить учетную запись и выполните вход с использованием учетных данных учетной записи Azure. Если вы уже вошли, выберите свою учетную запись из раскрывающегося списка.
Введите глобально уникальное имя для своего бота. Это имя используется для создания уникального URL-адреса бота.
В поле отображается имя по умолчанию, включающее дату и время (например, EchoBot20190805125647). Для выполнения инструкций из этого руководства вы можете использовать имя по умолчанию.
В качестве подписки выберите Бесплатная пробная версия.
В качестве группы ресурсоввыберите SpeechEchoBotTutorial-ResourceGroup.
В качестве плана размещения выберите SpeechEchoBotTutorial-AppServicePlan.
Нажмите кнопку создания. На последнем экране мастера настройки нажмите Готово.
Выберите Опубликовать. Visual Studio приступит к развертыванию бота в Azure.
В окне вывода Visual Studio должно отобразиться сообщение об успешном выполнении, которое выглядит следующим образом:
Publish Succeeded. Web App was published successfully https://EchoBot20190805125647.azurewebsites.net/
Браузер по умолчанию должен открыть и отобразить страницу, на которой будет написано: "Your bot is ready!" (Ваш бот готов!).
На этом этапе проверьте наличие группы ресурсов SpeechEchoBotTutorial-ResourceGroup на портале Azure. Убедитесь, что она содержит следующие три ресурса.
Имя. | Тип | Расположение |
---|---|---|
EchoBot20190805125647 | Служба приложений | западная часть США |
SpeechEchoBotTutorial-AppServicePlan | План службы приложений | западная часть США |
SpeechEchoBotTutorial-Speech | Службы ИИ Azure | западная часть США |
Включение протокола WebSocket
Необходимо внести небольшое изменение в конфигурацию, чтобы бот мог обмениваться данными с каналом Direct Line Speech с помощью веб-сокетов. Чтобы включить веб-сокеты, выполните следующие действия.
- Перейдите на портал Azure и выберите нужный ресурс Службы приложений. Имя ресурса должно быть похоже на EchoBot20190805125647 (уникальное имя вашего приложения).
- В области слева в разделе Параметры выберите Конфигурация.
- Выберите вкладку Общие параметры.
- Найдите переключатель для веб-сокетов и установите его в положение Вкл.
- Выберите Сохранить.
Совет
Вы можете использовать элементы управления в верхней части страницы службы приложений Azure, чтобы прерывать или перезапускать службу. Эта возможность может быть полезна при устранении неполадок.
Создание регистрации канала
После создания ресурса службы приложение Azure для размещения бота следующим шагом является создание регистрации канала. Создание регистрации канала — необходимое условие для регистрации бота в каналах Bot Framework, включая Direct Line Speech. Дополнительные сведения об использовании каналов ботами см. в статье Подключение бота к каналам.
- Перейдите на страницу портал Azure, чтобы создать бота Azure.
- Укажите следующие сведения:
В качестве дескриптора ботавведите SpeechEchoBotTutorial-BotRegistration-####. Замените #### множеством вариантов.
Примечание.
Дескриптор бота должен быть глобально уникальным. Если при вводе дескриптора выводится сообщение об ошибке "The requested bot ID is not available" ("Запрошенный идентификатор бота недоступен"), то выберите другое число. В следующих примерах используется 8726.
В качестве подписки выберите Бесплатная пробная версия.
В качестве группы ресурсоввыберите SpeechEchoBotTutorial-ResourceGroup.
В разделе Расположение выберите Западная часть США.
Выберите категорию F0 в поле Ценовая категория.
Проигнорируйте пункт Auto create App ID и password (Автоматическое создание идентификатора и пароля приложения).
- В нижней части панели Azure Bot выберите Создать.
- После создания ресурса откройте ресурс SpeechEchoBotTutorial-BotRegistration-#### на портале Azure.
- В области Параметры выберите Конфигурация.
- В поле Конечная точка обмена сообщениями введите URL-адрес для веб-приложения с добавлением пути /api/messages в конце. Например, если глобально уникальное имя приложения было EchoBot20190805125647, конечная точка обмена сообщениями будет выглядеть так:
https://EchoBot20190805125647.azurewebsites.net/api/messages/
.
На этом этапе проверьте наличие группы ресурсов SpeechEchoBotTutorial-ResourceGroup на портале Azure. Теперь там должны отображаться по крайней мере четыре ресурса:
Имя. | Тип | Расположение |
---|---|---|
EchoBot20190805125647 | Служба приложений | западная часть США |
SpeechEchoBotTutorial-AppServicePlan | План службы приложений | западная часть США |
SpeechEchoBotTutorial-BotRegistration-8726 | Служба Bot | Глобальный |
SpeechEchoBotTutorial-Speech | Службы ИИ Azure | западная часть США |
Внимание
Ресурс Azure AI Служба Bot показывает глобальный регион, даже если выбрана западная часть США. Это ожидаемо.
Необязательно: тестирование в веб-чате
На странице Azure Bot есть параметр Проверить в Веб-чате в разделе Настройки. Он не работает по умолчанию с ботом, так как веб-чат должен пройти проверку подлинности в боте.
Если вы хотите протестировать развернутого бота с помощью текстового ввода, выполните следующие действия. Эти действия являются необязательными и не требуются для продолжения работы с руководством.
На портале Azure найдите и откройте ресурс EchoBotTutorial-BotRegistration-####.
В области Параметры выберите Конфигурация. Скопируйте значение поля Идентификатор приложения Майкрософт.
Откройте решение в Visual Studio. В Обозреватель решений найдите и дважды выберите appsettings.json.
Замените пустую строку рядом с MicrosoftAppId в файле JSON значением скопированного идентификатора.
Вернитесь на портал Azure. В области Параметры выберите Конфигурация. Затем выберите Управление рядом с идентификатором приложения Майкрософт.
Щелкните Создать секрет клиента. Добавьте описание (например, веб-чат) и нажмите кнопку Добавить. Скопируйте новый секретный ключ.
Замените пустую строку рядом с MicrosoftAppPassword в файле JSON значением скопированного секретного ключа.
Сохраните файл JSON. Он должен выглядеть примерно так:
{ "MicrosoftAppId": "YourAppId", "MicrosoftAppPassword": "YourAppPassword" }
Повторно опубликуйте приложение: щелкните правой кнопкой мыши проект EchoBot в Обозревателе решений Visual Studio, выберите Опубликовать и нажмите кнопку Опубликовать.
Регистрация канала Direct Line Speech
Теперь пришло время зарегистрировать программу-робота с помощью канала Direct Line Speech. Этот канал создает подключение между роботом и клиентским приложением, скомпилированным с помощью речевого пакета SDK.
На портале Azure найдите и откройте ресурс SpeechEchoBotTutorial-BotRegistration-####.
В области Параметры выберите Каналы, а затем выполните следующие действия.
- В разделе Дополнительные каналы выберите пункт Direct Line Speech.
- Просмотрите текст на странице Настройка Direct Line Speech, а затем раскройте выпадающее меню Учетная запись Cognitive Service.
- Выберите созданный ранее ресурс службы "Речь" (например, SpeechEchoBotTutorial-Speech) в меню, чтобы связать бота с ключом подписки.
- Проигнорируйте остальные необязательные поля.
- Выберите Сохранить.
В области Параметры выберите Конфигурация, а затем выполните следующие действия.
- Установите флажок Включить конечную точку потоковой передачи. Этот шаг необходим для создания протокола связи, построенного на основе веб-сокетов, между ботом и каналом Direct Line Speech.
- Выберите Сохранить.
Дополнительные сведения см. в статье Подключение бота к Direct Line Speech.
Запуск клиента Windows Voice Assistant
Клиент голосового помощника Windows — это приложение Windows Presentation Foundation (WPF) на C#, которое использует пакет SDK службы "Речь" для управления связью с ботом с помощью канала Direct Line Speech. Используйте его для взаимодействия с ботом и его тестирования перед написанием пользовательского клиентского приложения. Это приложение с открытым исходным кодом, поэтому можно загрузить и запустить исполняемый файл или собрать его самостоятельно.
Клиент помощника Windows Voice имеет простой пользовательский интерфейс, позволяющий настроить подключение к роботу, просмотреть текстовую версию разговора, просмотреть действия Bot Framework в формате JSON и отобразить адаптивные карточки. Он также поддерживает использование пользовательских ключевых слов. Этот клиент используется для беседы с ботом и получения голосового ответа.
Примечание.
На этом этапе убедитесь, что микрофон и динамики включены и работают.
Перейдите в репозиторий GitHub для поиска клиента голосового помощника Windows.
Следуйте инструкциям, приведенным в этой статье, чтобы выполнить одно из двух следующих действий:
- скачать предварительно собранный исполняемый файл в ZIP-архиве для запуска;
- собрать исполняемый файл самостоятельно путем клонирования репозитория и сборки проекта.
Откройте клиентское приложение VoiceAssistantClient.exe и настройте его для подключения к боту, следуя инструкциям в репозитории GitHub.
Нажмите кнопку Повторное подключение и убедитесь, что отображается сообщение "Новый диалог начат — введите текст или нажмите кнопку с микрофоном".
Давайте протестируем. Нажмите кнопку с изображением микрофона и скажите несколько слов на английском языке. Распознанный текст будет отображаться при диктовке. Когда вы закончите говорить, бот ответит своим собственным голосом, говоря слово "echo", за которым следуют распознанные слова.
Можно также использовать текст для взаимодействия с ботом. Просто введите текст на нижней панели.
Устранение неполадок в клиенте голосового помощника Windows
Если в окне главного приложения появляется сообщение об ошибке, используйте следующую таблицу для обнаружения и устранения проблемы.
Сообщение | Что вы должны сделать? |
---|---|
Ошибка: обновление WebSocket завершилось ошибкой проверки подлинности (401). Проверка правильного ключа ресурса (или маркера авторизации) и имени региона | На странице параметров приложения убедитесь, что вы правильно ввели ключ и его регион. |
Ошибка (ConnectionFailure): соединение было закрыто удаленным узлом. Код ошибки 1011. Сведения об ошибке: не удалось подключиться к боту перед отправкой сообщения | Убедитесь, что установлен флажок Включить конечную точку потоковой передачи и (или) включены веб-сокеты. Убедитесь, что Служба приложений Azure запущена. Если запущена, попробуйте перезапустить ее. |
Ошибка (ConnectionFailure): соединение было закрыто удаленным узлом. Код ошибки 1002. Сведения об ошибке: сервер вернул код состояния "503", когда ожидался код состояния "101" | Убедитесь, что установлен флажок Включить конечную точку потоковой передачи и (или) включены веб-сокеты. Убедитесь, что Служба приложений Azure запущена. Если запущена, попробуйте перезапустить ее. |
Ошибка (ConnectionFailure): соединение было закрыто удаленным узлом. Код ошибки 1011. Сведения об ошибке: код состояния ответа не указывает на успех: 500 (InternalServerError) | Бот указал нейронный голос в поле вывода, но регион Azure, связанный с ключом ресурса, не поддерживает нейронные голоса. См. сведения о нейронных голосах и стандартных голосах. |
Если действия, представленные в таблице, не помогли устранить проблему, см. раздел Голосовые помощники: часто задаваемые вопросы. Если вы по-прежнему не можете устранить проблему после выполнения всех действий, описанных в этом руководстве, введите новую проблему на странице Голосового помощника GitHub.
Примечание об истечении времени ожидания подключения
Если вы подключены к боту и за последние 5 минут не происходило никаких действий, служба автоматически закроет соединение веб-сокет с клиентом и ботом. Это сделано намеренно. На нижней панели появится сообщение: "Время активного подключения истекло, но повторное подключение доступно по запросу".
Не нужно нажимать кнопку Повторное подключение. Нажмите кнопку со значком микрофона и начните говорить, введите текстовое сообщение или произнесите ключевое слово (если оно включено). Соединение будет автоматически восстановлено.
Просмотр действий программы-робота
Каждый бот отправляет и получает сообщения о действиях. В окне Журнал действий клиента голосового помощника Windows отображаются журналы с метками времени каждого действия, полученного клиентом от бота. Вы также можете просмотреть действия, отправленные клиентом боту, с помощью метода DialogServiceConnector.SendActivityAsync. При выборе элемента журнала отображаются сведения о связанном действии в формате JSON.
Ниже приведен пример действия, полученного клиентом, в формате JSON.
{
"attachments":[],
"channelData":{
"conversationalAiData":{
"requestInfo":{
"interactionId":"8d5cb416-73c3-476b-95fd-9358cbfaebfa",
"version":"0.2"
}
}
},
"channelId":"directlinespeech",
"conversation":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79",
"isGroup":false
},
"entities":[],
"from":{
"id":"SpeechEchoBotTutorial-BotRegistration-8726"
},
"id":"89841b4d-46ce-42de-9960-4fe4070c70cc",
"inputHint":"acceptingInput",
"recipient":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79|0000"
},
"replyToId":"67c823b4-4c7a-4828-9d6e-0b84fd052869",
"serviceUrl":"urn:botframework:websocket:directlinespeech",
"speak":"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Echo: Hello and welcome.</voice></speak>",
"text":"Echo: Hello and welcome.",
"timestamp":"2019-07-19T20:03:51.1939097Z",
"type":"message"
}
Дополнительные сведения о сведениях, возвращаемых в выходных данных JSON, см. в разделе Поля действия. В этом руководстве вы можете сосредоточиться на текстовых и говорящих полях.
Просмотр исходного кода клиента для поиска вызовов пакета SDK для распознавания речи
Клиент помощника по Windows Voice использует пакет NuGet Microsoft.CognitiveServices.Speech, который содержит речевой пакет SDK. Хорошей отправной точкой для рассмотрения примера кода является метод InitSpeechConnector()
в файле VoiceAssistantClient\MainWindow.xaml.cs, который создает эти два объекта SDK службы "Речь".
- DialogServiceConfig: для параметров конфигурации, таких как ключ ресурса и его регион.
- DialogServiceConnector: для управления подключением канала и событиями клиентской подписки для обработки распознанных речевых сообщений и ответов бота.
Активация по пользовательскому ключевому слову
Пакет SDK для распознавания речи поддерживает активацию по пользовательскому ключевому слову. Как и в случае с "Привет, Кортана" для помощника Майкрософт, можно написать приложение, которое будет постоянно прослушивать ключевое слово, выбранное по вашему усмотрению. Помните, что ключевое слово может быть одиночным словом или словосочетанием из нескольких слов.
Примечание.
Термин ключевое слово часто используется как синоним термина пробуждающее слово. В документации Майкрософт могут встречаться оба варианта.
Обнаружение ключевых слов выполняется в клиентском приложении. Если используется ключевое слово, то при обнаружении ключевого слова звук будет передаваться только в канал Direct Line Speech. Канал "Прямая речь" включает компонент, называемый проверкой ключевых слов, который выполняет более сложную обработку в облаке, чтобы убедиться, что выбранное ключевое слово находится в начале звукового потока. Если проверка ключевого слова прошла успешно, канал начнет взаимодействие с ботом.
Выполните следующие действия, чтобы создать модель ключевых слов, настроить клиент голосового помощника Windows для использования этой модели и проверить ее в работе с ботом.
- Создание пользовательских ключевых слов с помощью службы "Речь".
- Распакуйте файл модели, скачанный на предыдущем этапе. Он должен называться согласно ключевому слову. Ищите файл с именем kws.table.
- В клиенте голосового помощника Windows найдите меню Параметры (значок шестеренки в правом верхнем углу). Выберите Путь к файлу модели и введите полный путь к файлу kws.table из шага 2.
- Установите флажок Включено. Вы увидите это сообщение рядом с флажком : "Будет прослушивать ключевое слово при следующем подключении". Если вы указали неправильный файл или недопустимый путь, появится сообщение об ошибке.
- Введите значения для ключа подписки и региона ключа подписки, а затем нажмите кнопку ОК, чтобы закрыть меню Параметры.
- Нажмите кнопку Повторное подключение. Должно отобразиться сообщение: "Начат новый диалог — начните печать, нажмите кнопку с изображением микрофона или произнесите ключевое слово". Теперь приложение находится в режиме постоянного прослушивания.
- Произнесите любую фразу, которая начинается с ключевого слова. Например: "{ваше ключевое слово}, который час?" Не нужно делать паузу после произнесения ключевого слова. Когда вы закончите, две вещи происходят:
- вы увидите транскрипцию того, что сказали;
- вы услышите ответ бота.
- Продолжайте экспериментировать с тремя типами входных данных, поддерживаемыми ботом:
- Ввод текста на нижней панели
- Нажатие клавиши со значком микрофона и речь
- Произнесение любой фразы, которая начинается с ключевого слова
Просмотр исходного кода, определяющего ключевое слово
В исходном коде клиента голосового помощника Windows используйте эти файлы для просмотра кода, добавляющего функцию обнаружения ключевых слов.
- VoiceAssistantClient\Models.cs включает вызов метода KeywordRecognitionModel.fromFile() SDK службы "Речь". Этот метод используется для создания экземпляра модели из локального файла на диске.
- VoiceAssistantClient\MainWindow.xaml.cs включает вызов метода DialogServiceConnector.StartKeywordRecognitionAsync() SDK службы "Речь". Этот метод активирует непрерывное обнаружение ключевых слов.
Дополнительно. Изменение языка и голоса бота
Созданный бот будет прослушивать и отвечать на них на английском языке с текстом на английском языке по умолчанию для голосовой речи. Однако вы не ограничены использованием английского языка или голоса по умолчанию.
В этом разделе описано, как изменить язык, который бот прослушивает и ответить. Вы также узнаете, как выбрать другой голос для этого языка.
Изменение языка
Вы можете выбрать любой из языков, упомянутых в речи в текстовой таблице. В следующем примере язык изменяется на немецкий.
Откройте клиентское приложение голосового помощника Windows, нажмите кнопку параметров (значок шестеренки в правом верхнем углу) и в поле Язык введите значение de-de. Это значение языкового стандарта, указанное в речи в текстовой таблице.
Это действие переопределяет значение по умолчанию en-us и задает распознаваемый язык. Также оно указывает каналу Direct Line Speech на использование немецкого голоса для ответа бота.
Закройте страницу Параметры и нажмите кнопку Повторное подключение, чтобы установить новое подключение к эхо-боту.
Нажмите кнопку микрофона и произнесите фразу на немецком языке. Появится распознанный текст, и эхо-бот ответит на немецком языке голосом по умолчанию.
Изменение голоса для по умолчанию для программы-робота
Вы можете выбрать текст для голоса и управления произношением, если бот задает ответ в виде языка разметки синтеза речи (SSML) вместо простого текста. Наш эхо-бот не использует SSML, но можно легко изменить код, чтобы изменить это.
В следующем примере SSML добавляется в ответ эхо-бота, чтобы немецкий голос (мужской голос de-DE-RalfNeural
) использовался вместо женского голоса по умолчанию. См. список стандартных голосов и список нейронных голосов, поддерживаемых для вашего языка.
Откройте файл samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs.
Найдите следующие строки:
var replyText = $"Echo: {turnContext.Activity.Text}"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
Замените их следующим кодом:
var replyText = $"Echo: {turnContext.Activity.Text}"; var replySpeak = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='de-DE'> <voice name='de-DE-RalfNeural'>" + $"{replyText}" + "</voice></speak>"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replySpeak), cancellationToken);
Создайте решение в Visual Studio и исправьте все ошибки сборки.
Второй аргумент в методе MessageFactory.Text
задает поле действия говорения в ответе бота. При предыдущем изменении он заменен простым текстом на SSML, чтобы указать нестандартную немецкую голосовую связь.
Заново разверните программу-робота
Теперь, когда вы внесли необходимые изменения в бот, следующий шаг — повторно опубликовать его для приложение Azure службы и попробовать выполнить следующие действия:
В Обозревателе решений щелкните правой кнопкой мыши проект EchoBot и выберите пункт Опубликовать.
Предыдущая конфигурация развертывания уже загружена по умолчанию. Нажмите Опубликовать рядом с EchoBot20190805125647 — веб-развертывание.
В окне вывода Visual Studio появится сообщение Публикация успешно завершена и откроется веб-страница с сообщением, что ваш бот готов.
Запуск клиента голосового помощника Windows Нажмите кнопку параметров (значок шестеренки в правом верхнем углу) и убедитесь, что поле Язык по-прежнему имеет значение de-de.
Следуйте инструкциям в разделе Запуск клиента голосового помощника Windows для повторного подключения к заново развернутому боту, скажите что-нибудь на новом языке и послушайте, как бот отвечает на этом языке новым голосом.
Очистка ресурсов
Если вы не собираетесь продолжать использовать эхо-бота, приведенного в этом руководстве, вы можете удалить его и все связанные с ним ресурсы Azure, удалив эту группу ресурсов Azure:
- На портале Azure выберите пункт Группы ресурсов в разделе Службы Azure.
- Найдите группу ресурсов SpeechEchoBotTutorial-ResourceGroup. Нажмите три точки (...).
- Выберите команду Удалить группу ресурсов.
Обзор документации
- Выполните развертывание в регионе Azure рядом с вами, чтобы сократить время ответа бота
- Развертывание в регионе Azure, поддерживающем высококачественный нейронный текст для голосовой речи.
- Получение цен, связанных с каналом "Речь Direct Line":
- Создайте и разверните собственный бот с поддержкой голосовой связи: