Thursday, January 15, 2015

Talegenkendelse: Akustisk Model

Den sidste artikel beskriver, hvordan et software modul kaldet "Frontend" behandler et lydsignal, så det kan bruges til talegenkendelse. En kort opsummering lyder: lydsignalet deles i små samples, hvert sample bliver analyseret og konverteret til 39 beskrivende parametre (en vektor). Dvs. at et lydsignal bliver konverteret til en sekvens af vektorer og denne sekvens af vektorer fungerer som input til den akustiske model.
I denne artikel beskrives den akustiske model fra et generelt synspunkt med fokus på proces uden at gå ind i maskinlæringsteknikker.

Akustisk modellering

Den akustiske model skal konvertere sekvenser ef MFCC-vektorer (eller PLP-vektorer) til sekvenser af foner. Foner blev beskrevet i den første artikel og er en repræsentation af en lyd. F.eks. er [ˈlegə] den fonetiske repræsentation eller lydskriften af ordet 'ligge' [1].

Hvorfor foner? Hvorfor ikke ord eller bogstaver?

Der findes for mange ord i et sprog til, at man kan lave korrespondancen mellem lyde og ord direkte. Ordforrådet er simpelthen for stort og udtalen af et ord kan variere meget pga. dialekt, sociolekt alder mm. På dansk findes også sammensatte navneord, hvilket gør ordforrådet teoretisk uendeligt.
Ofte er det heller ikke muligt at høre forskel på ét ord eller flere ord i normal tale. F.eks. udtales ordet 'det', bogstavet 'd' og toordsforbindelsen 'det er' ens på flere danske dialekter.

Et relateret problem er årsag til at man ikke bruger bogstaver. Mange bogstaver udtales ikke i dansk. I eksemplet ovenfor udtales bogstavet 't' ikke, mens det udtales i 'tilbage', 'rette' og 'kat'. 
Bogstavet 'a' kan også udtales forskelligt. Det første 'a' i 'Danmark' udtales anderledes end det sidste 'a'. Igen er en direkte korrespondance eller mapning fra lyde til bogstaver meget kompliceret og upraktisk.

Derimod findes der en meget direkte korrespondance mellem foner og lyde. Samtidig findes der ikke et uendeligt antal foner. I IPA[2,3] findes der 107 foner (hvis man ikke medregner diakritika) og et enkelt sprog bruger kun en delmængde af IPA. 

Trifoner

Forsøg har vist at brugen af foner ikke er tilstrækkelig til at beskrive talesprog. Akustisk set er der væsentlig forskel på udtalen af [m] i ordene 'lampe' og 'bombe'. Årsagen til forskellen ligger i de fysiske taleorganer. Under udtalen af [m] er taleorganerne påvirket af den lyd, som blev udtalt lige inden [m] - i eksemplerne henholdsvis [a] og [o] - og den lyd, der skal udtales lige efter [m] - i begge eksempler [b]. Denne form for påvirkning kaldes for koartikulation. Taleorganerne når ikke de helt rigtige positioner for udtalen af [m] fordi de skal bevæge sig fra positionerne for [a] og [o] til [m]-positionerne. Inden taleorganerne når [m]-positionerne bevæger de sig mod positionerne for udtalen af [b]. 
For at tage højde for koartikulation, altså at den fonetiske kontekst påvirker udtalen af en lyd, deles foner i trifoner. Fonen [i] deles derfor i tre trifoner: [i_b], [i_i], og [i_e] som henholdsvis er starten på i-lyden, midten af i-lyden og slutningen af i-lyden. En trifonmodel for fonen [l] kan ses herunder:

En trifonmodel for [l]
I figuren er fonen [l] øverst, mens de tre trifoner, der beskriver [l], er nederst i figuren. Pilene er transitioner mellem de fonetiske repræsentationer. Dvs. at alle 3 trifoner skal findes i den rigtige rækkefølge i vektorsekvensen for at genkende et [l].

Modellen har 3 fordele:
  1. Konverterer en sekvens af trifoner til en fon
  2. Tager højde for lydens varighed
  3. Isolerer det mest stabile signal
Ad 1) Trifonmodeller er en vigtig del af den akustiske model, således at den akustiske model stadig konverterer sekvenser af vektorer til fonsekvenser. 

Ad 2) Udtalen af en lyd (såsom en fon eller en trifon) tager længere tid end det tidsvindue en enkelt vektor repræsenterer. Som nævnt i den forrige artikel beskriver en MFCC-vektor som regel 25 millisekunder og der vil være et mange-til-én forhold mellem vektorer og trifoner (og foner). Det er illustreret i talegenkendelsesmodellen:


Talegenkendelsesmodel med diskretiseret talestrøm


Ad 3) Hvis et signal er stabilt over en periode er det nemmere at genkende.  I figuren herunder kan man se at signalet ikke er regelmæssigt i starten af [i], men at amplituden øges indtil ca. midten af figuren. Derefter er signalet mere stabilt indtil amplituden igen falder i den sidste 1/4 af figuren.


Udtale af [i]
Signalet i midten af fonen er mest stabilt mens starten og slutningen er mere kaotisk. Dvs. at den trifon, som repræsenterer midten af en fon, er nemmere at genkende og det forbedrer genkendelsesgraden.
Talegenkendere som gør brug af trifonmodellering kaldes Context-dependent (CD) til forskel for Context-independent (CI) som modellerer foner direkte.


Akustisk modellering som klassificeringsproblem

I maskinlæring er der forskellige klassificeringsproblemer. Et af de mest brugte er sekvensklassificering, hvor man gerne vil klassificere hele sekvenser såsom fonsekvenser, tekststrenge eller billeder. Selvom det virker åbenlyst at håndtere akustisk modellering (konvertering af en vektorsekvens til en fonsekvens) som sekvensklassificeringer det desværre ikke muligt at anvende direkte. Konvertering er det operationelle ord, men kunne også være oversættelse. I sekvensklassificering sammenligner man sekvenser og vælger f.eks. den mest sandsynlige sekvens. Men det forudsætter at man har en mængde sekvenser først. Dvs. at en oversættelse fra vektorer til foner ikke kan anses som et sekvensklassificeringsproblem, men er et skridt man tager inden sekvensklassificering.
Af den årsag bruges mange metoder til at tage højde for kontekstafhængighed mellem lyde. Indtil videre har vi beskrevet hvordan man tager den første og anden afledte funktion af Mel- og PLP-koefficienter, LDA-analyse (forrige artikel under Detaljer) og sidst brugen af trifoner. Der vil være flere eksempler i senere artikler.


Detaljer

I detaljesektionen vil vi gå lidt mere i dybden med maskinlæring til akustisk modellering.

Klassificeringsoutput

Som nævnt er en fordel ved foner kontra ord og bogstaver, at der er færre foner. Da akustisk modellering er formuleret som et klassificeringsproblem er det vigtigt at vælge det rigtige output alfabet eller mængde af symboler. Symboler skal forstås som en generalisering af foner, ord og bogstaver og kunne også kaldes klasser (fra 'klassificering'). Det sæt man vælger, skal reflektere ægte, forekommende forskelle i lyden, men hvis sættet er for stort møder man et problem kendt som data sparsity eller datamangel. Hvis forskellene man gerne vil lære er små og der er få eksempler at lære fra, vil klassificeringen blive meget svær. Det er en bedre ide at begrænse antallet af klasser, så klassificeringen bliver mere præcis.

Senoner

Når man udvider antallet af outputklasser fra foner til trifoner støder man ofte ind i data sparsity-problemer. Hvis man har et sæt på 40 foner som skal udvides til trifoner ender man med et klassificeringsproblem med 64000 klasser (n^3).
For at realisere gevinster i klassificeringsnøjagtighed fra trifonmodellering, men ikke støde ind i datamangel, bruger man en teknik kendt som Semi-tied covariance. Teorien er at trifoner, som ligner hinanden i høj grad, bliver lagt sammen. F.eks. er trifonerne [i_m] og [i_n], som repræsenterer slutningen af [i] til henholdsvis [m] og [n], ofte så ens at de forveksles. Sammenlægningen er praktisk set mindre problematisk, da midten af fonen (trifonen [i_i]) stadig er unik. 
Pga. sammenlægningen kalder man nu trifoner for senoner,  da der ikke længere er direkte korrespondance mellem en fon og de senoner som trifonmodellen består af. Det er terminologi, som er ligeså forvirrende som fon/fonem distinktionen, men som er meget udbredt i udvikling og forskning og af den grund har vi medtaget forklaringen.

Alignering af vektorer og foner

For at lære korrespondancen mellem vektorer og foner skal man finde en alignering. Det foregår enten ved at bruge en eksisterende akustisk model til at generere aligneringen eller ved at starte fra bunden. 
Hvis aligneringen skal bygges op fra bunden starter man med at antage en ækvidistant alignering. Hvis en fonsekvens bestående af 150 foner skal aligneres med en vektorsekvens deles vektorsekvensen i 150 lige store dele. Derefter træner man en akustisk model. Denne akustiske model bruges til at generere en ny alignering, som vil være mere nøjagtig en den ækvidistante alignering. Derefter trænes endnu en akustisk model, som bruges til at lave endnu en alignering, på baggrund af hvilken man træner en akustisk model osv. osv. Denne iterative algoritme kaldes for Expectation-Maximisation algoritmen eller bare EM-algoritmen. Algoritmen stopper når aligneringen ikke ændrer sig mere eller klassificeringen ikke forbedres.

Vektoralfabet

Uanset om der er tale om MFCC-, PLP-, eller LDA-vektorer lider akustisk modellering under det faktum, at to vektorer aldrig vil være ens. To vektorer for den samme lyd kan have meget forskellige værdier og man står nu med udfordringen at finde en funktion der kan mappe en vektor, som man ikke har set før, til en fon. Dette faktum adskiller akustisk modellering fra stort set alt andet i sprogteknologien som beskæftiger sig med ord, ordklasser, syntaks, semantik mv.
Ved at antage at værdierne i vektorerne er produceret af en normalfordeling har man fundet en metode til at klassificere akustiske vektorer. I hver iteration af EM-algoritmen klassificerer man de vektorer man har i træningsdata til foner baseret på den alignering man har til rådighed. For hver fon estimerer man en normalfordeling (dvs. middelværdi og varians) for alle parametre. Når man skal udregne sandsynligheden for at en vektor skal klassificeres som en given fon udregner man sandsynligheden for alle parametre, givet de er produceret af de normalfordelinger, der er estimeret for den fon. De sandsynligheder kombineres til en enkelt sandsynlighed for hver vektor givet en fon. For den mest sandsynlige vektor givet en fon vælges denne fon som klassificering.

Er vektorparametre normalfordelt?

Ikke altid og det er ikke muligt at forudsige, hvorvidt de vil være det eller ej. Derfor bruger man ikke normalfordelinger, men gaussiske miksturer (en normalfordeling kaldes også en gaussisk fordeling). Ideen er, at man med flere gaussiske distributioner kan modellere distributioner, der ikke er normalfordelte.

2 normalfordelinger
Her ses 2 normalfordelinger med hver deres parametre. Vha. en matematisk formulering kan man kombinere 2 eller flere normalfordelinger til en gaussisk mikstur på trods af overlap mm. På den måde er man stadig i stand til at estimere gode modeller eller beskrivelser for parametre i akustiske vektorer.
1 gaussisk mikstur

Af denne grund kaldes klassiske akustiske modeller for Gaussian Mixture Models (GMM).

 

Friday, September 19, 2014

Talegenkendelse: Signalbehandling

Som nævnt i de tidligere blogartikler skal lydsignalet behandles inden det kan bruges som input til talegenkendelsessoftware. Den behandling omfatter
  1. Digitalisering af det analoge lydsignal og 
  2. Konvertering af den digitale optagelse til et format som TGK-software kan bruge

Digitalisering af lyd

Digitalisering er den samme process som optagelse af enhver anden lyd til en lydfil. Lyd kan fysisk forklares som lydbølger eller små forskelle i lufttryk. I en mikrofon sidder en trykfølsom membran, som kan registrere disse forskelle. Det giver en lydbølge[1] over tid som den herunder: 

Lydbølge for fonen [i] fra udtale af ordet cirkel
Linien i midten svarer til '0' eller neutral stilling for membranen i mikrofonen. Dvs. der ikke er registreret nogen ændring i lufttrykket. Det viser også, at både højere og lavere lufttryk registreres.
Udtalemæssigt er ændringen i lufttryk skabt af stemmelæberne[2] som i eksemplet herover svinger periodisk. Man kan se mod slutningen af lydbølgen, at de periodiske svingninger ændres ved udtalen af [r]-fonen og til sidst forsvinder periodiciteten på vej ind i [k]-fonen.

På computere kan man ikke behandle et kontinuerligt signal og derfor sampler man lydsignalet. I denne kontekst er et sample en måling af udsvinget af lydsignalet, så man konverterer altså lydsignalet til en sekvens af samples. Man skal sample (måle) i tilstrækkeligt små intervaller til, at man kan estimere det originale lydsignal fra de samples, man har målt. Så jo flere samples, des bedre er lydgengivelsen[v1] .
Normale sample rates er f.eks. 44100 Hz, 16000 Hz og 8000 Hz, hvor lydgengivelsen er bedst ved 44100 Hz. Det skal opvejes mod størrelsen af lydfilerne. 44100 Hz sample rate betyder, at man sampler 44100 gange i sekundet, hvilket giver store datamængder, som er tunge at processere senere i TGK-systemer. Ofte bruger man derfor 16000 Hz eller 8000 Hz sample rate.

Feature extraction

Feature extraction er navnet på den process, der konverterer et digitalt lydsignal til input til TGK-systemer. Den digitale lydoptagelse, som er en sekvens af samples, skal konverteres til en sekvens af feature vectors. En vector (DA: vektor) er en liste af parametre og i en feature vector kaldes de parametre features
Der er flere metoder til at udtrække features fra en digital lydoptagelse såsom Mel-Feature Cepstral Coefficients (MFCC)[v2], Linear Prediction Coefficients (LPC)[v3] og Perceptual Linear Prediction (PLP)[v4] coefficients. Den mest udbredte feature extraction-metode er MFCC extraction.
I MFCC extraction skal man sample en lydfil. Hver sample vil repræsentere 10-25ms lydvinduer kaldet sample-vinduet. Udover sample-vinduets størrelse er forskellen ved denne sampling, at sample-vinduet kan rykke sig mindre end vinduet i hver sampling, så der er en smule overlap mellem målingerne som vist herunder:
25 ms sample-vindue med et ryk på 20 ms resulterer i 5 ms overlap

For hvert sample udregner man et spektrum. Et spektrum af det løbende eksempel kan ses her:
Spektrum for fonen [i] fra udtale af ordet cirkel
De sorte sværtninger kaldes formanter. En formant er en del af frekvensbåndet, hvor der er meget energi og repræsenterer tonehøjde i vores eksempel. I et spektrum for en anden fon, f.eks. [e] i der vil formanterne placere sig anderledes:


Spektrum for fonen [e] fra udtale af ordet der
Læg mærke til, at bl.a. de to nederste formanter ligger tættere, mens den øverste formant fra [i]-fonen er mere tydelig end den øverste formant fra [e] i der. Et tværsnit af et spektrum viser en profil af den fon, der er blevet udtalt på det tidspunkt. Herunder er profilerne for fonerne [i] og [e]:

Spektral profil for [i]

Spektral profil for [e]

De to profiler er tydeligt forskellige. Ofte er forskellen mellem sonoranter, dvs. alle foner man kan 'synge' på såsom vokaler, men også [n], [m] og [l], tydeligst i de høje formanter, altså til højre i profilerne. Menneskeøret er dog mindst følsomt overfor formanter i høje frekvensbånd. Derfor filtrerer man et spektrum med en såkaldt Mel-filterbank[3]. 20-40 filtre ændrer et spektrum, så der tages højde for den frekvensmæssigt ulige følsomhed af det menneskelige øre[4].

Hvert spektrum skal konverteres til et cepstrum[5]. Et cepstrum er et spektrum-af-et-spektrum. I et cepstrum kan man adskille det man kalder kilden og filteret[6,v5] . I TGK er man interesseret i de værdier som parametriserer filteret, da de værdier ændres, alt efter hvilken fon er udtalt.
Cepstrum for vokalen [i]

Fra et cepstrum udtrækker man 12 koefficienter. Disse koefficienter sammen med et parameter for den samlede energi i lydvinduet udgør 13 parametre. For at tage højde for udviklingen af de parametre over tid tilføjer man både den første og anden afledede funktion af alle parametre til at modellere henholdsvis hastighed og acceleration. Det resulterer i de 39 parametre i MFCC feature vectors.


Detaljer

Alle billeder i denne blogartikel er lavet vha. Praat[7]. Det er et godt visualiseringsværktøj og kan også udtrække både MFCC- og LPC-vektorer.

Nyquist sampling teorem[8]

Hvis man antager, at den højeste frekvenskomponent i et lydsignal er 3000 Hz, skal sampling-frekvensen (hvor ofte man måler signalet) være minimum 2 * den højeste frekvenskomponent, hvilket er 6000 Hz. Mest information om foner er koncentreret i de lave frekvenser omkring 4000 Hz og under, hvilket gør det muligt at nøjes med en sample rate på 8000 Hz. Det er dog et minimum og ved en uheldig sampling kan det være umuligt at genskabe det originale kontinuerlige signal. For at undgå det problem plejer man derfor at bruge 16000 Hz sample rates til TGK.

Pre-emphasis

I tale er mest energi koncentreret i de lave frekvensbånd, men energien i de høje frekvensbånd er signifikante for at klassificere sonoranter. For at forbedre fonklassificering booster man energien i de høje frekvensbånd, inden man udregner et spektrum.

Fourier transformation

Udregningen af et spektrum kaldes en Fourier-transformation[9] eller Fourier-analyse. Fourier-analysen er implementeret på forskellige måder, men oftest, da man i TGK er interesseret i at processering skal foregå så tæt på realtid som muligt, bruger man algoritmen Fast Fourier Transform (FFT)[10].

Mel-filterbank

Menneskets følsomhed overfor toner er lineær under 1000 Hz, men logaritmisk over 1000 Hz. Melskalaen presser i praksis den højre del af de spektrale profiler sammen og skaber en mindre afstand mellem formanterne i de høje frekvensbånd. Der er mellem 20 og 40 filtre i en mel-filterbank og derfor er der mellem 20 og 40 parametre efter melfiltrering.

Log

Efter filtrering til melskalaen tager man logaritmen af de spektrale værdier. Det gør værdierne mere robuste ved senere processering.

Cepstrum

Ordet cepstrum kommer af at bytte om på bogstaverne i det engelske ord spectrum (s-p-e-c-trum => c-e-p-s-trum). Antallet af koefficienter eller parametre i et cepstrum afhænger af antallet af melfiltre. Eksperimenter har vist, at den første koefficient er følsom overfor f.eks. talerens afstand til mikrofonen og hvor højt vedkommende taler. Den første koefficient ignoreres derfor og de efterfølgende 12 koefficienter gemmes.



Kontekst-afhængighed

Parametrene i MFCC-vektorer varierer langsomt over tid, hvilket gør det unødvendigt at tage højde for kontekst-afhængighed. Den antagelse holder i stor udstrækning, men tager ikke højde for koartikulationseffekter[v6], som kan have en effekt på udtalen i et større tidsperspektiv, dvs. på tværs af foner. Et eksempel er udtalen af [n] i munde og i minde. Udtalen af [n] er forskellig, fordi den er 'farvet' af artikulationen af den foranstående vokal. Med overtydelig artikulation kan man for sig selv illustrere, at læbernes position under udtale af [n] afhænger af læbernes position under udtale af henholdsvis [i] eller [u]. 
For at tage højde for koartikulation bruger man ofte Linear Discriminant Analysis (LDA) til at transformere MFCC (eller LPC) parametre. En klassisk tilgang er at tage et kontekstvindue, f.eks. +/- 5 MFCC-vektorer til i alt 11 vektorer og konkatenere vektorerne sammen til én vektor med 429 (11*39) parametre og derefter bruger man LDA til at reducere antallet af parametre til f.eks. 40 parametre. Antallet af parametre efter analysen skal specificeres inden bergningerne starter. LDA-analysen finder de vigtigste parametre ved at udregne, hvilke parametre minimerer variansen af en underliggende gaussiske distribution og hvilke parametre maximerer adskillelsen af foner. 
Da forklaringen af LDA hænger meget sammen med den akustiske model. Yderligere detaljer om LDA udskydes til den artikel sammen med gennemgang af Dybe Neurale Net (DNN).