Talesyntese og talegenkendelse

I talesyntese omsætter man tekst til tale ved hjælp af computeren. I talegenkendelse omsættes tale til tekst.

Af Philip Diderichsen og Andreas Søeborg Kirkedal

Indledning

Sprogteknologien talesyntese, som omsætter tekst til tale maskinelt, har eksisteret i en længere årrække og været en stor hjælp i forbindelse med oplæsning for svagtseende og læsesvage.

Talegenkendelse har haft mere begrænset succes, men er nu så småt på fremmarch, især på visse offentlige arbejdspladser. Talegenkendelse omsætter tale til skrift ved computerens hjælp.

Det bruges dels til at aflaste, dels til at effektivisere hvor der skrives meget. De to teknologier indgår som komponenter i det der kaldes dialogsystemer, dvs. mere eller mindre ’intelligente’ digitale assistenter, som man kan stille spørgsmål til eller få til at hjælpe sig, fx på smartphones.

Dialogsystemer begynder nu at dukke op i dansktalende versioner. Apples digitale assistent, Siri, er lanceret på dansk i 2015.

Googles tilsvarende system, Google Assistant, er lanceret i en dansk version i september 2018.

Microsofts Cortana (opkaldt efter en kunstigt intelligent karakter i Microsofts computerspilserie Halo) er også på vej i en dansk version.

Den tid hvor talesyntese og -genkendelse kan komme til at spille en større rolle for brugen af dansk, er således ved at tage sin begyndelse.

Talesyntese

Talesyntesesystemer kaldes også tekst-til-tale-systemer eller oplæsningssystemer.

En tidlig pioner var videnskabsmanden Christian Gottlieb Kratzenstein, der var professor i eksperimentel fysik ved Københavns Universitet i 1700-tallet. Han forsøgte, med begrænset succes, at skabe vokallydene a, e, i, o og u ved hjælp af orgelpibelignende resonatorer i forskellige former.

En senere generation af kreative fonetikere, lingvister og ingeniører ved samme universitet byggede med loddetin og elektroniske komponenter en maskine hvor man kunne finindstille en mængde overtoner i et antal tidsafsnit således at en kort lyd kunne formes til en sætning (fx, med karakteristisk studentikos humor, sætningen Luk mig ud!).

Talesyntese foregår selvfølgelig i computere nu. Men hvordan?

For at få en computer til at omforme et tekstinput til talesprog får man den i grove træk til at køre et program i de følgende fire trin, der forklares nærmere nedenfor:

  1. en tekstnormalisering
  2. en fonetisk analyse
  3. en prosodisk analyse
  4. et databaseopslag efter lydstumper

Tekstnormalisering er et helt nødvendigt trin for et talesyntesesystem der skal kunne ‘oplæse’ tekst som det ikke har ‘set’ før.

Et godt eksempel på det er tal. Hvordan skal fx tallet 8900 udtales? Tallet skal omsættes til enkeltord for tallets komponenter – men hvilke?

Afhængigt af om der er tale om Randers’ postnummer, et beløb eller måske endda en pinkode, bliver ordene helt forskellige. Og en skærmlæser for svagtseende der fx siger at Tricktyve stjal otte ni nul nul kroner, kan være svær at tage alvorligt. På samme måde vil det være uheldigt hvis den oplæser adressen Otte tusinde ni hundrede Randers.

Et andet aspekt af tekstnormalisering er at håndtere homografer (dvs. forskellige ord der staves ens, men lyder forskelligt). De skal gøres entydige.

Man kunne fx forestille sig en tekst om bander der bander meget.

Her er der brug for at køre en ordklasseanalyse for at kunne give substantivet én udtale og verbet en anden. Det vil dog ikke være nok i sætninger som Du får kost og logi hvis du kan svinge kost og spand, hvor kost i begge tilfælde er et substantiv. Så må der mere avanceret, semantisk (betydningsorienteret) databehandling til.

Den fonetiske analyse er nødvendig fordi det desværre ikke er alle ords udtale der kan slås op i en ordbog, selv i kommercielle tekst-til-tale-systemer med store udtalebaser med ord.

Det er det evige problem med ordbøger af enhver art: Der vil altid være ord som ordbogen ikke dækker. Det kan fx være nydannede eller nyindlånte ord i sproget.

Navne er en anden stor ordgruppe der næppe kan dækkes af nogen ordbog. Her må systemet analysere de tekststrenge (sekvenser af bogstaver og tegn) det ikke kender og finde en kobling mellem bogstaver og enkeltlyde.

Denne kobling kan enten findes ved hjælp af manuelt opstillede eller statistisk baserede omsætningsregler, ligesom i maskinoversættelse.

I den manuelle tilgang formulerer en sprogforsker regler for hvordan de enkelte bogstaver omsættes til forskellige lyde alt efter hvilke bogstaver der kommer før og efter.

I den statistiske tilgang tæller man de enkelte bogstav-lyd-relationer i en stor samling lydskrevne tekster hvor bogstaver og lyde allerede er koblet sammen. Fx vil sådan en optælling vise at bogstavet i næsten altid udtales med en e-lyd når det står før ng (som i ting), men næsten altid som et ’rigtigt’ i før b (som i skib).

Webappen Bogstavlyd

Bogstavlyd er en webapp hvor man kan udforske omsætningen mellem bogstaver og lyde i dansk.

Både den regelbaserede tilgang og den statistiske tilgang munder således ud i et system af omsætningsprincipper.

Omsætningsprincipperne kan systemet bruge til at omsætte de ukendte tekststrenge til lydskrift.

Sammensatte ord er også en klassisk del af udfordringen med ord der ikke står i ordbogen, og problematikken hænger sammen med det næste trin i processen: den prosodiske analyse.

Mange sammensatte ord vil være nydannede og dermed ‘ukendte’ for et tekst-til-tale-system. Det gælder fx omsætningsprincip i dette afsnit. Man ville kunne køre en analyse og splitte sammensatte ord op i deres enkeltkomponenter, her fx omsætning og princip; men det ville ikke slå til.

Sammensætninger udtales (i de fleste tilfælde!) netop ikke som to enkeltord efter hinanden. Orddelene får nemlig stærkere og svagere tryk afhængigt af deres placering i sammensætningen: I fx

  • den dumme de (fx “Hørte du om den dumme bøde jeg fik forleden?”)
  • den dummebøde (fx “Hvis han er modig, finder han sig ikke i den dummebøde”)

er trykket på bøde helt forskelligt – de stærkeste tryk falder på hhv. dum og og den og dum.

Ordenes tryk er en del af en sætnings prosodi. Prosodien omfatter sætningens tonale og rytmiske aspekter i det hele taget.

Prosodi er den del af fonetikken der beskæftiger sig med betydningsskabende lydfænomener der rammer flere lyde (som når man ændrer trykket og dermed ændrer ordet billigst til ordet bilist) – i modsætning til de betydningsændringer der opstår når man fx udskifter et b med et p (og dermed fx ændrer ordet bil til ordet pil).

En ellers korrekt streng af lyde kan blive helt uforståelig hvis fx trykkene i sætningen er placeret forkert, og derfor er prosodien meget vigtig for talesyntese.

Et tekst-til-tale-system vil derfor udføre så god en prosodisk analyse det nu kan, og markere tryk, tone og forkortede og forlængede lyde i lydskriften fra trinnet før. Herefter har systemet en komplet fonetisk transskription af teksten og er klar til at sætte lyd på.

Lydgenerering er sidste trin i talesyntesen (outputtrinnet) der finder og kombinerer de rigtige lydstumper til en færdig fonetisk streng (dvs. sekvens af sproglyde). Der er to overordnede måder at gøre det på: syntese med såkaldte difoner og syntese med større lydstumper.

Difoner er, som navnet måske antyder, lydenheder bygget af to lyde, således at de består af sidste del af den første lyd og første del af den anden lyd. På den måde er det centrale i lydenheden overgangen mellem to lyde.

Der findes selvfølgelig flere overgange mellem to lyde end der findes enkeltlyde. Derfor vil en liste over difoner være større end en liste over enkeltlydene i et sprog, men så får man til gengæld også den vigtige overgang mellem lydene med.

Systemet bygger altså den fonetiske streng ved at tage starten af den første lyd, sætte passende difoner på og til sidst sætte slutningen af den sidste lyd på.

Herefter er difonsyntesen nødt til at modificere strengen ved at sætte tryk, ændre tonegangen og forlænge og forkorte visse lyde for at sætningen kan få den rigtige prosodi.

Syntese med større lydstumper følger det samme princip, men opererer med en større database fordi man så vidt muligt forsøger at få prosodien med i de lydstumper man opererer med.

Man prøver at putte så lange lydstumper som muligt i sin database – gerne flere ord lange. Hvilke lange lydstumper der kommer med i databasen, vil især afhænge af deres hyppighed i talesproget. Lydstumperne laves ved at indlæse noget tekst designet til at have de rigtige lydsekvenser og så klippe dem ud af optagelsen.

Dansk talesyntese udbydes bl.a. af det polske firma Ivona Software, det danske firma Dictus ApS, Nationalbiblioteket for mennesker med læsevanskeligheder, Nota, og Digitaliseringsstyrelsen (adgangforalle.dk).

Næste generation af tekst til tale

En ny type talesyntese har set dagens lys i to forskellige modeller kaldet henholdsvis WaveNet og Tacotron. Til forskel fra den syntese der er beskrevet her på siden, bygger WaveNet og Tacotron på et system af omsætningsprincipper direkte fra tekst til lydbølger.

Systemet bliver mere simpelt fordi der kun skal udvikles et enkelt sæt omsætningsprincipper i stedet for 4 (tekst → normaliseret tekst → foner → prosodi) og der skal ikke samles en dækkende database af difoner. Samtidig lyder talesyntesen mere naturlig end den difon-baserede syntese. Tacotron er udviklet af Google og har været i Googles produkter fra 2018 og findes derfor også til dansk i smartphones.

Digitale assistenter til smartphones er således på vej i danske versioner, eller findes allerede, og her er talesyntese en vigtig komponent. Det samme er talegenkendelse.

Talegenkendelse

Talegenkendelse er den proces hvor man omsætter sproglyde til tekst.

I 1952, trekvart århundrede efter Alexander Graham Bell opfandt telefonen, opstod det første talegenkendelsessystem i Bell Laboratories. Det kunne genkende tal udtalt af en enkelt taler.

I 1962 udviklede IBM et system (Shoebox) der kunne genkende 16 engelske ord.

Det første talegenkendelsessystem til almindelige brugere, Dragon NaturallySpeaking fra Nuance, blev lanceret i 1990’erne. NaturallySpeaking har bl.a. drevet talegenkendelsen i Apples Siri.

For at omsætte sproglyde til tekst skal man:

  1. optage og behandle lydsignalet
  2. afkode hvilke lyde der er blevet udtalt
  3. omsætte sproglydene til mulige tekststrenge
  4. vælge den mest sandsynlige tekststreng.

Først optages lydsignalet af en mikrofon. Derefter behandles lydsignalet ved at blive klippet i små lydbidder a ca. 20 millisekunder.

Afkodningen af hvilke lyde der er blevet sagt, foregår ved at hver lydbid skal klassificeres som en fon (sproglyd). Foner er groft sagt bogstaverne i et lydskriftalfabet.

Lydskrift

Eksempler på lydskrift fra Den Danske Ordbog: Ordet vært bliver i lydskrift til [ˈvæɐ̯d], og hver bliver til [ˈvεˀɐ̯].

Basisenheden i talegenkendelse er foner, ikke ord, fordi et sprog i princippet har uendeligt mange ord (man kan altid lave nye sammensatte ord osv.).

Inventaret af foner er fast (der er brug for ca. 40 til de fleste sprog). Med dem kan man udtrykke alle ord på de fleste sprog.

Næste skridt er at omsætte fra lydsignal over foner til almindelig tekst.

Uheldigvis kan man ikke entydigt klassificere en lydbid som en fon, men kun med en vis sandsynlighed. Fon for fon er forskellen i udtalen af ordene værter og hvert år fx meget lille.

Næste trin er at vælge den mest sandsynlige tekststreng.

I stedet for at vælge den mest sandsynlige fon til hver lydbid og konvertere én sekvens af lydbidder til én sekvens af foner, konstrueres der derfor mange forskellige fonsekvenser med forskellige sandsynligheder.

Fonsekvenserne konverteres til ordsekvenser vha. en sprogteknologisk udtaleordbog, der kobler sekvenser af foner til ord. Resultatet er igen et stort antal ordsekvenser med forskellige sandsynligheder.

Der er to udfordringer i opdelingen af talen i ord. For det første er der ingen lydlig markør af ordgrænser i talesprog. Derfor vil fonsekvensen for hvert år producere diverse andre muligheder både med og uden mellemrum: vær dåre, hver tår, værter m.fl.

For det andet svarer én fonsekvens ofte til forskellige homofoner (dvs. forskellige ord der lyder ens, men staves forskelligt, fx hver, vejr, vær og værd).

I sidste ende er sandsynligheden for en ordsekvens en kombination af sandsynlighederne for fonerne og sandsynlighederne for de mere eller mindre enslydende ord og ordkombinationer de ville kunne danne.

Til slut beregnes den mest sandsynlige tekststreng. Fx er hvert år man lever mere sandsynlig end hver tår man lever eller vejr tår man lever.

Både sandsynligheden for enkeltord ud fra fonsekvenser og sandsynligheden for sekvenser af ord skal altså beregnes, og det er ikke ligetil. Der skal laves en liste med alle sproglydes sandsynligheder i sproget. Denne liste kaldes en akustisk model.

Der skal laves en tilsvarende liste over gængse ords sandsynligheder. Det kaldes en sprogmodel.

Man beregner en akustisk model med en stor samling tekst med tilhørende lydoptagelser. Inden man beregner sandsynligheder, bruger man udtaleordbogen til at oversætte teksten til en fonetisk transskription.

Ordet hvert bliver fx oversat til fire foner – en v-fon (det stumme h forsvinder), en æ-fon, en r-fon og en d-fon (t’et lyder som et d sidst i et ord). Dermed bliver det muligt at beregne sandsynligheden for at en given lydbid repræsenteres af en bestemt fon.

En udfordring er at en vokal plejer at være længere end en konsonant, så man skal udregne en synkronisering af den fonetiske transskription og lydbidderne.

En anden udfordring kaldes koartikulation. Det er den effekt en sproglyd har på andre sproglyde. Fx er der en koartikulationseffekt på udtalen af k i kom og kim fordi bl.a. læberne er positioneret forskelligt pga. den efterfølgende vokal (runde ved o’et og brede ved i’et).

På samme måde er vokalen i kom ‘farvet’ af k og m og derfor anderledes end o i sold. Derfor opdeler man i praksis foner i start-, midter- og slutfon. Start- og slutfoner opdeles yderligere alt efter hvilken fon der er i nærheden.

Disse underinddelinger kalder man trifoner, og det har vist sig at være mere robust og nøjagtigt at bruge trifoner end at bruge foner.

En sprogmodel beregnes ud fra et korpus af ren tekst ved at lave en liste af sandsynligheder for små stumper løbende tekst på nogle få ord hver.

En sætnings sandsynlighed kan så beregnes som produktet af sandsynlighederne for de stumper den består af, som beskrevet på siden om stavekontrol.

Her er det vigtigt at den tekst man bruger, minder om det man gerne vil genkende. Hvis man vil genkende lægediktater, skal man træne sin sprogmodel på lægediktater og ikke på fx H.C. Andersens eventyr.

I Danmark er Dragon fra Nuance Communications det mest udbredte talegenkendelsessystem og sælges af KMD, IBM, Dictus og Max Manus m.fl. Andre systemer udbydes af eFaktum, Mirsk Digital og SubReader. Teknologien har i en årrække været i brug til diktering af Folketingstidendes referater af Folketingets forhandlinger og andet.

Et andet område hvor man i Danmark arbejder på at indføre talegenkendelse, er på hospitaler til lægediktering. Man vil også gerne udbrede teknologien i kommuner hvor der skrives mange rapporter.

Indførelsen af talegenkendelse er som regel begrundet i en forventning om effektivisering baseret på at man kan indtale tekst hurtigere end man kan skrive.

Når bl.a. Dansk Sprognævn i disse år interesserer sig for taleteknologi, er det især fordi det kan tænkes at de tekster der produceres vha. talegenkendelse, har særlige retskrivningsmæssige problemer – mest oplagt i forbindelse med homofoner, der jo pr. definition lyder ens og ikke altid vil kunne korrigeres af talegenkenderens indbyggede stavekontrol. Skal der fx stå køre eller kører, lære eller lærer osv.?

Omvendt kan det også tænkes at talegenkendelse kan være en hjælp til korrekt stavning, da en talegenkender jo fx ikke kan lave egentlige slåfejl. Der er endnu ikke megen dokumentation for denne slags påvirkninger. 

Det kan virke overrumplende når en maskine er i stand til at bruge talesproget, fra den gamle syntesemaskines korte, men i sin kontekst altid meningsfulde “Luk mig ud!” til vore dages telefoners evne til at svare igen.

Spørger man fx Siri: “Hvor bor du?”, får man tilbage med samme mønt: “Lige her”.

Nu hvor dansk talegenkendelse og -syntese kan ligge i en lomme, forsvinder teknologierne næppe igen lige med det samme.

Hvor meget de endnu vil kunne udvikles og forbedres, og hvordan de evt. virker tilbage på sproget selv, vil tiden vise.

Teksten er en redigeret version af artiklen “Talesyntese og talegenkendelse” af Philip Diderichsen og Andreas Søeborg Kirkedal, bragt i Nyt fra Sprognævnet 2015/2.

NB! Sprogteknologi udvikler sig hurtigt

Ligesom al anden teknologi udvikler sprogteknologien sig i en rasende fart, så når denne artikel læses, har nye generationer af teknologien allerede set dagens lys. Redaktionen og forfatterne tager derfor forbehold for at oplysningerne i dette tema kan være forældede. Temaet er redigeret og offentliggjort i maj 2018.