Поделиться через


Активация голосовой связи

Замечание

Эта статья относится главным образом к пользовательским интерфейсам, предоставляемым в Windows 10 (версия 1909 и более ранние версии). Дополнительные сведения см. в разделе "Окончание поддержки Кортаны".

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

Замечание

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

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

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

Article Description
Что такое Кортана? Предоставляет обзор и инструкцию по использованию Кортаны.

Общие сведения об активации голосовой команды "Hey Cortana" и "Изучить мой голос"

Эй Кортана" Активация голосовой связи

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

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

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

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

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

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

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

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

Функция "Learn my voice" (Изучение голоса)

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

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

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

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

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

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

Срок Пример/определение
Этапная команда Пример: Эй Кортана, сделай паузу <, дождись звука EarCon>. Какая погода? Иногда это называется "Команда с двумя ключевыми словами" или "Только по ключевому слову"
Команда с цепочкой Пример: Эй Кортана, что такое погода? Иногда это называется командой «однократного действия».
Активация голосовой связи Сценарий предоставления обнаружения ключевых слов предопределенной активирующей ключевой фразы. Например, "Эй Кортана" является сценарием активации Голосовой связи Майкрософт.
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 для детектора ключевых слов Шим уровня драйвера, который позволяет оборудованию с поддержкой WoV взаимодействовать с Windows и стеком Cortana.
Модель Файл данных акустической модели, используемый алгоритмом KWS. Файл данных является статическим. Модели локализованы, одна модель на каждую локаль.

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

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

  • Создайте настраиваемый детектор ключевых слов на основе примера SYSVAD, описанного далее в этой статье. Эти методы будут реализованы в COM DLL, описанной в интерфейсе адаптера OEM Keyword Detector.
  • Реализуйте усовершенствования WAVE RT, описанные в разделе "Усовершенствования WAVERT".
  • Предоставьте записи INF-файла для описания любых пользовательских API, используемых для обнаружения ключевых слов.
  • Ознакомьтесь с рекомендациями по оборудованию и тестом в рекомендации по аудиоустройствам. В этой статье приведены рекомендации и рекомендации по проектированию и разработке устройств ввода звука, предназначенных для использования с платформой распознавания речи Майкрософт.
  • Поддерживаются как пошаговые, так и связанные команды.
  • Поддержка "Эй Кортана" для каждой поддерживаемой локали Кортаны.
  • Объекты обработки звука (APO) должны обеспечить следующие эффекты:
    • AEC
    • AGC
    • NS
  • Эффекты для режима обработки речи должны быть задокументированы MFX APO.
  • APO может выполнять преобразование формата в виде MFX.
  • APO должен выводить следующий формат:
    • 16 кГц, mono, FLOAT.
  • При необходимости создайте любые пользовательские API для улучшения процесса записи звука. Дополнительные сведения см. в разделе "Объекты обработки звука Windows".

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

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

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

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

    • Для поддержки HW KWS WoV для состояния сна S0 (Modern Standby) 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 детектора ключевых слов (KWS). Он также используется драйвером для уведомления системы события обнаружения.
  • DLL адаптера OEM для детектора ключевых слов. Эта библиотека DLL реализует COM-интерфейс для адаптации закрытых данных драйвера для использования операционной системой для помощи в обнаружении ключевых слов.
  • Улучшения потоковой передачи WaveRT. Усовершенствования позволяют аудиодрайверу передавать пакетом буферизованные звуковые данные, полученные при обнаружении ключевых слов.

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

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

Теория передачи аудиосигнала в обход стандартных протоколов Bluetooth

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

Свойства:

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

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

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

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

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

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

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

Внутреннее функционирование драйвера и оборудования

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

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

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

После обнаружения ключевого слова все решения активации голосовой связи должны буферивировать все произнесенное ключевое слово, включая 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

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

IKeywordDetectorOemAdapter

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

Методы

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

KEYWORDID

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

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

ВыборКлючевогоСлова

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

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

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

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

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

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

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

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

Обучение и обработка аудиосигналов в системе эксплуатации

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

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

Обучение голосовой связи Распознавание речи
Режим Необработанные Необработанные или речевые функции
Закрепить Обычная KWS
Формат звука 32-разрядный с плавающей запятой (Тип = Audio, Подтип = IEEE_FLOAT, частота дискретизации = 16 кГц, разрядность = 32) Управляется аудио стеком ОС
Микрофон Микрофон 0 Все микрофоны в массиве или в монофоническом режиме

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

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

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

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

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

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

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

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

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

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

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

Усовершенствования WAVERT

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

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

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

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

Драйвер указывает ограничения размера буфера, задавая свойство устройства DEVPKEY_KsAudio_PacketSize_Constraints на интерфейсе PnP устройства KSCATEGORY_AUDIO фильтра 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(), чтобы получить сведения о доступных данных.

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

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

    3. Если для драйвера доступно больше непрочитанных буферизованных данных, он должен либо:

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

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

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

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

Пробуждение по голосу

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

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

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

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

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