Veel GPS-systemen maken gebruik van spraakreproductie. Zij stellen de spraak samen door vooraf ingesproken woorden en zinsdelen te combineren tot een nieuwe zin. Zo kan de boodschap “na 500 meter rechts afslaan richting Apeldoorn” bestaan uit de losse onderdelen “na”, “500”, “meter”, “rechts afslaan richting” en “Apeldoorn”. Zelfs als je de vaak terugkerende onderdelen (“Na”, “meter” en “rechts afslaan richting”) haalt uit een opname van de zin “Na 200 meter rechts afslaan richting Tilburg” zal de aandachtige luisteraar toch meteen door hebben dat er met de zin “Na 500 meter rechts afslaan richting Apeldoorn” toch wel wat geknoeid is.

Spraakreproductie is heel goed bruikbaar voor GPS-systemen. Het systeem hoeft maar een beperkt aantal variabele delen (vooral gemeentenamen) in een beperkt aantal contexten te kunnen uitspreken. Maar wat nu als je het GPS-systeem ook wil laten zeggen in welke straat je rijdt of welke borden je aan moet houden? Het wordt te veel werk om al deze variabele delen van te voren in te spreken. Door het grote aantal variabele delen is dit systeem ook niet bruikbaar voor veel informatiesystemen of voor bijvoorbeeld een voorgelezen krant voor blinden. Spraaksynthese kan in deze gevallen een uitkomst bieden.
Bij spraaksynthese imiteert de computer een mens die de tekst voorleest. De boodschap is nu alleen als tekst aanwezig en de spraaksynthesizer zet die tekst vervolgens om in spraak. Spraaksynthese is een ingewikkeld proces dat grofweg is op te delen in drie deelprocessen: de fonetische transcriptie, het berekenen van de prosodie en de generatie van spraak. Laten we deze deelprocessen één voor één bespreken.
Fonetische transcriptie van de tekst
Een woord in een tekst is niets anders dan een rijtje letters, cijfers of speciale symbolen (zoals & of -). Al deze symbolen worden in de taalwetenschap grafemen genoemd. Een geschreven woord is dus een rijtje grafemen dat samen de orthografische transcriptie vormt, de tekst volgens de Nederlandse spellingsregels.
De grafemen komen vaak, maar zeker niet altijd, overeen met de klanken van het woord als je het uitspreekt. De “g” in “gram” klinkt bijvoorbeeld heel anders dan de “g” in “horloge”. Zo kent het Nederlands in totaal zo’n 40 klanken ( fonemen genoemd). De uitspraak van woorden kan worden beschreven in een rijtje fonemen, dat de fonetische transcriptie genoemd wordt.

In de meeste talen, waaronder het Nederlands, is geen eenvoudige één-op-één omzetting mogelijk van de grafemen van een tekst naar de fonemen van de uitspraak van die tekst. Neem als voorbeeld maar de woorden “dier” en “meid”. De letter “d” wordt in het eerste woord uitgesproken als een /d/, maar in het tweede woord als een /t/. De letters “i” en “e” worden in beide woorden niet afzonderlijk uitgesproken, maar vormen 2 verschillende fonemen. Het is dus lang niet altijd mogelijk de klanken die bij bepaalde letters horen simpelweg achter elkaar op te zeggen om het woord te vormen.
Als kind leer je hoe je woorden moet uitspreken en hoe ze geschreven worden. We hebben dus geleerd om een orthografische transcriptie om te zetten in een fonetische transcriptie. Deze omzetting wordt g2p-omzetting genoemd, naar het Engelse Grapheme-to-Phoneme.
Een spraaksynthesizer bevat dus een g2p-omzetter die eerst de afzonderlijke woorden van een tekst in fonemen omzet. Daarna doet hij nog wat aanpassingen om de fonetische transcripties van de woorden goed op elkaar te laten aansluiten. Wanneer je bijvoorbeeld het woordje “aan” los uitspreekt, eindigt het op een /n/. Maar wanneer je zegt “aan bepaalde…”, dan eindigt het op een /m/, omdat je je lippen alvast op elkaar drukt voor /b/ van “bepaalde”.
Berekening van een geschikte prosodie
Het is uiteraard niet de bedoeling dat een zin als een opsomming van woorden gaat klinken. Belangrijke woorden moeten benadrukt worden, op sommige plaatsen moet een korte pauze tussen twee woorden worden ingevoegd, etc. Al deze elementen dragen bij aan wat de prosodie van de spraak genoemd wordt. De prosodie is vaak kenmerkend voor een taal (vergelijk het Nederlands maar eens met het Chinees) of een accent (denk maar eens aan het Limburgse accent).
Een belangrijk aspect is de evolutie van de toonhoogte. De gemiddelde toonhoogte bepaalt de stem van de spreker, maar de schommelingen van de toonhoogte in de spraak van een spreker bepalen de prosodie van de spraak. Door een plotselinge stijging (en ook soms daling) van de toonhoogte kun je de klemtoon leggen op een lettergreep en door de toonhoogte aan het eind van de zin te laten stijgen kun je een vraagzin maken. Probeer maar eens hoeveel verschillende betekenissen je het woordje “ja” kan geven als je het met verschillende toonhoogte-verlopen uitspreekt!
Hoe lang een bepaalde lettergreep in natuurlijke spraak duurt, hangt af van verschillende factoren. Zo speelt het aantal lettergrepen in het woord mee, maar ook de vraag of het woord waarin de lettergreep voorkomt beklemtoond is in de zin en of de lettergreep de klemtoon van het woord draagt. Daarnaast spreken menselijke sprekers sommige woorden vloeiend achter elkaar, terwijl tussen andere juist een korte pauze wordt ingelast.
Een spraaksynthesizer bevat een prosodische module die, nadat de g2p-omzetting heeft plaatsgevonden, een passend toonhoogteverloop, passende duren voor de lettergrepen en passende pauzes voor tussen de woorden berekent. Voor een menselijke spreker is het kiezen van de geschikte prosodie een makkie, wij begrijpen immers precies wat er gezegd wordt. De computer snapt dit niet en zal dus zijn keuzes moeten maken op basis van een grammaticale analyse van de zin. Hierdoor wordt voor lange, complexe zinnen vaak een minder geschikte prosodie berekend dan voor korte zinnen. Een ander gevolg is dat alle zinnen met ongeveer dezelfde structuur ook dezelfde prosodie meekrijgen, waardoor de spraak kan gaan klinken als een kind dat net heeft leren lezen. Deze beide problemen zijn gelukkig redelijk te voorkomen als de spraak met behulp van een corpus samengesteld wordt.
Spraakgeneratie met behulp van een spraakcorpus
Voor de generatie van spraak maakt de spraaksynthesizer, net als bij reproductie, gebruik van vooraf opgenomen natuurlijke spraak. In een studio heeft één persoon een groot aantal paragrafen en korte zinnen voorgelezen. Deze spraakopnames worden opgeslagen in een corpus, een grote database. Uit deze spraak kan de synthesizer naast woorden en woordgroepen ook delen van woorden selecteren, zoals fonemen, foneemparen of lettergrepen. Als het woord “appartementsgebouw” dan niet voorkomt in de opgenomen spraak, kan het alsnog worden samengesteld uit delen van “apart”, “element”, “misgegaan” en “bebouwd”.
Omdat in een spraakcorpus van elk foneem meestal wel enkele duizenden exemplaren voorkomen, heeft de computer veel mogelijkheden om een zin samen te stellen. Om deze keuze te kunnen maken beschikt de spraaksynthesizer over snelle algoritmes die snel berekenen welke fonemen het meest geschikt zijn voor die zin. De algoritmes letten er ten eerste op dat de geselecteerde onderdelen taalkundig en prosodisch zoveel mogelijk lijken op de onderdelen van de te realiseren spraak. Vervolgens letten ze er ook nog op dat de verschillende onderdelen akoestisch gezien goed op elkaar aansluiten, zodat je geen hoorbare overgangen kunt horen. Alle mogelijk bruikbare fonemen krijgen zo een gewicht mee van de synthesizer zodat het best passende foneem gekozen kan worden en de spraak zo natuurlijk mogelijk zal klinken. Het spraakcorpus zal dus groot genoeg moeten zijn om steeds geschikte onderdelen te kunnen vinden, maar niet zo groot dat het zoeken naar het meest geschikte onderdeel te lang gaat duren.
Stand van zaken
De duurdere GPS-systemen beschikken tegenwoordig over een spraaksynthesizer. Dat lijkt vreemd, omdat de g2p-omzetting van namen vaak vreemde resultaten oplevert. Zo kan “Deventer” worden voorgelezen als “de venter” en “Decoubertin” (een Franse naam) als “De-kou-ber-tin”. De taalkundigen van TeleAtlas hebben er echter voor gezorgd dat de GPS beschikt over de juiste fonetische transcripties van namen, zodat de g2p-omzetter niet meer nodig is. Doordat een GPS geen ingewikkelde zinnen hoeft voor te lezen levert ook de berekening van de prosodie geen problemen op.
In gesproken informatiesystemen of voorgelezen kranten zorgen eigennamen nog wel voor veel problemen. Zo is het erg irritant als de gesproken krant het steeds heeft over “Leeturmuh” in plaats van de Belgische eerste minister Leterme. Ook komen er in de krant vaak lange, complexe zinnen voor, waarvoor het systeem niet altijd een juiste prosodie kan berekenen. Soms is het dan zelfs lastig om voldoende geschikte onderdelen in het corpus te vinden. Af en toe kunnen hierdoor nog hoorbare ‘missers’ zitten in de voorgelezen tekst, al is dit zelden nog echt storend.
Zie ook:
- ‘Had hij maar een fluisterstand’ (Kennislinkartikel)
- Veel informatie over spraaksynthese