Голосовая активация

Примечание

Этот раздел относится в основном к нашим пользовательским интерфейсам, которые в настоящее время предоставляются в Windows 10 (версия 1909 и более ранние версии). Дополнительные сведения см. в статье Прекращение поддержки Кортаны в Windows и Teams.

Кортана, личная технология помощник была впервые продемонстрирована на конференции разработчиков Microsoft BUILD в 2013 году. Платформа распознавания речи Windows используется для работы всех речевых функций в Windows 10, таких как Кортана и диктовка. Голосовая активация — это функция, которая позволяет пользователям вызывать механизм распознавания речи из различных состояний питания устройства, произнося определенную фразу "Привет, Кортана". Чтобы создать оборудование, поддерживающее технологию голосовой активации, ознакомьтесь со сведениями в этом разделе.

Примечание

Реализация голосовой активации является важным проектом и является задачей, которую выполняют поставщики SoC. Изготовители оборудования могут связаться со своим поставщиком SoC для получения информации о реализации голосовой активации SoC.

Взаимодействие с пользователем Кортаны

Чтобы понять возможности голосового взаимодействия, доступные в Windows, ознакомьтесь с этими разделами.

Раздел Описание
Что такое Кортана? Предоставляет обзор и направление использования Для Кортаны

Общие сведения о голосовой активации "Привет, Кортана" и "Изучение голоса"

Привет, Кортана" Голосовая активация

Функция голосовой активации (VA) "Привет, Кортана" позволяет пользователям быстро взаимодействовать с Кортаной вне активного контекста (т. е. того, что в настоящее время находится на экране) с помощью голоса. Пользователи часто хотят иметь возможность мгновенно получить доступ к интерфейсу без необходимости физически взаимодействовать с устройством. Для пользователей телефона это может быть связано с вождением в машине и с их вниманием и руками, участвующими в управлении транспортным средством. Для пользователя Xbox это может быть связано с тем, что он не хочет найти и подключить контроллер. Для пользователей пк это может быть связано с быстрым доступом к интерфейсу без необходимости выполнения нескольких действий мыши, касания или клавиатуры, например компьютера на кухне.

Голосовая активация обеспечивает постоянное прослушивание голосового ввода с помощью предопределенных ключевых фраз или фраз активации. Ключевые фразы могут произноситься самостоятельно ("Привет, Кортана") в качестве промежуточной команды или следовать речевым действием, например "Привет, Кортана, где моя следующая встреча?", цепной командой.

Термин "Обнаружение ключевых слов" описывает обнаружение ключевое слово с помощью оборудования или программного обеспечения.

Активация только ключевого слова происходит, когда говорится только ключевое слово Кортаны, Кортана запускается и воспроизводит звук EarCon, чтобы указать, что она перешла в режим прослушивания.

Цепная команда описывает возможность выполнения команды сразу после ключевое слово (например, "Привет, Кортана, позвоните Джону") и запустить Кортану (если она еще не запущена) и выполнить команду (начать телефонный звонок с Помощью Джона).

На этой схеме показана цепочка и ключевое слово только активация.

Схема, показывающая разницу между цепочками и активацией только ключевое слово с помощью буфера звука и последовательности времени.

Корпорация Майкрософт предоставляет споттер ос по умолчанию ключевое слово (программный ключевое слово точечный модуль), который используется для обеспечения качества обнаружения ключевое слово оборудования, а также для обеспечения взаимодействия с Кортаной в тех случаях, когда обнаружение ключевое слово оборудования отсутствует или недоступно.

Функция "Изучение голоса"

Функция "Изучение голоса" позволяет пользователю обучить Кортану распознавать свой уникальный голос. Для этого пользователь нажимает кнопку "Привет, Кортана" на экране параметров Кортаны. Затем пользователь повторяет шесть тщательно выбранных фраз, которые обеспечивают достаточное разнообразие фонетических шаблонов для определения уникальных атрибутов голоса пользователя.

Снимок экрана: параметры рабочего стола Кортаны для аппаратного ключевое слово функции обнаружения и пробуждения при голосовой связи.

Если голосовая активация связана с "Learn my voice", эти два алгоритма будут работать вместе, чтобы уменьшить количество ложных активаций. Это особенно важно для сценария конференц-зала, когда один человек говорит "Привет, Кортана" в комнате, полной устройств. Эта функция доступна только для Windows 10 версии 1903 и более ранних версий.

Голосовая активация осуществляется с помощью споттера ключевое слово (KWS), который реагирует при обнаружении ключевой фразы. Если функция KWS заключается в том, чтобы вывести устройство из состояния с низким энергопотреблением, решение называется Пробуждение по голосовой связи (WoV). Дополнительные сведения см. в разделе Пробуждение по голосовой связи.

Глоссарий терминов

В этом глоссарии перечислены термины, связанные с голосовой активацией.

Термин Пример и определение
Поэтапная команда Пример. Эй, Кортана пауза <, подождите ухо какая> погода? Иногда это называется "двухфакторной командой" или "только ключевым словом".
Команда в цепочке Пример. Привет, Кортана, какая погода? Это иногда называют "однократной командой"
Голосовая активация Сценарий предоставления ключевое слово обнаружения предопределенной ключевой фразы активации. Например, "Привет, Кортана" — это сценарий активации голосовой связи Майкрософт.
Wov Wake-on-Voice — технология, которая позволяет голосовой активации от выключения экрана, пониженного уровня питания, на экран с полным питанием.
WoV из современного режима ожидания Пробуждение при выходе из состояния современного режима ожидания (S0ix) на экран при полной мощности (S0).
современный ждущий режим. Инфраструктура простоя Windows с низким энергопотреблением — преемник подключенного режима ожидания (CS) в Windows 10. Первое состояние современного режима ожидания — это выключение экрана. Самым глубоким состоянием спящего режима является состояние в режиме DRIPS/Устойчивость. Дополнительные сведения см. в разделе Современный режим ожидания.
KWS Споттер по ключевым словам — алгоритм, обеспечивающий обнаружение "Привет, Кортана"
SW KWS Программный ключевое слово споттер — реализация KWS, которая выполняется на узле (ЦП). Для "Привет, Кортана", SW KWS входит в состав Windows.
HW KWS Аппаратно-разгруженный ключевое слово точечный модуль — реализация KWS, которая работает разгружается на оборудовании.
Буфер пиков Циклический буфер, используемый для хранения данных PCM, которые могут быть "разорвались" в случае обнаружения KWS, чтобы включить весь звук, который активировал обнаружение KWS.
Адаптер OEM детектора ключевых слов Оболочка уровня драйвера, которая позволяет HW с поддержкой WoV взаимодействовать с Windows и стеком Кортаны.
Моделирование Файл данных акустической модели, используемый алгоритмом KWS. Файл данных является статическим. Модели локализованы по одной на языковой стандарт.

Интеграция аппаратного споттера ключевых слов

Для реализации аппаратного ключевое слово точечного модуля (HW KWS) поставщики SoC должны выполнить следующие задачи.

Требования WoV для аппаратной разгрузки ключевое слово точечных устройств (HW KWS)

  • HW KWS WoV поддерживается в рабочем состоянии S0 и спящем состоянии S0, также известном как современный режим ожидания.
  • HW KWS WoV не поддерживается из S3.

Требования AEC для HW KWS

  • Для Windows версии 1709

    • Для поддержки HW KWS WoV для состояния спящего режима S0 (современный резервный) AEC не требуется.
    • HW KWS WoV для рабочего состояния S0 не поддерживается в Windows версии 1709.
  • Для Windows версии 1803

    • Поддерживается HW KWS WoV для рабочего состояния S0.
    • Чтобы включить HW KWS WoV для рабочего состояния S0, APO должен поддерживать AEC.

Обзор примера кода

Существует пример кода для аудиодрайва, который реализует голосовую активацию на GitHub в рамках примера виртуального аудиоадаптера SYSVAD. Рекомендуется использовать этот код в качестве отправной точки. Код доступен в этом расположении.

https://github.com/Microsoft/Windows-driver-samples/tree/main/audio/sysvad/

Дополнительные сведения о примере звукового драйвера SYSVAD см. в разделе Примеры аудиодрайверов.

Сведения о системе распознавания ключевых слов

Поддержка звукового стека голосовой активации

Внешние интерфейсы звукового стека для включения голосовой активации служат конвейером связи для платформы распознавания речи и звуковых драйверов. Внешние интерфейсы разделены на три части.

  • Интерфейс драйвера устройства (DDI) для детектора ключевых слов. Интерфейс драйвера устройства детектора ключевых слов отвечает за настройку и вооружение устройства HW Keyword Spotter (KWS). Он также используется драйвером для уведомления системы о событии обнаружения.
  • Библиотека DLL адаптера OEM Детектора ключевых слов. Эта библиотека DLL реализует COM-интерфейс для адаптации непрозрачных данных конкретного драйвера для использования ОПЕРАЦИОННОй системой, чтобы помочь при обнаружении ключевое слово.
  • Усовершенствования потоковой передачи WaveRT. Усовершенствования позволяют звуковому драйверу увеличить поток буферизированных звуковых данных из ключевое слово обнаружения.

Свойства конечной точки аудио

Построение графа конечной точки звука происходит в обычном режиме. Граф готов к обработке быстрее, чем в режиме реального времени. Метки времени в захваченных буферах остаются верными. В частности, метки времени будут правильно отражать данные, которые были записаны в прошлом и буферичены, а теперь являются "увеличивающимися".

Теория обхода аудиопотока Bluetooth

Драйвер предоставляет фильтр KS для своего устройства захвата, как обычно. Этот фильтр поддерживает несколько свойств KS и событие KS для настройки, включения и сигнализации события обнаружения. Фильтр также включает в себя дополнительную фабрику контактов, определяемую как ключевое слово точечный контакт (KWS). Этот контакт используется для потоковой передачи звука из споттера ключевое слово.

Это следующие свойства:

  • Поддерживаемые типы ключевое слово — KSPROPERTY_SOUNDDETECTOR_PATTERNS. Это свойство задается операционной системой для настройки обнаруженных ключевых слов.
  • Список идентификаторов GUID ключевое слово шаблонов — KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS. Это свойство используется для получения списка идентификаторов GUID, определяющих типы поддерживаемых шаблонов.
  • Вооружены - KSPROPERTY_SOUNDDETECTOR_ARMED. Это свойство чтения и записи представляет собой просто логическое состояние, указывающее, вооружен ли детектор. ОС задает этот параметр для привлечения детектора ключевое слово. ОС может очистить это, чтобы отключиться. Драйвер автоматически очищает его при установке ключевое слово шаблонов, а также после обнаружения ключевое слово. (Ос должна быть изменена.)
  • Результат сопоставления — KSPROPERTY_SOUNDDETECTOR_MATCHRESULT. Это свойство чтения содержит результирующих данных после обнаружения.

Событие, которое возникает при обнаружении ключевое слово, является событием KSEVENT_SOUNDDETECTOR_MATCHDETECTED.

Последовательность операций

Запуск системы

  1. ОС считывает поддерживаемые типы ключевое слово, чтобы убедиться, что у нее есть ключевые слова в этом формате.
  2. ОС регистрируется для события изменения состояния детектора.
  3. ОС задает шаблоны ключевое слово.
  4. ОС вооружит детектор.

При получении события KS

  1. Водитель разоружает детектор.
  2. ОС считывает состояние детектора ключевое слово, анализирует возвращенные данные и определяет, какой шаблон был обнаружен.
  3. Ос перенаворужит детектор.

Работа с внутренним драйвером и оборудованием

Пока детектор вооружен, оборудование может непрерывно захватывать и буферификировать звуковые данные в небольшой буфер FIFO. (Размер этого буфера FIFO определяется требованиями за пределами этого документа, но обычно может составлять от сотен миллисекунд до нескольких секунд.) Алгоритм обнаружения работает с потоковой передачей данных через этот буфер. Конструкция драйвера и оборудования такова, что в то время как они вооружены, нет взаимодействия между драйвером и оборудованием и не прерывает работу "приложений" процессоров до тех пор, пока не будет обнаружена ключевое слово. Это позволяет системе достичь состояния меньшего питания, если нет других действий.

Когда оборудование обнаруживает ключевое слово, оно создает прерывание. В ожидании, пока драйвер обслудит прерывание, оборудование продолжает записывать звук в буфер, гарантируя отсутствие данных после потери ключевое слово в пределах буферизации.

Метки времени ключевых слов

После обнаружения ключевое слово все решения голосовой активации должны буферировать все голосовые ключевое слово, включая 250 мс до начала ключевое слово. Аудиодрайвер должен предоставлять метки времени, определяющие начало и конец ключевой фразы в потоке.

Для поддержки ключевое слово меток времени начала и окончания программному обеспечению DSP может потребоваться внутренне настроить события метки времени на основе часов DSP. После обнаружения ключевое слово программное обеспечение DSP взаимодействует с драйвером для подготовки события KS. Драйверу и программному обеспечению DSP потребуется сопоставить метки времени DSP со значением счетчика производительности Windows. Этот способ зависит от проектирования оборудования. Одним из возможных решений является чтение текущего счетчика производительности, запрос текущей метки времени DSP, повторное чтение текущего счетчика производительности, а затем оценка корреляции между счетчиком производительности и временем DSP. Затем с учетом корреляции драйвер может сопоставить метки времени ключевое слово DSP с метками времени счетчика производительности Windows.

Интерфейс адаптера OEM детектора ключевых слов

Oem предоставляет реализацию COM-объекта, которая выступает в качестве посредника между ОС и драйвером, помогая вычислять или анализировать непрозрачные данные, которые записываются и считываются в звуковой драйвер через KSPROPERTY_SOUNDDETECTOR_PATTERNS и KSPROPERTY_SOUNDDETECTOR_MATCHRESULT.

CLSID COM-объекта — это GUID типа шаблона детектора, возвращаемый KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS. ОС вызывает CoCreateInstance, передав идентификатор GUID типа шаблона для создания экземпляра соответствующего COM-объекта, совместимого с типом шаблона ключевое слово, и вызывает методы в интерфейсе IKeywordDetectorOemAdapter объекта.

Требования к модели потоков COM

Реализация изготовителя оборудования может выбрать любую из моделей потоков COM.

IKeywordDetectorOemAdapter

Проект интерфейса пытается сохранить реализацию объекта без отслеживания состояния. Иными словами, реализация не должна требовать сохранения состояния между вызовами методов. На самом деле внутренним классам C++, скорее всего, не требуются переменные-члены, кроме переменных, необходимых для реализации COM-объекта в целом.

Методы

Реализуйте следующие методы.

KEYWORDID

Перечисление KEYWORDID определяет текст фразы или функцию ключевое слово, а также используется в адаптерах биометрических служб Windows. Дополнительные сведения см. в статье Общие сведения о биометрической платформе — основные компоненты платформы.

typedef enum  {
  KwInvalid              = 0,
  KwHeyCortana           = 1,
  KwSelect               = 2
} KEYWORDID;

KEYWORDSELECTOR

Структуру KEYWORDSELECTOR — это набор идентификаторов, которые однозначно выбирают конкретный ключевое слово и язык.

typedef struct
{
    KEYWORDID KeywordId;
    LANGID LangId;
} KEYWORDSELECTOR;

Обработка данных модели

Статическая независимая от пользователя модель . Библиотека DLL OEM обычно включает некоторые статические данные независимой от пользователя модели либо встроенные в библиотеку DLL, либо в отдельный файл данных, включенный в библиотеку DLL. Набор поддерживаемых идентификаторов ключевое слово, возвращаемых подпрограммой GetCapabilities, будет зависеть от этих данных. Например, если список поддерживаемых идентификаторов ключевое слово, возвращаемых GetCapabilities, включает KwHeyCortana, то статические данные модели, независимые от пользователя, будут включать данные для "Привет, Кортана" (или ее перевод) для всех поддерживаемых языков.

Динамическая модель, зависимая от пользователей . IStream предоставляет модель хранения произвольного доступа. ОС передает указатель интерфейса IStream на многие методы в интерфейсе IKeywordDetectorOemAdapter. ОС поддерживает реализацию IStream с соответствующим хранилищем до 1 МБ данных.

Содержимое и структура данных в этом хранилище определяется изготовителем оборудования. Назначение предназначено для постоянного хранения данных модели, зависимых от пользователя, вычисляемых или полученных библиотекой DLL OEM.

ОС может вызывать методы интерфейса с пустым IStream, особенно если пользователь никогда не обучал ключевое слово. ОС создает отдельное хранилище IStream для каждого пользователя. Иными словами, данный IStream хранит данные модели для одного и только одного пользователя.

Разработчик БИБЛИОТЕКИ OEM решает, как управлять данными, независимыми от пользователя и зависимыми от пользователя. Однако он никогда не должен хранить пользовательские данные за пределами IStream. Одна из возможных проектов БИБЛИОТЕК DLL oem будет внутренне переключаться между доступом к IStream и статическим пользовательским данным в зависимости от параметров текущего метода. Альтернативный макет может проверка IStream в начале каждого вызова метода и добавить статические пользовательские данные в IStream, если они еще отсутствуют, что позволит остальной части метода обращаться только к IStream для всех данных модели.

Обработка звука для обучения и операций

Как описано ранее, поток обучения пользовательского интерфейса приводит к тому, что в аудиопотоке будут доступны полные фонетически богатые предложения. Каждое предложение по отдельности передается в IKeywordDetectorOemAdapter::VerifyUserKeyword, чтобы убедиться, что оно содержит ожидаемые ключевое слово и имеет приемлемое качество. После сбора и проверки пользовательского интерфейса все предложения передаются в одном вызове IKeywordDetectorOemAdapter::ComputeAndAddUserModelData.

Звук обрабатывается уникальным способом для обучения голосовой активации. В следующей таблице перечислены различия между обучением активации голоса и обычным использованием распознавания речи.

|

Обучение голосовой связи Распознавание голоса
Режим Raw Необработанные данные или речь
Pin Норм. KWS
Формат звука 32-разрядный float (Тип = Аудио, Подтип = IEEE_FLOAT, Частота выборки = 16 кГц, биты = 32) Управляется звуковым стеком ОС
Микрофон Mic 0 Все микрофоны в массиве или mono

Общие сведения о системе распознавания ключевых слов

На этой схеме представлен обзор системы распознавания ключевое слово.

Схема системы распознавания ключевое слово, включая Кортану, среду выполнения речи и компоненты диспетчера голосовой активации.

Схемы последовательностей распознавания ключевых слов

На этих схемах модуль среды выполнения речи показан как "речевой платформы". Как упоминалось ранее, платформа распознавания речи Windows используется для работы всех речевых функций в Windows 10, таких как Кортана и диктовка.

Во время запуска возможности собираются с помощью IKeywordDetectorOemAdapter::GetCapabilities.

Схема последовательностей ключевое слово распознавания во время запуска, показывающая обучающий пользовательский интерфейс, речевой платформы и детектор ключевое слово oem.

Позже, когда пользователь выберет "Learn my voice", вызывается поток обучения.

Схема последовательности распознавания ключевое слово во время процесса

На этой схеме описывается процесс вооружения для обнаружения ключевое слово.

Схема последовательностей распознавания ключевое слово во время обнаружения ключевое слово, показывающая платформу распознавания речи, детектор oem ключевое слово и детектор аудиодрайва.

Улучшения WAVERT

Интерфейсы минипорта определяются для реализации драйверами минипорта WaveRT. Эти интерфейсы предоставляют методы для упрощения звукового драйвера, повышения производительности и надежности звукового конвейера ОС или поддержки новых сценариев. Определено новое свойство интерфейса устройства PnP, позволяющее драйверу предоставлять оси статические выражения ограничений размера буфера.

Размеры буфера

Драйвер работает с различными ограничениями при перемещении звуковых данных между ОС, драйвером и оборудованием. Эти ограничения могут быть вызваны физическим аппаратным транспортом, который перемещает данные между памятью и оборудованием, и /или из-за модулей обработки сигналов в аппаратном или связанном DSP.

Решения HW-KWS должны поддерживать размер захвата звука не менее 100 мс и до 200 мс.

Драйвер выражает ограничения размера буфера, задавая свойство устройства DEVPKEY_KsAudio_PacketSize_Constraints в интерфейсе устройства KSCATEGORY_AUDIO PnP фильтра KS, который содержит контакты потоковой передачи KS. Это свойство должно оставаться действительным и стабильным, пока включен интерфейс фильтра KS. ОС может прочитать это значение в любое время, не открывая дескриптор драйвера и не вызывая драйвер.

DEVPKEY_KsAudio_PacketSize_Constraints

Значение свойства DEVPKEY_KsAudio_PacketSize_Constraints содержит структуру KSAUDIO_PACKETSIZE_CONSTRAINTS , описывающую физические аппаратные ограничения (т. е. из-за механики передачи данных из буфера WaveRT в звуковое оборудование). Структура включает массив из 0 или более KSAUDIO_PACKETSIZE_PROCESSINGMODE_CONSTRAINT структур, описывающих ограничения, характерные для любых режимов обработки сигналов. Драйвер задает это свойство перед вызовом PcRegisterSubdevice или иным образом включает интерфейс фильтра KS для контактов потоковой передачи.

IMiniportWaveRTInputStream

Драйвер реализует этот интерфейс для лучшей координации потока аудиоданных от драйвера к ОС. Если этот интерфейс доступен в потоке захвата, ОС использует методы этого интерфейса для доступа к данным в буфере WaveRT. Дополнительные сведения см. в разделе IMiniportWaveRTInputStream::GetReadPacket.

IMiniportWaveRTOutputStream

Мини-порт WaveRT при необходимости реализует этот интерфейс, который позволяет рекомендовать ход выполнения записи из ОС и возвращать точную позицию потока. Дополнительные сведения см. в разделах IMiniportWaveRTOutputStream::SetWritePacket, IMiniportWaveRTOutputStream::GetOutputStreamPresentationPosition и IMiniportWaveRTOutputStream::GetPacketCount.

Метки времени счетчика производительности

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

На устройствах со сложными конвейерами DSP и обработкой сигналов вычисление точной метки времени может оказаться сложной задачей и должно выполняться вдумчиво. Метки времени не должны просто отражать время передачи образцов в ос или из нее в DSP.

  • В DSP отслеживайте примеры меток времени с помощью некоторых внутренних настенных часов DSP.
  • Между драйвером и DSP вычислите корреляцию между счетчиком производительности Windows и часами DSP. Процедуры для этого могут варьироваться от очень простых (но менее точных) до довольно сложных или новых (но более точных).
  • Учитывайте любые постоянные задержки, вызванные алгоритмами обработки сигналов, конвейером или аппаратным транспортом, если эти задержки не учитываются иным образом.

Операция ускорения чтения

В этом разделе описывается взаимодействие с ОС и драйвером для операций ускорения чтения. Ускорение чтения может происходить вне сценария голосовой активации, если драйвер поддерживает модель потоковой передачи WaveRT на основе пакетов, включая функцию IMiniportWaveRTInputStream::GetReadPacket .

Рассматриваются два сценария чтения с ускорением. В одном сценарии, если мини-порт поддерживает контакт с категорией контактов KSNODETYPE_AUDIO_KEYWORDDETECTOR драйвер начнет захватывать и внутренне буферистить данные при обнаружении ключевое слово. В другом сценарии драйвер может выполнить внутреннюю буферизацию данных за пределами буфера WaveRT, если ОС недостаточно быстро считывает данные, вызвав метод IMiniportWaveRTInputStream::GetReadPacket.

Для ускорения данных, которые были записаны до перехода на KSSTATE_RUN, драйвер должен сохранить точные сведения о метке времени выборки вместе с буферизируемыми данными. Метки времени определяют момент выборки захваченных образцов.

  1. После перехода потока в KSSTATE_RUN драйвер немедленно устанавливает событие уведомления буфера, так как у него уже есть доступные данные.

  2. В этом событии ОС вызывает Метод GetReadPacket() для получения сведений о доступных данных.

    а. Драйвер возвращает номер пакета допустимых захваченных данных (0 для первого пакета после перехода с KSSTATE_STOP на KSSTATE_RUN), из которого ОС может получить расположение пакета в буфере WaveRT, а также положение пакета относительно начала потока.

    b. Драйвер также возвращает значение счетчика производительности, соответствующее моменту выборки первой выборки в пакете. Обратите внимание, что это значение счетчика производительности может быть относительно старым в зависимости от объема данных записи, буферизованного в оборудовании или драйвере (за пределами буфера WaveRT).

    c. Если есть больше непрочитанных буферизованных данных, драйвер: i. Немедленно передает эти данные в доступное пространство буфера WaveRT (т. е. пространство, не используемое пакетом, возвращенным из GetReadPacket), возвращает значение true для MoreData и задает событие уведомления буфера перед возвращением из этой подпрограммы. Или, ii. Программирует оборудование для ускорения следующего пакета в доступное пространство буфера WaveRT, возвращает значение false для MoreData, а затем задает событие буфера после завершения передачи.

  3. ОС считывает данные из буфера WaveRT, используя сведения, возвращенные GetReadPacket().

  4. ОС ожидает следующего события уведомления буфера. Ожидание может завершиться немедленно, если драйвер настроит уведомление буфера на шаге (2c).

  5. Если драйвер не задал событие сразу на шаге (2c), драйвер устанавливает событие после передачи большего объема захваченных данных в буфер WaveRT и делает его доступным для чтения ОС.

  6. Перейдите в раздел (2). Для KSNODETYPE_AUDIO_KEYWORDDETECTOR ключевое слово контактов детектора драйверы должны выделить достаточное количество внутренних буферизации всплесков не менее чем на 5000 мс звуковых данных. Если ОС не удается создать поток на контакте до переполнения буфера, драйвер может завершить внутреннюю буферизацию и освободить связанные ресурсы.

Пробуждение при голосовой связи

Пробуждение по голосовой связи (WoV) позволяет пользователю активировать подсистему распознавания речи и запрашивать ее от выключенного, пониженного состояния питания до состояния "Включено" на экране, используя определенный ключевое слово, например "Привет, Кортана".

Эта функция позволяет устройству всегда прослушивать голос пользователя, когда устройство находится в низком энергопотреблении, в том числе при выключенном экране и бездействии устройства. Для этого используется режим прослушивания, который имеет меньшую мощность по сравнению с гораздо более высокой энергопотреблением, наблюдаемой во время обычной записи микрофона. Распознавание речи с низким энергопотреблением позволяет пользователю просто произносить предварительно определенную ключевую фразу, например "Привет, Кортана", а затем цепную речевой фразу, например "когда моя следующая встреча", для вызова речи без возможности рук. Это будет работать независимо от того, используется ли устройство или бездействует с выключенным экраном.

Звуковой стек отвечает за передачу данных о пробуждении (идентификатор говорящего, триггер ключевое слово, уровень достоверности), а также за уведомление заинтересованных клиентов об обнаружении ключевое слово.

Проверка современных резервных систем

WoV из состояния простоя системы можно проверить в современных резервных системах с помощью теста Modern Standby Wake on Voice Basic на источнике питания переменного тока и Modern Standby Wake on Voice Basic Test on DC-power source in the HLK. Эти тесты проверка, что система имеет аппаратный ключевое слово точечный модуль (HW-KWS), может войти в состояние deepest Runtime Idle Platform (DRIPS) и может выйти из современного режима ожидания по голосовой команде с задержкой возобновления работы системы меньше или равна одной секунде.