Wednesday, August 20, 2014

Hvordan virker talegenkendelse?

Del 2: Processen

I sidste artikel præsenterede vi artikelserien og beskrev talegenkendelse meget bredt. Koncepter som akustisk model, sprogmodel, leksikon, talegenkender og fon blev introduceret. I denne artikel beskrives talegenkendelsesprocessen, hvor den sidste blogartikel var mere praktisk og fokuserede på et system frem for processen.
 

Talegenkendelse og talesyntese

Også kendt som speech-to-text (STT) og text-to-speech (TTS). Begge teknologier bygger på den samme forståelse af, hvordan man omsætter tekst til lyd eller omvendt. 
Det er meget svært i et sprog som dansk, at oversætte direkte fra tekst til lyd. Man skal afgøre, hvordan et ord svarer til et segment af en talestrøm, hvilket er svært bl.a. pga. forskellige udtaler af ord såsom 'ikke', der kan udtales næsten som skrevet, men også som 'ik' eller 'ing' afhængigt af dialekt. Samtidig kan man i dansk spontant sammensætte navneord, hvilket betyder, der er uendeligt mange ord i dansk. Løsningen er at bruge en mindre enhed, såsom fonen, til at finde korrespondancen mellem tekst og lyd. Et eksempel med udgangspunkt i tekst kan ses herunder: 

Konvertering fra tekst til foner
Ofte er der et mange-til-en forhold mellem bogstaver og foner, hvilket i eksemplet skyldes stumt 'd'. Denne konvertering håndteres med en fonetisk ordbog, hvor alle ord, der kan genkendes, har en fonetisk transkribering.
Mellem foner og lyd er det nemmere at finde en korrespondance som ses herunder:

Taleproduktionsmodel (speech production model)
Ud fra denne model af processen kan man lave talesyntese ved at gå fra bunden til toppen (tekst-til-tale) eller fra toppen til bunden (tale-til-tekst). Denne model kaldes 'speech production model'.

Talegenkendelsesprocessen

Taleproduktionsmodellen skal udvides for at kunne bruges til automatisk talegenkendelse. For at behandle lyd på computere er man nødt til at skære lydsignalet i mindre vinduer. Disse vinduer kaldes samples og når man beskriver lydkvalitet taler man ofte om 'sampling rate'. Fra hvert lydvindue måler man en række koefficienter. To meget udbredte metoder er Mel Feature Cepstral Coefficients[1] (MFCC) eller Perceptual Linear Prediction (PLP) [v1]. Hvis man bruger MFCC målinger, får man for hvert lydvindue 39 værdier. Udvidelsen til taleproduktionsmodellen bliver således:

Talegenkendelsesmodel med diskretiseret talestrøm

Her bliver konverteringen fra tekst til foner vigtig, da det gennemtvinger et en-til-en eller en-til-mange forhold mellem lydvindue og fon. Talegenkendelsesprocessen skal beskrives med forskellige modeller. Konverteringen fra lydvinduer til foner modelleres af den akustiske model, mens konverteringen fra foner til ord håndteres af den fonetiske ordbog, også kaldet leksikonet. 

Genkendelsesproblemer

Mange hypoteser genereres af talegenkendelsesprocessen. Der er især 2 problemer med talegenkendelsesprocessen, som er årsag til det:
  1. Ordgrænser
  2. Homofoni
Der er ikke noget i en talestrøm, der signalerer ordgrænser. Da en talestrøm er kontinuerlig, er der ingen stilhed mellem ord og de steder, hvor stilhed kan forekomme, kan også være inden i et ord, f.eks. hvis man er usikker på, hvilken endelse eller ordbøjning man skal sige. Dvs. at alle sekvenser af ord, der kan genereres for et givent input bliver genereret.
Homofoni opstår f.eks. hvis to ord udtales ens. I daglig tale er f.eks. 'ligger' og 'lægger' homofoniske. Det fører derfor også til dannelsen af flere sætningshypoteser. For at kunne vælge mellem hypoteser er viden om grammatik nødvendig. Grammatik indkodes statistisk og modelleres således at hyppigt forekommende sekvenser af ord tildeles en højere sandsynlighed end sjældne sekvenser af ord. I vores eksempel vil 'Svend ligger på stranden' være mere sandsynlig end 'Svend lægger på stranden', som ikke er semantisk korrekt og derfor vil forekomme sjældnere. Den statistiske modellering af grammatik indkodes i sprogmodellen.

Kombinering

Kombineringen af informationskilder og modellering af selve processen foretages af en decoder. Den traverserer de hypoteser en talegenkender genererer, der er repræsenteret som et netværk, og kombinerer sandsynligheder fra alle involverede modeller. Decoderen gennemsøger ikke hele netværket, da talegenkendelse ellers vil være tids- og ressourcemæssigt for dyrt, men fjerner veje i netværket, der er yderst usandsynlige og behandler kun de mest sandsynlige sekvenser.



Detaljer

Hvis man vil undersøge mere på egen hånd er det godt at kende de engelske betegnelser. Her er en lille tabel over termer:
Sprogmodel - language model
Akustisk model - acoustic model
Leksikon/fonetisk ordbog - lexicon/phonetic dictionary
Talegenkendelse (TGK) - automatic speech recognition (ASR)
Ordgræner - word boundaries
Sammensatte navneord - compound nouns/composites
Homofoni - homophony
Talesyntese - speech synthesis



Talesyntese

Talesyntese udvider også den basale speech production model. Det har vist sig i talesyntese at det sværeste at syntetisere er overgangen fra en fon til en anden, mens det er nemmere at syntetisere midten af en fon, da signalet her er stabilt. Det er også kendt som difon syntese[2]. Der forskes lige nu i stokastisk-baseret syntese med bl.a. HMM[v2].  God dansk talesyntese kan opleves hos Ivona[3] og open source talesyntese kan downloades og installeres fra eSpeaks website[4]. eSpeak kan integreres med windows, men det kræver en del viden at installere og integrere med Windows SAPI.

Sprogmodel

Markovmodeller bruges til at estimere sandsynligheder for ordsekvenser. Ny forskning bruger recurrent neural nets eller recursive neural nets, men denne teknik viser ikke altid en forbedring over den klassiske metode.
Eksperimenter har vist at det giver gode resultater samtidig med at være robust hvis man estimerer en sekvens vha. 2. ordens Markovmodeller. Det betyder man udregner sandsynligheder for enkeltord ved at bruge de foregående 2 ord som kontekst. For at udregne sandsynligheden for en sætning ganger man disse sandsynligheder sammen. Det giver problemer, hvis man ikke har et ord i sine træningsdata, og sandsnyligheden derfor bliver 0. Det vil blive beskrevet i artiklen om sprogmodeller.

Decoder

Der er 2 parametre, der styrer traverseringen af et netværk. Den ene 'pruning', som sætter en grænse for, hvor sandsynlig en vej i netværket skal være for at blive yderligere beregnet. Den anden er 'beam size', som igen er en nedre sandsynlighedsgrænse for, hvor sandsynlig en delvis hypotese skal være hvis den skal beregnes yderligere. En analogi er at pruning fjerner veje i netværket, der er usandsynlige, mens beam size, skridt for skridt gennem netværket, sammenligner, hvor sandsynlige delvise hypoteser er og kun fortsætter beregninger ud af veje der er tilgængelige fra de mest sandsynlige hypoteser.


Spørgsmål og kommentarer er velkomne!