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:
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/voice-activation
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/voice-activation-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.
Thanks,
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