Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit artikel verwijst voornamelijk naar consumentenervaringen die zijn geleverd in Windows 10 (versie 1909 en eerder). Zie Einde van ondersteuning voor Cortana voor meer informatie.
Cortana, het Windows-spraakplatform, voorziet in alle spraakervaringen in Windows 10, zoals Cortana en dicteren. Spraakactivering is een functie waarmee gebruikers een spraakherkenningsengine kunnen aanroepen vanuit verschillende apparaatstroomstatussen door een specifieke woordgroep te zeggen: 'Hey Cortana'. Raadpleeg de informatie in dit artikel om hardware te maken die ondersteuning biedt voor spraakactiveringstechnologie.
Notitie
Het implementeren van spraakactivering is een belangrijk project en is een taak die is voltooid door SoC-leveranciers. OEM's kunnen contact opnemen met hun SoC-leverancier voor informatie over de implementatie van spraakactivering van hun SoC.
Cortana-ervaring voor eindgebruikers
Raadpleeg deze artikelen voor meer informatie over de spraakinteractie die beschikbaar is in Windows.
| Article | Beschrijving |
|---|---|
| Wat is Cortana? | Biedt een overzicht en gebruiksinstructies voor Cortana |
Inleiding tot 'Hey Cortana' spraakactivering en 'Learn my voice'
"Hey Cortana" Spraakactivering
Met de functie 'Hey Cortana' Voice Activation (VA) kunnen gebruikers snel contact opnemen met de Cortana-ervaring buiten hun actieve context (dat wil gezegd, wat momenteel op het scherm staat) met behulp van hun stem. Gebruikers willen vaak direct toegang hebben tot een ervaring zonder fysiek te hoeven communiceren of een apparaat aan te raken. Telefoongebruikers rijden mogelijk in de auto en zijn met hun aandacht en handen bezig met het besturen van het voertuig. Een Xbox-gebruiker wil mogelijk geen controller vinden en verbinden. Pc-gebruikers willen mogelijk snelle toegang tot een ervaring zonder meerdere muis-, aanraak- of toetsenbordacties uit te voeren. Bijvoorbeeld een computer in de keuken die wordt gebruikt tijdens het koken.
Spraakactivering biedt continu luisterende spraakinvoer via vooraf gedefinieerde sleutelwoorden of activeringszinnen. Sleuteltermen kunnen zelf worden uitgesproken ('Hey Cortana') als een gefaseerde opdracht of gevolgd door een spraakactie, bijvoorbeeld 'Hey Cortana, waar is mijn volgende vergadering?', een geketende opdracht.
De term Trefwoorddetectie beschrijft de detectie van het trefwoord door hardware of software.
Alleen het trefwoord "Cortana" activering vindt plaats wanneer alleen "Cortana" wordt gezegd; dan start Cortana en speelt het EarCon-geluid af om aan te geven dat het de luistermodus heeft geactiveerd.
Een gekoppelde opdracht beschrijft de mogelijkheid om direct na het trefwoord een opdracht uit te geven (zoals 'Hey Cortana, bel John') en cortana te laten starten (als dit nog niet is gestart) en de opdracht te volgen (een telefoongesprek met John starten).
Dit diagram toont kettingactivering en alleen trefwoordactivering.
Microsoft biedt een standaardzoeker voor trefwoorden in het besturingssysteem (software-trefwoordspotter) die wordt gebruikt om de kwaliteit van de detectie van hardwarewoorden te garanderen en om de Hey Cortana-ervaring te bieden in gevallen waarin de detectie van hardwarewoorden ontbreekt of niet beschikbaar is.
De functie 'Mijn stem leren'
Met de functie 'Learn my voice' kan de gebruiker Cortana trainen om hun unieke stem te herkennen. Dit wordt bereikt door de gebruiker door te selecteren Learn how I say "Hey Cortana" op het instellingenscherm van Cortana. De gebruiker herhaalt vervolgens zes zorgvuldig gekozen zinnen die een voldoende verscheidenheid aan fonetische patronen bieden om de unieke kenmerken van de stem van de gebruiker te identificeren.
Wanneer spraakactivering is gekoppeld aan 'Learn my voice', werken de twee algoritmen samen om valse activeringen te verminderen. Dit is vooral waardevol voor het scenario met vergaderruimten, waarbij één persoon 'Hey Cortana' zegt in een ruimte vol apparaten. Deze functie is alleen beschikbaar voor Windows 10 versie 1903 en eerder.
Spraakactivering wordt mogelijk gemaakt door een trefwoordspotter (KWS) die reageert als de sleutelterm wordt gedetecteerd. Als de KWS het apparaat uit een lage status moet halen, wordt de oplossing 'Wake on Voice' (WoV) genoemd. Zie Wake on Voicevoor meer informatie.
Woordenlijst met termen
Deze woordenlijst bevat een overzicht van termen met betrekking tot spraakactivering.
| Termijn | Voorbeeld/definitie |
|---|---|
| Gefaseerde opdracht | Voorbeeld: Hey Cortana <pauze, wacht op EarCon-geluid> Wat is het weer? Dit wordt soms aangeduid als 'Twee-shot-opdracht' of 'Alleen-trefwoord' |
| Gekoppelde opdracht | Voorbeeld: Hey Cortana wat is het weer? Dit wordt soms aangeduid als een 'one-shot-opdracht' |
| Spraakactivering | Het scenario van het bieden van trefwoorddetectie van een vooraf gedefinieerde activeringssleutelzin. 'Hey Cortana' is bijvoorbeeld het Microsoft Voice Activation-scenario. |
| WoV | Wake-on-Voice – Technologie die spraakactivering mogelijk maakt vanaf een uitgeschakelde schermtoestand met laag stroomverbruik naar een ingeschakelde schermtoestand met volledig stroomverbruik. |
| WoV van Modern Standby | Wake-on-Voice van een moderne stand-by (S0ix) toestand naar een volledig ingeschakelde (S0) schermstatus. |
| Moderne standby | Windows-infrastructuur voor laag energieverbruik in idle-stand, de opvolger van Verbonden stand-by (CS) in Windows 10. De eerste status van moderne stand-by is wanneer het scherm is uitgeschakeld. De diepste slaaptoestand is wanneer in DRIPS/veerkracht. Zie voor meer informatie Modern Standby |
| KWS | Trefwoordspotter: het algoritme dat de detectie van 'Hey Cortana' biedt |
| SW KWS | Trefwoordspotter voor software: een implementatie van KWS die wordt uitgevoerd op de host (CPU). Voor Hey Cortana is SW KWS opgenomen als onderdeel van Windows. |
| HW KWS | Hardware-uitbesteed trefwoorddetectie: een implementatie van KWS die op hardware wordt uitbesteed uitgevoerd. |
| Buffer voor uitbarstingen | Een ringbuffer die wordt gebruikt voor het opslaan van PCM-data, die kan exploderen bij een KWS-detectie, zodat alle audio die een KWS-detectie heeft geactiveerd, wordt opgenomen. |
| OEM-adapter voor trefwoorddetector | Een shim op stuurprogrammaniveau waarmee de HW met WoV kan communiceren met Windows en de Cortana-stack. |
| Modelleren | Het akoestische modelgegevensbestand dat wordt gebruikt door het KWS-algoritme. Het gegevensbestand is statisch. Modellen worden gelokaliseerd, één per locatie. |
Integratie van een hardwarewoordenherkenner
Om een hardware keywoord spotter (HW KWS) te implementeren, voer de volgende taken uit.
- Maak een aangepaste trefwoorddetector op basis van het SYSVAD-voorbeeld dat verderop in dit artikel wordt beschreven. U implementeert deze methoden in een COM-DLL, beschreven in de OEM-adapterinterface van Keyword Detector.
- Implementeer de WAVE RT-verbeteringen zoals beschreven in WAVERT Enhancements.
- Geef INF-bestandsvermeldingen op om aangepaste API's te beschrijven die worden gebruikt voor trefwoorddetectie.
- PKEY_FX_KeywordDetector_StreamEffectClsid
- PKEY_FX_KeywordDetector_ModeEffectClsid
- PKEY_FX_KeywordDetector_EndpointEffectClsid
- PKEY_SFX_KeywordDetector_ProcessingModes_Supported_For_Streaming
- PKEY_MFX_KeywordDetector_ProcessingModes_Supported_For_Streaming
- PKEY_EFX_KeywordDetector_ProcessingModes_Supported_For_Streaming
- Bekijk de hardware-aanbevelingen en testrichtlijnen in aanbeveling voor audioapparaten. Dit artikel bevat richtlijnen en aanbevelingen voor het ontwerpen en ontwikkelen van audio-invoerapparaten die zijn bedoeld voor gebruik met het Spraakplatform van Microsoft.
- Ondersteuning voor zowel gefaseerde als gekoppelde opdrachten.
- Ondersteuning voor 'Hey Cortana' voor elk van de ondersteunde Cortana-landinstellingen.
- De API's (audioverwerkingsobjecten) moeten de volgende effecten hebben:
- AEC
- AGC
- NS
- Effecten voor de spraakverwerkingsmodus moeten worden gerapporteerd door de MFX APO.
- De APO kan formaatconversie uitvoeren door middel van MFX.
- De APO moet de volgende formaat opleveren:
- 16 kHz, mono, zwevend.
- U kunt eventueel aangepaste API's ontwerpen om het audioopnameproces te verbeteren. Zie Windows Audio Processing Objectsvoor meer informatie.
Hardware-offloaded sleutelwoorddetector (HW KWS) WoV-vereisten
- HW KWS WoV wordt ondersteund tijdens de S0-werkstatus en S0-slaapstatus, ook wel bekend als Modern Standby.
- HW KWS WoV wordt niet ondersteund vanuit S3.
AEC-vereisten voor HW KWS
Voor Windows-versie 1709
- Ter ondersteuning van HW KWS WoV voor S0 slaapstand (Modern Stand-by) is AEC niet vereist.
- HW KWS WoV for S0 working state wordt niet ondersteund in Windows versie 1709.
Voor Windows-versie 1803
- HW KWS WoV for S0 working state wordt ondersteund.
- Om HW KWS WoV voor de S0-werkstaat in te schakelen, moet de APO AEC ondersteunen.
Overzicht van voorbeeldcode
Er is voorbeeldcode voor een audiostuurprogramma dat spraakactivering op GitHub implementeert als onderdeel van het voorbeeld van de virtuele SYSVAD-audioadapter. Het is raadzaam deze code als uitgangspunt te gebruiken. De code is beschikbaar op deze locatie.
https://github.com/Microsoft/Windows-driver-samples/tree/main/audio/sysvad/
Voor meer informatie over het SYSVAD-voorbeeldaudiostuurprogramma, zie Sample Audio Drivers.
Systeeminformatie voor trefwoordherkenning
Ondersteuning voor spraakactivering in de audio-stack
De externe interfaces van de audiostack voor het inschakelen van Spraakactivering dienen als de communicatiepijplijn voor het spraakplatform en de audiostuurprogramma's. De externe interfaces zijn onderverdeeld in drie delen.
- DDI (Keyword Detector Device Driver Interface). De apparaatstuurprogramma-interface voor trefwoorddetector is verantwoordelijk voor het configureren en activeren van de HW Keyword Spotter (KWS). Het wordt ook gebruikt door het stuurprogramma om het systeem van een detectie-gebeurtenis op de hoogte te stellen.
- Trefwoord-detector OEM-adapter DLL. Met dit DLL-bestand wordt een COM-interface geïmplementeerd om het stuurprogrammaspecifieke ondoorzichtige gegevens aan te passen voor gebruik door het besturingssysteem om te helpen bij het detecteren van trefwoorden.
- WaveRT-streamingverbeteringen. Dankzij de verbeteringen kan het audiostuurprogramma de gebufferde audiogegevens uit de trefwoorddetectie in één keer streamen.
Eigenschappen van audio-eindpunt
Het bouwen van audio-eindpuntgrafiek vindt normaal plaats. De grafiek is voorbereid op verwerking die sneller is dan in realtime. Tijdstempels voor vastgelegde buffers blijven correct. De tijdstempels weerspiegelen met name de gegevens die in het verleden zijn vastgelegd en gebufferd, en nu worden uitgebarsten.
Theorie van bluetooth-bypass audiostreaming
Het stuurprogramma maakt zoals gebruikelijk een KS-filter beschikbaar voor het opnameapparaat. Dit filter ondersteunt verschillende KS-eigenschappen en een KS-gebeurtenis voor het configureren, inschakelen en signaleren van een detectie-gebeurtenis. Het filter bevat ook een andere pinfabriek die is gedefinieerd als een trefwoordspotter (KWS) pin. Deze pin wordt gebruikt om audio van de keyword-spotter te streamen.
De eigenschappen zijn:
- Ondersteunde trefwoordtypen - KSPROPERTY_SOUNDDETECTOR_PATTERNS. Het besturingssysteem stelt deze eigenschap in om de trefwoorden te configureren die moeten worden gedetecteerd.
- Lijst met GUID's voor trefwoordpatronen - KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS. Deze eigenschap wordt gebruikt om een lijst met GUID's op te halen waarmee de typen ondersteunde patronen worden geïdentificeerd.
- Geactiveerd - KSPROPERTY_SOUNDDETECTOR_ARMED. Deze eigenschap lezen/schrijven is een Booleaanse status die aangeeft of de detector gewapend is. Het besturingssysteem stelt dit in om de trefwoorddetector in te schakelen. Het besturingssysteem kan dit verwijderen om te ontkoppelen. Het stuurprogramma wist dit automatisch wanneer trefwoordpatronen zijn ingesteld en ook nadat een trefwoord is gedetecteerd. (Het besturingssysteem moet opnieuw geactiveerd worden.)
- Overeenkomend resultaat - KSPROPERTY_SOUNDDETECTOR_MATCHRESULT. Deze leeseigenschap bevat de resultaatgegevens nadat de detectie is opgetreden.
De gebeurtenis die wordt geactiveerd wanneer een trefwoord wordt gedetecteerd, is een KSEVENT_SOUNDDETECTOR_MATCHDETECTED gebeurtenis.
Operatievolgorde
Systeem opstarten
- Het besturingssysteem leest de ondersteunde trefwoordtypen om te controleren of het trefwoorden in die indeling heeft.
- Het besturingssysteem registreert voor de gebeurtenis van wijziging van de detectorstatus.
- Het besturingssysteem stelt de trefwoordpatronen in.
- Het besturingssysteem bewapent de detector.
Bij het ontvangen van de KS-gebeurtenis
- De bestuurder ontwapent de detector.
- Het besturingssysteem leest de status van de trefwoorddetector, parseert de geretourneerde gegevens en bepaalt welk patroon is gedetecteerd.
- Het besturingssysteem herstelt de detector.
Interne stuurprogramma- en hardwarebewerking
Terwijl de detector gewapend is, kan de hardware continu audiogegevens vastleggen en bufferen in een kleine FIFO-buffer. (De grootte van deze FIFO-buffer wordt bepaald door vereisten buiten dit document, maar kan meestal honderden milliseconden tot enkele seconden zijn.) Het detectie-algoritme werkt op de gegevensstreaming via deze buffer. Het ontwerp van het stuurprogramma en de hardware is zodanig dat wanneer ze geactiveerd zijn, er geen interactie is tussen het stuurprogramma en de hardware en er geen onderbrekingen zijn voor de toepassingsprocessors totdat een trefwoord wordt gedetecteerd. Hierdoor kan het systeem een lagere energiestatus bereiken als er geen andere activiteit is.
Wanneer de hardware een trefwoord detecteert, wordt er een interrupt gegenereerd. Terwijl de hardware wacht tot het stuurprogramma de interrupt afhandelt, blijft de hardware audio vastleggen in de buffer, zodat er geen gegevens na het trefwoord verloren gaan, binnen de limieten van de buffer.
Tijdstempels voor trefwoorden
Nadat een trefwoord is gedetecteerd, moeten alle spraakactiveringsoplossingen alle gesproken trefwoorden bufferen, inclusief 250 ms vóór het begin van het trefwoord. Het audiostuurprogramma moet tijdstempels opgeven waarmee het begin en einde van de sleutelzin in de stream worden opgegeven.
Om de start- en eindtijdstempels van trefwoorden te ondersteunen, moet de DSP-software mogelijk intern tijdstempels toepassen op basis van een DSP-klok. Zodra een trefwoord is gedetecteerd, communiceert de DSP-software met het stuurprogramma om een KS-gebeurtenis voor te bereiden. Het stuurprogramma en de DSP-software moeten de DSP-tijdstempels toewijzen aan een Windows-prestatiemeterwaarde. De methode hiervoor is specifiek voor het hardwareontwerp. Een mogelijke oplossing is dat het stuurprogramma de huidige prestatiemeteritem leest, de huidige DSP-tijdstempel opvraagt, de huidige prestatiemeteritem opnieuw leest en vervolgens een correlatie tussen prestatiemeteritems en DSP-tijd inschatten. Op basis van de correlatie kan het stuurprogramma de tijdstempels van het trefwoord DSP toewijzen aan tijdstempels van windows-prestatiemeteritems.
Oem-adapterinterface voor trefwoorddetector
De OEM levert een COM-object-implementatie die fungeert als intermediair tussen het besturingssysteem en het stuurprogramma, waardoor de ondoorzichtige gegevens die zijn geschreven en gelezen naar het audiostuurprogramma via KSPROPERTY_SOUNDDETECTOR_PATTERNS en KSPROPERTY_SOUNDDETECTOR_MATCHRESULTkunnen worden berekend of geparseerd.
De CLSID van het COM-object is een detectorpatroontype GUID die wordt geretourneerd door de KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS. Het besturingssysteem roept CoCreateInstance aan die de GUID van het patroontype doorgeeft om het juiste COM-object te instantiëren dat compatibel is met het type trefwoordpatroon en methoden aanroept op de IKeywordDetectorOemAdapter-interface van het object.
Vereisten voor COM Threading Model
De implementatie van de OEM kan een van de COM-threadingmodellen kiezen.
IKeywordDetectorOemAdapter
Het interfaceontwerp probeert de object-implementatie staatloos te houden. Met andere woorden, de implementatie moet geen status tussen methode-aanroepen opslaan. Interne C++-klassen hebben waarschijnlijk geen lidvariabelen nodig dan die nodig zijn om een COM-object in het algemeen te implementeren.
Methoden
Implementeer de volgende methoden.
- IKeywordDetectorOemAdapter::BuildArmingPatternData
- IKeywordDetectorOemAdapter::ComputeAndAddUserModelData
- IKeywordDetectorOemAdapter::GetCapabilities
- IKeywordDetectorOemAdapter::ParseDetectionResultData
- IKeywordDetectorOemAdapter::VerifyUserKeyword
KEYWORDID
De KEYWORDID opsomming identificeert de woordgroepstekst/functie van een trefwoord en wordt ook gebruikt in de Windows Biometric Service-adapters. Zie Overzicht van biometrieframework - Core Platform Components voor meer informatie
typedef enum {
KwInvalid = 0,
KwHeyCortana = 1,
KwSelect = 2
} KEYWORDID;
Sleutelwoordkiezer
De KEYWORDSELECTOR struct is een set id's die een bepaald trefwoord en een bepaalde taal uniek selecteren.
typedef struct
{
KEYWORDID KeywordId;
LANGID LangId;
} KEYWORDSELECTOR;
Modelgegevens verwerken
statisch gebruikersonafhankelijk model: het OEM-DLL-bestand bevat doorgaans enkele statische gebruikersonafhankelijke modelgegevens die zijn ingebouwd in het DLL-bestand of in een afzonderlijk gegevensbestand dat is opgenomen in het DLL-bestand. De set ondersteunde trefwoord-id's die worden geretourneerd door de GetCapabilities-routine, is afhankelijk van deze gegevens. Als bijvoorbeeld de lijst met ondersteunde trefwoord-id's die worden geretourneerd door GetCapabilities KwHeyCortana bevat, zouden de statische modelgegevens die onafhankelijk van de gebruiker zijn gegevens bevatten voor "Hey Cortana" (of de vertaling ervan) voor alle ondersteunde talen.
dynamisch gebruikersafhankelijk model - IStream biedt een opslagmodel voor willekeurige toegang. Het besturingssysteem geeft een IStream-interfaceaanwijzer door aan veel van de methoden op de interface IKeywordDetectorOemAdapter. Het besturingssysteem maakt een back-up van de IStream-implementatie met de juiste opslag voor maximaal 1 MB aan gegevens.
De inhoud en structuur van de gegevens in deze opslag wordt gedefinieerd door de OEM. Het beoogde doel is voor permanente opslag van gebruikersafhankelijke modelgegevens die zijn berekend of opgehaald door de OEM-DLL.
Het besturingssysteem kan de interfacemethoden aanroepen met een lege IStream, met name als de gebruiker nooit een trefwoord heeft getraind. Het besturingssysteem maakt een afzonderlijke IStream-opslag voor elke gebruiker. Met andere woorden, een gegeven IStream slaat modelgegevens op voor één en slechts één gebruiker.
De OEM DLL-ontwikkelaar beslist hoe de gebruikersonafhankelijke en gebruikersafhankelijke gegevens beheerd worden. Gebruikersgegevens worden echter nooit ergens buiten de IStream opgeslagen. Een mogelijk OEM DLL-ontwerp zou intern schakelen tussen het openen van de IStream en de statische, gebruiker-onafhankelijke gegevens, afhankelijk van de parameters van de huidige methode. Een alternatief ontwerp kan de IStream aan het begin van elke methodeaanroep controleren en de statische, gebruikersonafhankelijke gegevens aan de IStream toevoegen als deze nog niet aanwezig zijn, zodat de rest van de methode vervolgens alleen de IStream hoeft te benaderen voor alle modelgegevens.
Training en gebruik van audioprocessing
Zoals eerder beschreven, resulteert de gebruikersinterface-flow van de training in volledige fonetisch rijke zinnen die beschikbaar zijn in de audiostream. Elke zin wordt afzonderlijk doorgegeven aan IKeywordDetectorOemAdapter::VerifyUserKeyword om te controleren of deze het verwachte trefwoord bevat en een acceptabele kwaliteit heeft. Nadat alle zinnen zijn verzameld en geverifieerd door de gebruikersinterface, worden ze allemaal doorgegeven in één aanroep naar IKeywordDetectorOemAdapter::ComputeAndAddUserModelData.
Audio wordt op een unieke manier verwerkt voor training voor spraakactivering. De volgende tabel bevat een overzicht van de verschillen tussen de training voor spraakactivering en het reguliere spraakherkenningsgebruik.
| Spraaktraining | Spraakherkenning | |
|---|---|---|
| Modus | Rauw | Ruwe tekst of gesproken tekst |
| PIN | Normaal | KWS |
| audio-indeling | 32-bit float (Type = Audio, Subtype = IEEE_FLOAT, Samplingfrequentie = 16 kHz, bits = 32) | Beheerd door de audiostack van het besturingssysteem |
| microfoon | Microfoon 0 | Alle microfoons in opstelling of mono |
Overzicht van het systeem voor trefwoordherkenning
Dit diagram biedt een overzicht van het systeem voor trefwoordherkenning.
Sequentiediagrammen voor trefwoordherkenning
In deze diagrammen wordt de spraakruntimemodule weergegeven als het spraakplatform. Zoals eerder vermeld, wordt het Windows-spraakplatform gebruikt om alle spraakervaringen in Windows 10, zoals Cortana en dicteren, mogelijk te maken.
Tijdens het opstarten worden de mogelijkheden verzameld met behulp van IKeywordDetectorOemAdapter::GetCapabilities.
Later op wanneer de gebruiker "Stemherkenning instellen" selecteert, wordt het trainingsproces gestart.
In dit diagram wordt het proces van voorbereiden op trefwoorddetectie beschreven.
WAVERT-verbeteringen
Minipoortinterfaces worden gedefinieerd om te worden geïmplementeerd door WaveRT-minipoortstuurprogramma's. Deze interfaces bieden methoden om het audiostuurprogramma te vereenvoudigen, de prestaties en betrouwbaarheid van de audiopijplijn van het besturingssysteem te verbeteren of nieuwe scenario's te ondersteunen. Er is een nieuwe PnP-apparaatinterface-eigenschap gedefinieerd waarmee het stuurprogramma een statische expressies van de buffergroottebeperkingen voor het besturingssysteem kan bieden.
Buffergrootten
Een stuurprogramma werkt onder verschillende beperkingen bij het verplaatsen van audiogegevens tussen het besturingssysteem, het stuurprogramma en de hardware. Deze beperkingen kunnen worden veroorzaakt door het fysieke hardwaretransport dat gegevens verplaatst tussen het geheugen en de hardware, en/of als gevolg van de signaalverwerkingsmodules binnen de hardware of gekoppelde DSP.
HW-KWS oplossingen moeten ondersteuning bieden voor audioopnamegrootten van ten minste 100 ms en maximaal 200 ms.
Het stuurprogramma geeft de beperkingen van de buffergrootte weer door de eigenschap DEVPKEY_KsAudio_PacketSize_Constraints in te stellen op de KSCATEGORY_AUDIO PnP-apparaatinterface van het KS-filter met KS-streamingpinnen. Deze eigenschap moet geldig en stabiel blijven terwijl de KS-filterinterface is ingeschakeld. Het besturingssysteem kan deze waarde op elk gewenst moment lezen zonder een ingang voor het stuurprogramma te hoeven openen en het stuurprogramma aan te roepen.
DEVPKEY_KsAudio_PacketSize_Constraints
De DEVPKEY_KsAudio_PacketSize_Constraints eigenschapswaarde bevat een KSAUDIO_PACKETSIZE_CONSTRAINTS structuur die de fysieke hardwarebeperkingen beschrijft (dat wil gezegd, vanwege de mechanica van het overdragen van gegevens uit de WaveRT-buffer naar de audiohardware). De structuur bevat een matrix van 0 of meer KSAUDIO_PACKETSIZE_PROCESSINGMODE_CONSTRAINT structuren die beperkingen beschrijven die specifiek zijn voor signaalverwerkingsmodi. Het stuurprogramma stelt deze eigenschap in voordat het PcRegisterSubdevice aanroept of op een andere manier de KS-filterinterface inschakelt voor zijn streamingpinnen.
IMiniportWaveRTInputStream
Een stuurprogramma implementeert deze interface voor een betere coördinatie van de audiogegevensstroom van het stuurprogramma naar het besturingssysteem. Als deze interface beschikbaar is in een capturestream, gebruikt het besturingssysteem methoden op deze interface om toegang te krijgen tot gegevens in de WaveRT-buffer. Zie IMiniportWaveRTInputStream::GetReadPacket voor meer informatie
IMiniportWaveRTOutputStream
Een WaveRT-minipoort implementeert deze interface naar keuze om te worden ingelicht over de schrijfvoortgang van het besturingssysteem en om de exacte streampositie terug te geven. Zie IMiniportWaveRTOutputStream::SetWritePacket, IMiniportWaveRTOutputStream::GetOutputStreamPresentationPosition en IMiniportWaveRTOutputStream::GetPacketCount.
Tijdstempels van prestatiemeters
Verschillende van de stuurprogrammaroutines retourneren tijdstempels van Windows-prestatiemeteritems die de tijd weerspiegelen waarop steekproeven worden vastgelegd of gepresenteerd door het apparaat.
In apparaten met complexe DSP-pijplijnen en signaalverwerking kan het berekenen van een nauwkeurige tijdstempel lastig zijn en moet zorgvuldig worden uitgevoerd. De tijdstempels mogen niet overeenkomen met het tijdstip waarop voorbeelden zijn overgebracht naar of van het besturingssysteem naar de DSP.
- In de DSP kunt u voorbeeldtijdstempels bijhouden met behulp van een interne DSP-wandklok.
- Bereken tussen het stuurprogramma en DSP een correlatie tussen het Windows-prestatiemeteritem en de DSP-wandklok. Procedures hiervoor kunnen variëren van eenvoudig (maar minder nauwkeurig) tot redelijk complex of nieuw (maar nauwkeuriger).
- Houd rekening met eventuele constante vertragingen als gevolg van signaalverwerkingsalgoritmen of pijplijn- of hardwaretransporten, tenzij deze vertragingen anders worden gerekend.
Burst-leesbewerking
In deze sectie worden de interactie tussen het besturingssysteem en stuurprogramma voor burst-leesbewerkingen beschreven. Burst-leesbewerkingen kunnen zich buiten het scenario voor spraakactivering voordoen zolang het stuurprogramma het waveRT-model voor streaming op basis van pakketten ondersteunt, inclusief de IMiniportWaveRTInputStream::GetReadPacket--functie.
Er worden twee voorbeeldscenario's van bursts besproken. Als de minipoort in één scenario ondersteuning biedt voor een speldcategorie KSNODETYPE_AUDIO_KEYWORDDETECTOR , begint het stuurprogramma met het vastleggen en intern bufferen van gegevens wanneer een trefwoord wordt gedetecteerd. In een ander scenario kan het stuurprogramma intern gegevens buiten de WaveRT-buffer bufferen als het besturingssysteem niet snel genoeg gegevens leest door IMiniportWaveRTInputStream::GetReadPacket aan te roepen.
Als u gegevens wilt bursten die zijn vastgelegd vóór de overgang naar KSSTATE_RUN, moet het stuurprogramma nauwkeurige voorbeeldtijdstempelgegevens behouden, samen met de gegevens van de bufferopname. De tijdstempels identificeren het steekproefmoment van de vastgelegde monsters.
Nadat de stroom naar KSSTATE_RUN is overgegaan, stelt het stuurprogramma onmiddellijk de buffermeldingsgebeurtenis in omdat er al gegevens beschikbaar zijn.
Op deze gebeurtenis roept het besturingssysteem GetReadPacket() aan om informatie over de beschikbare gegevens op te halen.
Het stuurprogramma retourneert het pakketnummer van de geldige vastgelegde gegevens (0 voor het eerste pakket na de overgang van KSSTATE_STOP naar KSSTATE_RUN), waaruit het besturingssysteem de pakketpositie binnen de WaveRT-buffer en de pakketpositie ten opzichte van het begin van de stream kan afleiden.
Het stuurprogramma retourneert ook de prestatiemeterwaarde die overeenkomt met het steekproefmoment van de eerste meting in het pakket. Deze prestatiecounterwaarde zou relatief oud kunnen zijn, afhankelijk van de hoeveelheid gegevens die is gebufferd binnen de hardware of het stuurprogramma (buiten de WaveRT-buffer).
Als er meer ongelezen buffergegevens beschikbaar zijn, kan het stuurprogramma:
- Met deze procedure worden de gegevens direct overgebracht naar de beschikbare ruimte van de WaveRT-buffer (dat wil zeggen, ruimtes die niet worden gebruikt door het pakket dat door GetReadPacket teruggestuurd wordt), retourneert true voor MoreData en stelt de buffer notificatie-event in voordat de routine eindigt. Of
- Programmeert hardware om het volgende pakket in de beschikbare ruimte van de WaveRT-buffer in te voegen, geeft 'false' terug voor 'MoreData', en activeert later het bufferevent zodra de overdracht is voltooid.
Het besturingssysteem leest gegevens uit de WaveRT-buffer met behulp van de informatie die wordt geretourneerd door GetReadPacket().
Het besturingssysteem wacht op de volgende buffermeldings gebeurtenis. De wachttijd kan onmiddellijk worden beëindigd als het stuurprogramma de buffermelding in stap (2c) heeft ingesteld.
Als het stuurprogramma de gebeurtenis niet onmiddellijk heeft ingesteld in stap (2c), stelt het stuurprogramma de gebeurtenis in nadat deze meer vastgelegde gegevens overdraagt naar de WaveRT-buffer en het beschikbaar stelt voor het besturingssysteem om te lezen
Ga naar (2). Voor trefwoorddetectorpinnen van KSNODETYPE_AUDIO_KEYWORDDETECTOR moeten stuurprogramma's voldoende interne burst-buffering reserveren voor ten minste 5000 ms aan audiogegevens. Als het besturingssysteem geen stream op de pin kan maken voordat de buffer overloopt, kan het stuurprogramma de interne bufferactiviteit beëindigen en de bijbehorende resources vrijgeven.
Activeren met Spraak
Met Wake On Voice (WoV) kan de gebruiker een spraakherkenningsengine activeren en er query's op uitvoeren door vanaf een scherm uit, lagere energiestatus, naar een scherm aan, volledige energiestatus te schakelen door een bepaald trefwoord, zoals 'Hey Cortana', te zeggen.
Met deze functie kan het apparaat altijd naar de stem van de gebruiker luisteren terwijl het apparaat een lage energiestatus heeft, inclusief wanneer het scherm is uitgeschakeld en het apparaat niet actief is. Dit doet het met behulp van een luistermodus, wat lager vermogen is in vergelijking met het hogere energieverbruik dat wordt gezien tijdens de normale microfoonopname. Met de spraakherkenning met weinig vermogen kan een gebruiker een vooraf gedefinieerde sleutelterm zoals 'Hey Cortana' zeggen, gevolgd door een geketende spraakzin zoals 'wanneer is mijn volgende afspraak' om spraak op een handsfree manier aan te roepen. Dit werkt ongeacht of het apparaat in gebruik is of niet actief is met het scherm uit.
De audiostack is verantwoordelijk voor het communiceren van de wekgegevens (spreker-ID, trefwoordtrigger, vertrouwensniveau) en het informeren van geïnteresseerde clients dat het trefwoord wordt gedetecteerd.
Validatie van moderne stand-bysystemen
WoV van een niet-actieve systeemstatus kan worden gevalideerd op Moderne Stand-by--systemen met behulp van de Moderne Stand-by Wake on Voice Basic-test op AC-stroombron en de Moderne Stand-by Wake on Voice Basic-test op DC-stroombron in de HLK-. Met deze tests wordt gecontroleerd of het systeem een hardwaretrefwoordspotter (HW-KWS) heeft, de runtime-inactieve platformstatus (DRIPS) kan invoeren, en kan worden geactiveerd vanuit Modern Stand-by met een spraakopdracht, met een systeemlatentie die minder dan of gelijk aan één seconde is.