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.
Integreer spraakherkenning en spraak-naar-spraak (ook wel TTS of spraaksynthese genoemd) rechtstreeks in de gebruikerservaring van uw app.
Spraakherkenning Spraakherkenning converteert woorden die door de gebruiker worden gesproken naar tekst voor formulierinvoer, voor tekstdicteren, om een actie of opdracht op te geven en taken uit te voeren. Het ondersteunt zowel vooraf gedefinieerde grammatica's voor dicteren in vrije tekst als zoeken op internet en aangepaste grammatica's die zijn geschreven met SRGS-versie 1.0 (Speech Recognition Grammar Specification).
Speechsynthese/tekst-naar-spraak (TTS) TTS maakt gebruik van een spraaksynthese-engine (spraak) om een teksttekenreeks te converteren naar gesproken woorden. De invoertekenreeks kan eenvoudige, ongestileerde tekst of complexere Speech Synthesis Markup Language (SSML) zijn. SSML biedt een standaardmethode voor het beheren van spraakkenmerken, zoals uitspraak, volume, toonhoogte, spreektempo of snelheid, en nadruk.
Ontwerp van spraakinteractie
Wanneer u spraak zorgvuldig ontwerpt en implementeert, kan het een effectieve, toegankelijke en natuurlijke manier zijn voor mensen om te communiceren met uw Windows toepassingen, waarbij traditionele interactie-ervaringen worden aangevuld of zelfs worden vervangen op basis van een muis, toetsenbord, controller of aanraking.
In deze richtlijnen en aanbevelingen wordt beschreven hoe u spraakherkenning en TTS het beste kunt integreren in de interactie-ervaring van uw app.
Stel uzelf de volgende vragen als u ondersteuning overweegt voor spraakinteracties in uw app:
- Welke acties kunnen gebruikers uitvoeren via spraak? Kunnen ze navigeren tussen pagina's, opdrachten aanroepen of gegevens invoeren als tekstvelden, korte notities of lange berichten?
- Is spraakinvoer een goede optie voor het voltooien van een taak?
- Hoe weet een gebruiker wanneer spraakinvoer beschikbaar is?
- Luistert de app altijd of moet de gebruiker actie ondernemen om de luistermodus in te schakelen?
- Welke zinnen initiëren een actie of gedrag? Moeten de woordgroepen en acties op het scherm worden opgesomd?
- Zijn prompt-, bevestigings- en ondubbelzinnigheidsschermen of TTS vereist?
- Wat is het interactiedialoogvenster tussen app en gebruiker?
- Is een aangepaste of beperkte woordenlijst vereist (zoals geneeskunde, wetenschap of landinstelling) voor de context van uw app?
- Is netwerkconnectiviteit vereist?
Tekstinvoer
Tekstinvoer kan variëren van korte formulierinvoer, zoals één woord of woordgroep, tot lange formulierinvoer, zoals meerdere zinnen, alinea's of doorlopende dicteren. Korte formulierinvoer is doorgaans minder dan 10 seconden lang, terwijl lange formulierinvoersessies maximaal twee minuten lang kunnen zijn. Lange formulierinvoer kan opnieuw worden gestart zonder tussenkomst van de gebruiker om de indruk van continue dicteren te geven.
Geef een visuele aanwijzing op om aan te geven dat spraakherkenning wordt ondersteund en beschikbaar is voor de gebruiker en of de gebruiker deze moet inschakelen. Gebruik bijvoorbeeld een opdrachtbalkknop met een microfoon-glyph (zie opdrachtbalken) om zowel de beschikbaarheid als de status weer te geven.
Geef doorlopende herkenningsfeedback om elk duidelijk gebrek aan reactie te minimaliseren terwijl de herkenning wordt uitgevoerd.
Laat gebruikers herkenningstekst herzien met behulp van toetsenbordinvoer, ondubbelzinnige prompts, suggesties of aanvullende spraakherkenning.
Stop de herkenning als invoer wordt gedetecteerd vanaf een ander apparaat dan spraakherkenning, zoals aanraakscherm of toetsenbord. Deze invoer geeft waarschijnlijk aan dat de gebruiker is verplaatst naar een andere taak, zoals het corrigeren van de herkenningstekst of interactie met andere formuliervelden.
Geef de tijdsduur op waarvoor geen spraakinvoer aangeeft dat de herkenning voorbij is. Start de herkenning na deze periode niet automatisch opnieuw, omdat dit meestal aangeeft dat de gebruiker niet meer betrokken is bij uw app.
In sommige gevallen is mogelijk een netwerkverbinding vereist om spraakherkenning te ondersteunen. Als deze niet beschikbaar is, schakelt u alle gebruikersinterface voor continue herkenning uit en beëindigt u de herkenningssessie.
Bevelvoering
Spraakinvoer kan acties initiëren, opdrachten aanroepen en taken uitvoeren.
Als ruimte is toegestaan, kunt u overwegen de ondersteunde antwoorden voor de huidige app-context weer te geven, met voorbeelden van geldige invoer. Deze aanpak vermindert de mogelijke reacties die uw app nodig heeft om te verwerken en elimineert ook verwarring voor de gebruiker.
Probeer uw vragen zo specifiek mogelijk te beantwoorden. Bijvoorbeeld: 'Wat wilt u vandaag doen?' is zeer open en vereist een zeer grote grammaticadefinitie vanwege hoe gevarieerd de antwoorden kunnen zijn. Als alternatief beperkt de vraag 'Wilt u een game spelen of muziek beluisteren?' het antwoord tot een van de twee geldige antwoorden met een overeenkomstige beperkte grammaticadefinitie. Een kleine grammatica is veel eenvoudiger te ontwerpen en resulteert in veel nauwkeurigere herkenningsresultaten.
Vraag bevestiging van de gebruiker wanneer de betrouwbaarheid van spraakherkenning laag is. Als de intentie van de gebruiker onduidelijk is, is het beter om uitleg te krijgen dan om een onbedoelde actie te starten.
Geef een visuele aanwijzing op om aan te geven dat spraakherkenning wordt ondersteund en beschikbaar is voor de gebruiker en of de gebruiker deze moet inschakelen. Gebruik bijvoorbeeld een opdrachtbalkknop met een microfoon-symbool (zie Richtlijnen voor opdrachtbalken) om zowel beschikbaarheid als status weer te geven.
Als de spraakherkenningsschakelaar vaak niet zichtbaar is, kunt u overwegen een indicatie van de status weer te geven in het inhoudsgebied van de app.
Als de gebruiker herkenning initieert, kunt u overwegen de ingebouwde herkenningservaring voor consistentie te gebruiken. De ingebouwde ervaring omvat aanpasbare schermen met prompts, voorbeelden, ondubbelzinnigheden, bevestigingen en fouten.
De schermen variëren afhankelijk van de opgegeven beperkingen:
Vooraf gedefinieerde grammatica (dicteren of zoeken op internet)
- Het luisterscherm .
- Het Denken-scherm.
- Het Heard you say-scherm of het foutscherm.
Lijst met woorden of woordgroepen of een SRGS-grammaticabestand
- Het luisterscherm .
- Het scherm Hebt u gezegd , als wat de gebruiker zei als meer dan één potentieel resultaat kan worden geïnterpreteerd.
- Het Heard you say-scherm of het foutscherm.
In het scherm Luisteren kunt u het volgende doen:
- Pas de koptekst aan.
- Geef voorbeeldtekst op van wat de gebruiker kan zeggen.
- Geef op of het scherm Gehoord dat u zegt wordt weergegeven.
- Lees de herkende tekenreeks terug naar de gebruiker op het scherm Ik hoorde dat u zei.
In de volgende afbeeldingen ziet u een voorbeeld van de ingebouwde herkenningsstroom voor een spraakherkenningsfunctie die gebruikmaakt van een door SRGS gedefinieerde beperking. In dit voorbeeld is spraakherkenning geslaagd.
eerste herkenningsscherm voor een beperking op basis van een sgrs-grammaticabestand
tussenliggend herkenningsscherm voor een beperking op basis van een sgrs-grammaticabestand
laatste herkenningsscherm voor een beperking op basis van een sgrs-grammaticabestand
Altijd luisteren
Uw app kan luisteren naar en spraakinvoer herkennen zodra de app wordt gestart, zonder tussenkomst van de gebruiker.
Pas de grammaticabeperkingen aan op basis van de app-context. Met deze aanpak blijft de spraakherkenning zeer gericht en relevant voor de huidige taak en worden fouten geminimaliseerd.
Wat kan ik zeggen?
Wanneer u spraakinvoer inschakelt, kunnen gebruikers ontdekken wat de app kan begrijpen en welke acties deze kan uitvoeren.
Als gebruikers spraakherkenning inschakelen, kunt u overwegen de opdrachtbalk of een menuopdracht te gebruiken om alle woorden en woordgroepen weer te geven die in de huidige context worden ondersteund.
Als spraakherkenning altijd is ingeschakeld, kunt u de zin 'Wat kan ik zeggen?' toevoegen aan elke pagina. Wanneer de gebruiker deze woordgroep zegt, geeft u alle woorden en woordgroepen weer die in de huidige context worden ondersteund. Het gebruik van deze woordgroep biedt gebruikers een consistente manier om spraakmogelijkheden in het systeem te detecteren.
Herkenningsfouten
Spraakherkenning kan mislukken. Er treden fouten op wanneer de geluidskwaliteit slecht is, wanneer de recognizer slechts een deel van een woordgroep detecteert of wanneer de herkenning helemaal geen invoer detecteert.
Ga op een zorgvuldige manier met fouten om, help de gebruiker te begrijpen waarom de herkenning is mislukt en herstel daarna.
Uw app moet de gebruiker informeren dat de recognizer deze niet heeft begrepen en dat ze het opnieuw moeten proberen.
Overweeg voorbeelden te geven van een of meer ondersteunde woordgroepen. De gebruiker herhaalt waarschijnlijk een voorgestelde woordgroep, waardoor de herkenning toeneemt.
Een lijst met mogelijke overeenkomsten weergeven waaruit de gebruiker kan kiezen. Deze aanpak kan veel efficiënter zijn dan het herkenningsproces opnieuw doorlopen.
Ondersteuning bieden voor alternatieve invoertypen, wat vooral handig is voor het afhandelen van herhaalde herkenningsfouten. U kunt bijvoorbeeld voorstellen dat de gebruiker een toetsenbord probeert te gebruiken of een aanraakscherm of een muis gebruikt om een keuze te maken uit een lijst met mogelijke overeenkomsten.
Gebruik de ingebouwde spraakherkenningservaring omdat deze schermen bevat die de gebruiker informeren dat de herkenning niet is geslaagd en de gebruiker een andere herkenningspoging kan laten uitvoeren.
Luister naar en probeer problemen in de audio-invoer op te lossen. De spraakherkenning kan problemen met de audiokwaliteit detecteren die de nauwkeurigheid van spraakherkenning nadelig kunnen beïnvloeden. U kunt de informatie van de spraakherkenning gebruiken om de gebruiker op de hoogte te stellen van het probleem en deze zo mogelijk corrigerende maatregelen te laten nemen. Als de volume-instelling op de microfoon bijvoorbeeld te laag is, kunt u de gebruiker vragen luider te spreken of het volume hoger te zetten.
Constraints
Beperkingen, of grammatica's, bepalen de gesproken woorden en woordgroepen die de spraakherkenner kan herkennen. U kunt een van de vooraf gedefinieerde grammatica's van de webservice opgeven of u kunt een aangepaste grammatica maken die u met uw app installeert.
Vooraf gedefinieerde grammatica's
Vooraf gedefinieerde dicteer- en webzoekopdrachten bieden spraakherkenning voor uw app zonder dat u een grammatica hoeft te maken. Wanneer u deze grammatica gebruikt, voert een externe webservice spraakherkenning uit en worden de resultaten naar het apparaat geretourneerd.
- De standaard grammatica van vrije tekst herkent de meeste woorden en woordgroepen die een gebruiker in een bepaalde taal kan zeggen. Het is geoptimaliseerd voor het herkennen van korte zinnen. Gebruik dicteren in vrije tekst als u de soorten dingen die een gebruiker kan zeggen niet wilt beperken. Typische toepassingen zijn onder andere het maken van notities of het dicteren van de inhoud voor een bericht.
- De grammatica van de webzoekopdrachten, zoals een dicteer grammatica, bevat een groot aantal woorden en woordgroepen die een gebruiker kan zeggen. Het is echter geoptimaliseerd om termen te herkennen die mensen doorgaans gebruiken bij het zoeken op internet.
Opmerking
Omdat vooraf gedefinieerde dicteren en grammatica's voor zoeken op internet groot kunnen zijn en omdat ze online zijn (niet op het apparaat), zijn de prestaties mogelijk niet zo snel als bij een aangepaste grammatica die op het apparaat is geïnstalleerd.
Deze vooraf gedefinieerde grammatica's kunnen maximaal 10 seconden spraakinvoer herkennen en vereisen geen bewerking. Ze hebben echter wel verbinding met een netwerk nodig.
Aangepaste grammatica
Ontwerp en ontwikkel een aangepaste grammatica en installeer deze bij uw app. Het apparaat voert spraakherkenning uit met behulp van een aangepaste beperking.
Programmatische lijstbeperkingen bieden een lichtgewicht benadering voor het maken van eenvoudige grammatica's met behulp van een lijst met woorden of woordgroepen. Een lijstbeperking werkt goed voor het herkennen van korte, afzonderlijke zinnen. Het expliciet opgeven van alle woorden in een grammatica verbetert ook de nauwkeurigheid van de herkenning, omdat de spraakherkenningsengine alleen spraak moet verwerken om een overeenkomst te bevestigen. U kunt de lijst ook programmatisch bijwerken.
Een SRGS-grammatica is een statisch document dat, in tegenstelling tot een programmatische lijstbeperking, gebruikmaakt van de XML-indeling die is gedefinieerd door SRGS-versie 1.0. Een SRGS-grammatica biedt de grootste controle over de spraakherkenningservaring door meerdere semantische betekenissen in één herkenning vast te leggen.
Hier volgen enkele tips voor het ontwerpen van SRGS-grammatica's:
- Houd elke grammatica klein. Grammatica's die minder woordgroepen bevatten, bieden meestal nauwkeurigere herkenning dan grotere grammatica's die veel woordgroepen bevatten. Het is beter om verschillende kleinere grammatica's te hebben voor specifieke scenario's dan om één grammatica voor uw hele app te hebben.
- Laat gebruikers weten wat ze moeten zeggen voor elke app-context en schakel grammatica in en uitschakelen indien nodig.
- Ontwerp elke grammatica zodat gebruikers op verschillende manieren een opdracht kunnen uitspreken. Gebruik bijvoorbeeld de GARBAGE-regel om spraakinvoer te vinden die niet door uw grammatica wordt gedefinieerd. Met deze regel kunnen gebruikers aanvullende woorden uitspreken die geen betekenis hebben voor uw app. Bijvoorbeeld 'geef me', 'en', 'uh', 'misschien', enzovoort.
- Gebruik het element sapi:subset om spraakinvoer te koppelen. Dit element is een Microsoft-extensie van de SRGS-specificatie om gedeeltelijke woordgroepen beter overeen te laten komen.
- Vermijd het definiëren van woordgroepen in uw grammatica die slechts één lettergreep bevatten. Herkenning is meestal nauwkeuriger voor woordgroepen die twee of meer lettergrepen bevatten.
- Vermijd het gebruik van zinnen die vergelijkbaar klinken. Woordgroepen zoals 'hello', 'bellow' en 'fellow' kunnen de herkenningsengine verwarren en leiden tot een slechte nauwkeurigheid van de herkenning.
Opmerking
Welk type beperking u gebruikt, is afhankelijk van de complexiteit van de herkenningservaring die u wilt maken. Elk type kan de beste keuze zijn voor een specifieke herkenningstaak en mogelijk vindt u toepassingen voor alle typen beperkingen in uw app.
Aangepaste uitspraken
Als uw app gespecialiseerde woordenschat bevat met ongebruikelijke of fictieve woorden of woorden met ongebruikelijke uitspraken, kunt u de herkenningsprestaties voor deze woorden verbeteren door aangepaste uitspraken te definiëren.
Maak voor een kleine lijst met woorden en woordgroepen of een lijst met zelden gebruikte woorden en woordgroepen aangepaste uitspraken in een SRGS-grammatica. Zie het tokenelement voor meer informatie.
Voor grotere lijsten met woorden en woordgroepen, of veelgebruikte woorden en woordgroepen, maakt u aparte uitspraak lexicondocumenten. Zie Over Lexicons en fonetische alfabetten voor meer informatie.
Testing
Test de nauwkeurigheid van spraakherkenning en elke ondersteunende gebruikersinterface met de doelgroep van uw app. Met deze aanpak kunt u bepalen hoe effectief de interactie-ervaring voor spraak in uw app is. Krijgen gebruikers bijvoorbeeld slechte herkenningsresultaten omdat uw app niet luistert naar een algemene woordgroep?
Wijzig de grammatica om deze woordgroep te ondersteunen of geef gebruikers een lijst met ondersteunde woordgroepen. Als u al de lijst met ondersteunde woordgroepen opgeeft, moet u ervoor zorgen dat gebruikers deze gemakkelijk kunnen vinden.
Tekst-naar-spraak (TTS)
TTS genereert spraakuitvoer van platte tekst of SSML.
Probeer prompts te ontwerpen die beleefd en aanmoedigend zijn.
Overweeg of u lange tekenreeksen met tekst moet lezen. Het is een ding om naar een sms-bericht te luisteren, maar nog een andere om te luisteren naar een lange lijst met zoekresultaten die moeilijk te onthouden zijn.
Geef mediabesturingselementen op waarmee gebruikers TTS kunnen onderbreken of stoppen.
Luister naar alle TTS-tekenreeksen om ervoor te zorgen dat ze begrijpelijk zijn en natuurlijk klinken.
- Het samenvoegen van een ongebruikelijke reeks woorden of het spreken van deelnummers of interpunctie kan ertoe leiden dat een woordgroep onleesbaar wordt.
- Spraak kan onnatuurlijk klinken wanneer de prosodie of cadans verschilt van de manier waarop een moedertaalspreker een woordgroep zou zeggen.
U kunt beide problemen oplossen door SSML te gebruiken in plaats van tekst zonder opmaak als invoer voor de spraaksynthese. Zie voor meer informatie over SSML SSML gebruiken om gesynthetiseerde spraak te beheren en Referentie voor Speech Synthesis Markup Language.