Steeds vaker kom je sprekende en luisterende computers tegen. Als je meedoet aan een belspelletje op televisie. Als je een tekst dicteert aan je computer. Of als je belt naar de gemeente of de verzekeringsmaatschappij. De computer verstaat dan precies wat je zegt. Best knap, als je je realiseert dat een computer eigenlijk alleen in eentjes en nulletjes denkt. En helemaal bijzonder, als je beseft dat er ontzettend veel variatie is in spraak. Geen twee sprekers spreken precies hetzelfde. En zelfs iedere unieke spreker spreekt anders als hij boos, blij of verkouden is.

Hoe werkt een spraakherkenner precies? Voor een computer spraak kan herkennen moet hij eerst de nodige kennis van taal en spraak opdoen. Dit doet hij op basis van grote hoeveelheden teksten en spraakopnamen. Zo kan hij alvast leren hoe spraak klinkt en hoe de taal die hij moet gaan herkennen grofweg in elkaar zit. Helemaal begrijpen zal hij de taal nooit, maar hij kan wel gebruik maken van eerdere ervaringen bij het herkennen van nieuwe spraak. Hoe groter de databank met zulke ervaringen is, des te beter hij later zijn werk zal doen.
De klanken van spraak
Zo maakt hij alvast een akoestisch model waarin heel nauwkeurig staat hoe verschillende klanken worden uitgesproken. Omdat er veel variatie zit in de manier waarop verschillende mensen dezelfde klank uitspreken, is hier een speciale databank, een spraakcorpus, voor nodig. In dit spraakcorpus zitten van elke uitgesproken tekst veel verschillende versies, telkens door iemand anders ingesproken.
Van elk spraakfragment uit het corpus berekent de computer de akoestische kenmerken. Dit kan bijvoorbeeld de energie of de frequentie-inhoud zijn op een bepaald moment. Bovendien berekent hij de kans dat bij bepaalde waarden van die akoestische kenmerken een bepaalde klank hoort. Met dit akoestisch model zal hij later zoveel mogelijk mensen kunnen verstaan.
Fonemen

De klanken van een taal heten fonemen. Dit zijn de kleinste eenheden van spraak die een betekenisonderscheidende functie hebben. Een foneem is dus niet hetzelfde als een letter, de kleinste eenheid van schrift. De ‘a’ in ‘flat’, in ‘bak’ en in ‘raken’ spreek je namelijk telkens heel anders uit. Het is dezelfde letter, maar het zijn drie verschillende fonemen. De verschillende talen in de wereld hebben tussen de 15 en 75 fonemen. Het Nederlands heeft er ongeveer 40. Een stuk meer dan er letters in het alfabet zitten dus.
Patrick Wambacq, spraaktechnoloog en gewoon hoogleraar aan de Katholieke Universiteit Leuven, legt uit dat een akoestisch model nog niet zo makkelijk is gemaakt. “In de voorbeeldspraak moet elk foneem benoemd zijn. Meestal moet dit handmatig gebeuren, dus dit is erg omvangrijk werk dat veel geld kost. En áls de computer een deel van dit werk kan overnemen, moet alles op zijn minst handmatig gecontroleerd worden.” Pas als de computer weet welk foneem er bij welk stukje spraaksignaal hoort, kan hij leren voorspellen wat er gezegd wordt als hij een spraaksignaal te analyseren krijgt.
Een belangrijk onderdeel van de spraakherkenner is het lexicon. Dit is het woordenboek van de computer. In het lexicon staat van elk woord een fonetische transcriptie, een nauwkeurige weergave van de uitspraak. Sommige woorden kunnen op meerdere manieren uitgesproken worden. Zij hebben dan ook meerdere fonetische transcripties.
Woorden voorspellen

Aan de hand van een corpus vol teksten stelt de computer bovendien nog een taalmodel op. “In het taalmodel staat de waarschijnlijkheid van het samen voorkomen van een specifieke sequentie woorden”, aldus Wambacq. De computer analyseert dus de teksten uit de database. Hij berekent precies hoe vaak verschillende woorden na elkaar voorkomen.
Het meest populaire taalmodel is het N-gram. Hierbij gaat men ervan uit dat de kans dat een bepaald woord voorkomt afhangt van de N-1 woorden voorafgaand aan dat woord. Vaak is namelijk al vrij goed te voorspellen hoe een zin zal…. aflopen, puur op basis van voorafgaande woorden. “Veel gebruikt is het trigram”, legt Wambacq uit. Hierbij is dus N=3. “Bij het trigram wordt de waarschijnlijkheid van het voorkomen van een woord berekend op basis van de twee voorafgaande woorden.”
Aan de slag
Met het taalmodel, het akoestisch model en het lexicon op zak, kan de spraakherkenner aan de slag. Het binnengekomen spraaksignaal zal hij eerst voorverwerken. Het spraaksignaal knipt hij in stukjes, frames van 30 msec lang. Per frame berekent de computer de akoestische kenmerken. Hij stelt bijvoorbeeld vast hoeveel energie er in de verschillende frequentiegebieden zit. En of het frame een regelmatig geluidssignaal bevat, en dus van een stemhebbende klank is, of niet. Na elke berekening gaat hij door met het volgende frame dat 10 msec is opgeschoven, zodat opeenvolgende frames dus steeds 20 msec overlappen.
Na deze voorverwerking begint het echte spraakherkennen. De computer stopt de gegevens van het binnengekomen signaal in een zoekmachine. “De zoekmachine gaat dan de kenmerken uit de te herkennen spraak vergelijken met het akoestisch model”, legt Wambacq uit. “Met welk foneem hebben we waarschijnlijk te maken?” De spraakherkenner werkt dus met waarschijnlijkheden: hij selecteert verschillende woorden die het te herkennen woord zouden kunnen zijn. Hierbij houdt hij er rekening mee dat een bepaalde opeenvolging van fonemen wel een woord moet volgen, en dus in het lexicon moet staan. Ook kijkt hij goed naar het taalmodel om te zien welke woorden waarschijnlijk zullen volgen. Al die verschillende factoren kunnen de waarschijnlijkheid van een bepaald woord vergroten of verkleinen. Wambacq: “Uiteindelijk zal de computer kiezen voor de mogelijkheid met de hoogste waarschijnlijkheid.”

Onbekende woorden
Misschien heb je zelf wel eens meegemaakt dat een spraakherkenner heel andere woorden herkende dan je eigenlijk had gezegd. Ergens in het hele herkenningsproces is dan iets misgegaan. Het kan bijvoorbeeld zijn dat het woord dat je zei niet in het lexicon staat. Deze woorden heten OOV’s (out-of-vocabulary woorden). Eigennamen en plaatsnamen zijn vaak OOV-woorden. Het is immers onmogelijk om alle namen ter wereld in het lexicon op te nemen. Alleen de heel bekende staan er daarom in.
Wetenschappers hebben een oplossing gevonden om deze OOV’s toch goed te herkennen, legt Wambacq uit. “De zoekmachine geeft ook een betrouwbaarheidsmaat die aangeeft hoe zeker het systeem is van de herkenning. Als deze betrouwbaarheid erg klein is, kan het systeem besluiten dat het om een OOV-woord gaat.” De computer stapt dan over naar een andere strategie, waarbij hij geen woorden, maar fonemen herkent. “Dit systeem rijgt de individuele fonemen aaneen tot een nieuw woord dat niet in het lexicon staat. Daarna zet een foneem-naar-grafeem omzetter de klankenreeks om naar leesbare tekst.” Een grafeem is een schriftteken dat hoort bij een klank. Het Nederlands kent 36 grafemen, meer dus dan de 26 letters van het alfabet. Niet alleen ‘s’, ‘e’ en ‘v’ tellen namelijk mee, ook ‘ui’, ‘eu’ en ‘oe’ zijn grafemen.
“OOV-woorden kunnen in het Nederlands ook vaak het gevolg zijn van samengestelde woorden”, vertelt Wambacq. In het Nederlands kun je namelijk oneindig woorden aan elkaar plakken tot nieuwe woorden. Het bekendste voorbeeld hiervan is de ‘hottentottententententoonstelling’. “Zulke woorden kan een computer proberen te herkennen door de delen te herkennen als aparte woorden, die daarna alsnog samengevoegd worden tot het samengestelde woord.” Hiervoor moet de computer echter ook verstand hebben van de morfologie van de taal, bijvoorbeeld om te weten of er wel of geen tussen-s nodig is.

Ruis
Omgevingsgeluiden kunnen het de computer knap lastig maken om spraak te herkennen. Dit gebeurt vaak bij spraakherkenning in de auto of via de telefoon. Deze ruis verstoort de opname waardoor de computer moeilijker de kenmerken van de spraak kan berekenen. Wetenschappers hebben verschillende mogelijkheden bedacht om dit probleem aan te pakken.
Een eerste mogelijkheid is om een nieuw akoestisch model op te stellen op basis van een spraakcorpus met ruis. Dit werkt echter niet altijd, omdat er verschillende gradaties ruis zijn. Je kan nooit precies voorspellen hoeveel ruis de te herkennen spraak zal bevatten. “Een andere mogelijkheid is om te proberen de ruis te verwijderen voor de spraak herkend wordt”, legt Wambacq uit. “Hier heb je een goed gekozen ruisfilter voor nodig.” Ook dit werkt helaas niet perfect: het filter verwijdert de ruis nooit helemaal en verstoort zelfs een beetje het spraaksignaal.
“Een derde mogelijkheid is om alleen akoestische kenmerken uit het spraaksignaal te halen die niet door ruis verstoord worden”, aldus Wambacq. Als de herkenner alleen met deze kenmerken rekent, zal hij in principe geen last hebben van ruis. “Maar ook dit is niet goed mogelijk voor alle soorten ruis in alle omstandigheden.” Voorlopig zal de beste oplossing voor ruis dus afhangen van de toepassing van de spraakherkenner.
Zie ook:
- Spraakherkenner werkt bij ruis
- Wat zingt de operazangeres?
- Hoe kan je spraakopnames doorzoeken?
- Een goed gesprek met je computer
- Bellen met een pratende computer
Oeps: Onbekende tag `feed’ met attributen {"url"=>"https://www.nemokennislink.nl/kernwoorden/spraakherkenning.atom", “max”=>"3", “detail”=>"normaal"}