Эта статья написана для веб-разработчиков и представляет собой научно-популярную статью о «голосовом взаимодействии».Я надеюсь, что с помощью этой статьи разработчики смогут понять, что такое голосовое взаимодействие и его техническая реализация в YodaOS.
Как веб-разработчик, я считаю, что классические вопросы вроде «что происходит после того, как браузер вводит URL-адрес» часто задают во время собеседований, что может помочь инженерам понять весь стек веб-технологий. Поэтому эта статья начнется с предложения «Руоци, погода в Ханчжоу сегодня» и постарается дать всем полную картину технологии голосового взаимодействия.
Пункты знаний, задействованные в следующих главах, включают (вы можете сначала проверить их самостоятельно): Голосовая активация (VT) Распознавание речи (ASR) Семантическое понимание (НЛП) Синтез речи (TTS) Skill — приложение в эпоху голосового взаимодействия Ниже приведен процесс голосового взаимодействия:
Как видно из приведенного выше рисунка: Во-первых, пользователь (человек) получает данные аудиосигнала (PCM) через микрофон на смарт-устройстве, а через модуль «голосовой активации» он может правильно преобразовать данные с активированными словами в аудиоданные, которые может распознать облако ( например, опус).
Затем клиент VUI загрузит аудиоданные через WebSocket, а облако, наконец, преобразует голосовые данные в две части с помощью ряда алгоритмов:
ASR: обычный текст, представляющий то, что пользователь сказал в этих аудиоданных, например «погода Руоци сегодня».
НЛП: данные в формате JSON, НЛП также называется семантическим пониманием, которое обычно разбирает каждое предложение на две важные части информации:
Часть этого называется Intent, которая указывает цель пользователя, говорящего это предложение, например, «сегодняшняя погода», тогда мы можем получить намерение этого предложения — query_weather, что означает запрос погоды;
Другая часть — это конкретная информация (слоты), которая обычно является объектом в JSON. Например, «сегодняшняя погода» будет сегодня в slots.date, указывая, что это предложение спрашивает о погоде «сегодня». используется для обозначения погоды «где»;
ASR и NLP будут отправлены VUI Runtime для определенных навыков (навыков).Каждый навык будет обработан соответствующим образом путем анализа Intent и Slots и, наконец, сгенерирован в виде фрагмента текста, на который TTS ответит пользователю. Вышеупомянутое на самом деле является основным процессом голосового взаимодействия, которое будет представлено отдельно в соответствии с различными модулями.
Процесс голосовой активации
Прежде чем объяснять процесс, давайте посмотрим, зачем он нужен. Когда пользователь взаимодействует со смарт-устройством, поскольку средством передачи является голос (воздух), в отличие от традиционных устройств с графическим интерфейсом (ПК, планшет, мобильный телефон), они имеют отдельную медиа-платформу (например, экран, кнопки и т. д.), поэтому цель взаимодействия Это понятно. В жизни эфир является общим, а это значит, что прежде чем взаимодействовать, вы должны сначала решить, хочет ли пользователь поговорить с вами.Например, если вы говорите «включите для меня свет», это может быть просьба жене включите свет, а не если пользователь хочет поговорить с вами Ци.
Независимо от того, Alexa, Ruoqi, Xiaoai или Tmall Genie, вам сначала нужно дать устройству приятное имя, чтобы устройство могло знать, разговариваете ли вы с ним или нет.Это то, что делает модуль голосовой активации. .
Однако сделать такую простую вещь непросто.
Прежде всего, давайте разберемся, что такое PCM.Китайское название в Википедии называется: Импульсно-кодовая модуляция. Трудно понять, да? Если вы хотите прояснить всю концепцию, возможно, потребуется много знаний в области акустики и сигнализации, поэтому я не буду здесь ее расширять. Проще говоря, вы можете понять это как сказать, что вы говорите абзац (голос), который затем записывается микрофоном в виде двоичных данных.Эти необработанные данные называются PCM.
После понимания PCM давайте разберемся с двумя концепциями:
AEC, Самоустранение звука. В умных колонках обычно есть микрофоны и динамики.Когда микрофон улавливает звук, он также записывает звук, воспроизводимый текущим устройством через динамик.Поэтому AEC устраняет звук, воспроизводимый самим устройством. из данных PCM для уменьшения помех. VT, модуль алгоритма активации. Введите аудиоданные после AEC в алгоритм/модель VT, он даст оценку активации и, наконец, решит, следует ли активировать или нет с помощью оценки.
Внутри модуля активации, после того, как голосовые данные будут получены с микрофона, они будут обработаны AEC для устранения звука динамика, а затем некоторые дополнительные шумы будут удалены другими алгоритмами шумоподавления, а затем окончательно обработанные аудиоданные. будет вводиться в VT.Если модель будет признана активированной, следующие (аудио)данные будут загружены в облачный ASR через VUI-клиент до тех пор, пока облако не решит, что пользователь закончил говорить, и не завершит взаимодействие.
Процесс доставки НЛП
Как упоминалось ранее, существует два типа данных, которые отправляются из облака: ASR и NLP.Однако нет упоминания о том, как облако генерирует эти данные.Здесь мы кратко объясним некоторые части NLP.
После того, как ASR преобразует аудиоданные в текст, они будут переданы в службу NLP (облако), так как же облако преобразует простой текст в нужный формат JSON? НЛП вводит понятие домена, например, «Руоци, сегодняшняя погода» будет разделен на поле погоды, «Я хочу включить свет» — это поле IoT, «Я хочу послушать песни» — это музыкальное поле. , и подобные поля тоже есть: истории, время, энциклопедия, навигация и чат и т.д.
Можно просто понять, что домен — это большой диапазон, который представляет собой тему, которую пользователь хочет передать устройству, а намерение — это задача, для выполнения которой требуется помощь устройства в рамках этой темы. Например, «сегодняшняя погода», тема — погода, а цель — запрос.
С концепцией «домен», когда мы получаем строку текста, мы будем использовать предварительно обученную модель и заранее определенные правила и утверждения, чтобы определить, к какому домену и намерению попадает текст, а затем извлекать соответствующую информацию из текста. Наконец, объедините всю информацию в полный JSON и отправьте ее на устройство. В соответствии с различием каждого поля попадания или навыка НЛП устройство отправляет его в соответствующий навык для обработки.
CloudApp
Вывод голосового взаимодействия относительно прост, в основном: TTS, звуковые эффекты и мультимедийная музыка, поэтому существует концепция VUI Rendering.
В эпоху графического интерфейса результатом рендеринга были интерактивные элементы управления, звук и видео на экране. А VUI — это TTS, звуковые эффекты и мультимедийная музыка, что довольно просто по сравнению с GUI. Поэтому, как и в Интернете, рендеринг VUI также делится на рендеринг на стороне сервера и локальный рендеринг:
Локальный рендеринг: локальные приложения напрямую обрабатывают данные NLP, локально выполняют бизнес-логику и, наконец, воспроизводят TTS, звуковые эффекты и мультимедийную музыку.
Рендеринг на стороне сервера: служба NLP сначала отправит данные на предварительно настроенный сервер, выполнит бизнес-логику на сервере и преобразует TTS, звуковые эффекты и мультимедийную музыку в инструкции (директиву) соответственно и вернет их в NLP. После получения конечного устройства вам необходимо только выполнить соответствующие операции согласно инструкции.
Вообще говоря, приложение, отображаемое на стороне сервера, называется CloudApp.Конечно, его преимуществами являются обновление в режиме реального времени, быстрая и простая разработка, аналогичная механизму работы в Интернете, но недостатком является то, что возможности ограничены, и расширение зависит от возможностей самого протокола (по аналогии с песочницей браузера).
Жизненный цикл навыков
Будь то локально или в облаке, у навыков есть жизненный цикл, как и у страниц, какими мы их знаем, и VUI Runtime управляет ими. В YodaOS каждый навык можно активировать двумя способами:
Пользователь выдает команду и запускает ее через голосовое НЛП.
Пользователь инициирует запуск, нажав кнопку на устройстве.
После активации каждого навыка он будет находиться наверху стека навыков, указывая на то, что текущий навык запущен, и в это время можно управлять выходным контентом (TTS, звуковые эффекты и мультимедиа) устройства. При этом, если навык уже запущен, предыдущий навык будет уничтожен или приостановлен, в зависимости от того, является ли он мгновенным (CUT) или сценарным (SCENE) навыком:
CUT: Навык, используемый для одного сеанса, поэтому, когда появляется новый навык, он без колебаний завершает (уничтожает) навык.
СЦЕНА: Для навыков, требующих взаимодействия в течение длительного времени, таких как воспроизведение музыки, игры или аудиорассказы. Если новым запрошенным навыком является CUT, предыдущий навык будет сначала приостановлен и возобновлен после окончания CUT; если новый запрошенный навык — SCENE, предыдущий навык будет заменен.
Суммировать
На самом деле, голосовое взаимодействие — это гораздо больше, чем процессы, упомянутые выше.Здесь я просто надеюсь представить некоторые идеи и поделиться нашим опытом в YodaOS для инженеров, которые заинтересованы в голосовом взаимодействии.Наконец, каждый может обратить внимание на наша среда выполнения VUI:GitHub.com/yo'd-pro то есть...