[wdmaudiodev] Re: Has anyone ever written a hardware keyword spotter driver?

  • From: "Gary Daniels" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Gary.Daniels" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 9 Jan 2020 23:43:46 +0000

The current version of sysvad implements both single agent (SVA) hardware 
keyword spotter and multiple agent (MVA) hardware keyword spotter. The only 
agent supported through SVA is Cortana. There are many systems in market which 
support SVA, SVA has been available for a few years.

Here is the documentation for SVA and MVA:

MVA is currently under development with targeted partners and is not yet ready 
for broad deployment. Get_SoundDetectorSupportedPatterns2 is used with MVA 
support, Get_SoundDetectorSupportedPatterns is used for SVA support. You're 
seeing Get_SoundDetectorSupportedPatterns2 called, so you're seeing the system 
attempting to use MVA.

If you are interested in learning about development of HWKWS, I would recommend 
commenting out all of the KSPROPSETID_SoundDetector2 entries within the 
SYSVADPROPERTY_ITEM arrays in sysvad. This will remove MVA support from the 
driver, and the system will switch to SVA. SVA is mature, so you will have a 
better development experience.

In the Windows HLK is a test called "VoiceActivationManagerTests". This test 
suite will pass when run with Sysvad, and will exercise all of the HWKWS ddi's, 
SVA and MVA. It's a good place to start learning about the DDI.

You indicate that you are seeing calls to Arm. Arming is the last step of a 
successful initialization of MVA. After the arm, the system is waiting for the 
underlying hardware to report a detection event along with the buffered audio 
containing the keyword phrase and command phrase. The sysvad driver, being a 
sample, does not have any hardware and does not fake having a DSP or generate 
real activations. The driver generates a fake detection event immediately after 
the call to arm, and the burst buffer content is a sine wave. This will never 
trigger the Cortana UI to do anything, the single activation is rejected as a 
false activation because it does not contain someone saying "hey cortana". 
Since you are seeing it arm, it sounds like you're seeing the limits of what 
sysvad does in this situation.

Gary Daniels
Senior SDE, Windows audio

Sent from Outlook<http://aka.ms/weboutlook>

From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on 
behalf of Gordon Lewis <glewis9999@xxxxxxxxxxx>
Sent: Thursday, January 9, 2020 12:12 AM
To: wdmaudiodev@xxxxxxxxxxxxx <wdmaudiodev@xxxxxxxxxxxxx>
Subject: [EXTERNAL] [wdmaudiodev] Has anyone ever written a hardware keyword 
spotter driver?

I know it is relatively new but the sysvad sample driver does include code for 
it.  I see a call to the driver for Get_SoundDetectorPatterns2 for that 
property as well as properties to Arm and Reset the SoundDetector.  I also see 
calls to GetCapabilities and GetCapabilitiesForLanguage in the DLL.  However, I 
never see a call to BuildArmingPatternData in the KeywordDetector DLL.  I am 
wondering if the issue is the ProposedDataFormat properties in the driver or 
not.  I am also wondering if there is a bug in the sample driver.  Any 
assistance would be much appreciated.  I realize the information provided here 
may be vague so I am willing to provide more information as needed.  Thank you.

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10

Other related posts: