Difoonsynthese met MBROLA

Inleiding

Doel van dit onderdeel is om inzicht te krijgen in de aansturing van een difoonsynthesizer. Dit kan door de commando's voor de synthesiser in een tekstbestand te schrijven. Zo'n commandobestand kan ook gerealiseerd worden door een finite state automaat programma. Dat programma neemt de output van de grafeem-foneemomzetting en voegt daar informatie over duren en toonhoogte aan toe, volgens het format dat de synthesiser vraagt.

We gebruiken het spraaksyntheseprogramma MBROLA (ontwikkeld door Thierry Dutoit, Faculté Polytechnique de Mons), met de Nederlandse difoon-verzameling aangelegd door Arthur Dirksen en Ludmila Menert, voor hun toenmalige bedrijf Fluency Speech Technology (nu bij van Dale ondergebracht). MBROLA en de bijbehorende verzameling van spraakbouwstenen (de difonenset NL2) kun je zelf gratis downloaden.

Commando files

Je kunt in MRBROLA niet direct tekst invoeren die dan uitgesproken wordt. Er moet een zgn. command-file aangeleverd worden. Je moet er zelf voor zorgen dat de tekst met foneem-grafeemomzetting naar spraakklanksymbolen wordt vertaald, en dat de duur van elke klank en het toonhoogtepatroon waarmee die moet worden uitgesproken, bekend zijn en bij de klank in de command-file staan. 

Hier is een voorbeeld van een command-file (hallo.pho) voor het woord "hallo" beschikbaar, met bijbehorende spraak-uitvoer (hallo.wav). Je zult merken dat het dezelfde stem is die Fluency gebruikt.

Een command-file (zoals voor "hallo") bevat op een regel achtereenvolgens de informatie:

Hier is een voorbeeld van een command-file voor de uiting "Hallo!":

; Utterance: "Hallo!" Deze regel geeft commentaar. Commentaarregels beginnen met een puntkomma.
_ 100 100 120 De uiting begint en eindigt met een stilte van 100 ms; het symbool voor stilte is de "underscore"; aan het einde van de stilte (100%) is de toonhoogte 120 Hz
h 96 De [h] duurt 96 ms
A 48 De [A] duurt 48 ms
l 76 5 100 75 120 De [l] duurt 76 ms; na 5% van de duur is de toonhoogte gedaald naar 100 Hz en na 75% van de duur is die weer gestegen tot 120 Hz
o 224 25 85 De [o] duurt 224 ms; na 25% van de duur is de toonhoogte gedaald tot 85 Hz
_ 100 40 70 De uiting eindigt met een stilte van 100 ms
 

Op onze MBROLA voorbeeldenpagina vind je .pho files voor verschillende voorbeeldwoorden. Leerzaam!

Duren en toonhoogte (basistoekenning)

Duren

In MBROLA moet elk foneem gevolgd worden door een spatie en een duur in milliseconden. Hier zijn startwaarden voor monosyllabische woorden:

  zonder klemtoon met klemtoon einde woord
korte klinkers (A, O, Y, I, E) 80 120  
lange klinkers (a, o , y, i, e, u, 2, I:, Y:, O:) en tweeklanken (Ei, 9y, Au) 130 180 220
sjwa @ 60    

  begin woord midden woord
(dus niet van toepassing in monosyllaben)
einde woord in cluster
stemloze plosieven (p, t, k) fricatieven (f, s, S) 110 90 180 80
stemhebbende plosieven (b, d, g) fricatieven (v, z, Z)
h
90 60    
nasalen (n, m, N) 80 60 130, na @ 20 50
nj, tj, dj 130 130
j, w 60 50 40
r, l 70 50 40
R, L, W, J 110
x 110 180

Het plaatsen van de woordklemtoon is een niet-triviaal probleem. Bij onze monosyllabische woorden valt dat reuze mee natuurlijk. De klinkers hebben altijd de woordklemtoon. Maar er zijn een aantal bisyllabische woorden bij in monosyl. Dan moet de woordklemtoon meestal op de één na laatste lettergreep behalve als dat een sjwa is, en dan zijn er ook nog hiaat, pioen,...

Toonhoogtecontour

In MBROLA kan de toonhoogte per foneem geregeld worden. Daarbij kan worden aangegeven na welk percentage van de totale duur van het foneem een bepaalde waarde moet zijn bereikt.

a 130 0 100 betekent een a met een duur van 130 ms, waarbij na 0 % (dus direct) de waarde 100 Hz moet worden bereikt.

In a 130 100 100 moet de waarde van 100 Hz pas aan het einde van de klinker (100%) worden bereikt. 

Er kunnen meerdere momenten worden aangegeven: a 130 20 110 90 95 betekent dat na 20% de waarde 110 Hz moet zijn bereikt, en na 90% de waarde 95 Hz. Meer dan twee momenten definiëren is meestal niet zinvol.

Elk woord (of zin) wordt meestal voorafgegaan door een korte stilte (symbool _), bv:

_ 10 100 120  dat betekent dat aan het einde van de stilte de toonhoogte moet starten op 120 Hz.

Zo kun je ook op het einde van een woord (of zin) een stiltewaarde geven, bv _ 10 0 70. Als je in het woord verder geen toonhoogte informatie geeft dan zal het woord met een van 120 Hz tot 70 Hz dalende toonhoogte worden uitgesproken.

Omring je woorden met de bovengenoemde stilte segmenten.

Omdat je al weet waar de woordklemtoon ligt, kun je aan de betreffende klinker na de duurinformatie bijvoorbeeld nog 30 140 toevoegen. Dat betekent dat de toonhoogte in het woord eerst zal stijgen van 120 Hz (startwaarde) tot 140 Hz in de klinker met klemtoon, om vervolgens naar het einde toe tot 70 Hz te dalen.

Een .pho file kan meerdere woorden bevatten, hele zinnen of paragrafen. Op die manier laat het stuk van Kousbroek zich in één keer voorlezen.

Beluisteren

MBROLA op de MAC

Zie de cursussite.

MBROLA onder LINUX

MBROLA is op de CLZ direct onder Linux te gebruiken met de volgende command line (in je hoofddirectory):

$mbrola mbrola/nl2/nl2 mijnwoord.pho mijnwoord.wav

Dat wav-bestand wordt NIET direct hoorbaar gemaakt. Je kunt het hoorbaar maken via Kaboodle, Praat of de Audio Player. Als je Kaboodle één keer hebt opgestart is het voldoende om met je muis over het ikoon van een geluidsfile te bewegen om die hoorbaar te maken.

MBROLA onder Windows

MBROLA is beschikbaar onder Windows op de CLZ via Start > Applications > Mbrola 

Je kunt dan een .pho file inlezen en dan zal er via Mediaplayer direct output te beluisteren zijn.