Spraakherkenning – Akoestisch, Lexicon & amp; Taalmodel

Spraakherkenning kan worden gezien als het vinden van de beste reeks woorden ( W ) volgens het akoestische woordenboek, het uitspraaklexicon en het taalmodel.

In het vorige artikel hebben we de basis van de HMM en GMM geleerd. Het is tijd om ze samen te stellen om deze modellen nu te bouwen.

Lexicon

Uitspraaklexicon modelleert de volgorde van telefoon s van een woord. Door de audioclip te segmenteren met een schuifvenster, produceren we een reeks audioframes. Voor elk frame extraheren we 39 MFCC-functies. dwz we produceren een reeks kenmerkvectoren X ( x₁ , x₂ , …, xᵢ , ) met xᵢ bevat 39 functies. De waarschijnlijkheid p ( X | W ) kan worden benaderd volgens het lexicon en het akoestische model.

Het uitspraaklexicon is gemodelleerd met een Markov-ketting.

De self-looping in het HMM-model lijnt telefoons uit met de waargenomen audioframes.

Dit biedt flexibiliteit bij het omgaan met tijdsverschillen in uitspraak.

Gegeven een getraind HMM-model, decoderen we de waarnemingen om de interne toestandsvolgorde te vinden. Dit kan worden gevisualiseerd met het onderstaande trellis. De pijlen hieronder tonen de mogelijke toestandsovergangen. Gegeven een reeks observaties X , kunnen we het Viterbi-algoritme gebruiken om de optimale telefoonreeks te decoderen (zeg maar de rode lijn hieronder).

In dit artikel zullen we de achtergrondinformatie over HMM en GMM niet herhalen. Hier is een vorig artikel over beide onderwerpen als je het nodig hebt. Het bevat het Viterbi-algoritme voor het vinden van de meest optimale toestandsvolgorde.

Telefoons zijn echter niet homogeen. De amplitudes van frequenties veranderen van begin tot eind. Om dat te weerspiegelen, verdelen we de telefoon verder in drie staten: het begin, het midden en het einde van een telefoon.

Hier zijn de HMM die we wijzigen van één staat naar drie staten per telefoon.

Het waarneembare voor elke interne toestand wordt gemodelleerd door een GMM.

We kunnen vereenvoudigen hoe de HMM-topologie wordt getekend door de uitvoerdistributie in een boog te schrijven. Dus in plaats van de waarneming als een knoop (toestand) te tekenen, vertegenwoordigt het label op de boog een uitgangsverdeling (een waarneming). Het volgende is de HMM-topologie voor het woord “twee” dat 2 telefoons bevat met elk drie toestanden. Het label van de boog vertegenwoordigt het akoestische model (GMM).

De waarschijnlijkheid van de waarneming X gegeven een telefoon W wordt berekend uit de som van alle mogelijke paden.

Voor elk pad is de waarschijnlijkheid gelijk aan de waarschijnlijkheid van het pad, vermenigvuldigd met de waarschijnlijkheid van de waarnemingen gegeven een interne toestand. De tweede kans wordt gemodelleerd door een m-component GGM. Dus de totale kans op alle paden is gelijk aan

In de praktijk gebruiken we de log-likelihood (log ( P ( x | w ))) om een ​​underflow-probleem te voorkomen. Hier is het HMM-model dat drie toestanden per telefoon gebruikt bij het herkennen van cijfers.

Om stilte, geluiden en gevulde pauzes in een toespraak te kunnen verwerken, kunnen we ze modelleren als SIL en behandelen als een andere telefoon.

Deze stille geluiden zijn echter veel moeilijker op te vangen. We kunnen het modelleren met 5 interne toestanden in plaats van drie. Voor sommige ASR’s kunnen we ook verschillende telefoons gebruiken voor verschillende soorten stilte en gevulde pauzes.

We kunnen ook skip arcs introduceren, arcs met lege invoer (ε), om overgeslagen geluiden in de uiting te modelleren.

Contextafhankelijke telefoon

Een articulatie hangt af van de telefoons ervoor en erna (coarticulatie). Geluiden veranderen afhankelijk van de omringende context binnen een woord of tussen woorden. Allofonen (de akoestische realisaties van een foneem) kunnen bijvoorbeeld optreden als gevolg van coarticulatie over woordgrenzen heen. Naastgelegen telefoons hebben een grote invloed op de fonetische variabiliteit. Als we bijvoorbeeld onze hand voor de mond houden, zullen we het verschil in luchtstroom voelen wanneer we / p / uitspreken voor “spin” en / p / voor “pin”.

Bij het bouwen van een complex akoestisch model moeten we telefoons niet onafhankelijk van hun context behandelen. Het label van een audioframe moet de telefoon en zijn context bevatten. Zoals hieronder getoond, zijn voor het foneem / eh / de spectrogrammen verschillend onder verschillende contexten.

Daarom, gegeven de audioframes hieronder, moeten we ze labelen als / eh / met de context (/ w /, / d /), (/ y /, / l /) en (/ eh /, / n / ) respectievelijk.

Dit wordt de triphone genoemd.

De triphone s-iy + l geeft aan dat de telefoon / iy / wordt voorafgegaan door / s / en gevolgd door / l /. Als de context wordt genegeerd, verwijzen alle drie voorgaande audioframes naar / iy /. Maar in een contextafhankelijk schema worden deze drie frames geclassificeerd als drie verschillende cd-telefoons. Maar houd er rekening mee dat er veel notaties zijn voor de triphones. Zelfs voor deze serie worden een paar verschillende notaties gebruikt.

Hieronder staan ​​de voorbeelden waarbij respectievelijk een telefoon en een tri-phone worden gebruikt voor het woord “beker”. Zowel de telefoon als de triphone worden gemodelleerd door drie interne statussen. We verhogen niet het aantal staten dat een “telefoon” vertegenwoordigt. We breiden de labels alleen uit zodat we ze met een hogere granulariteit kunnen classificeren.

Toch heeft dit een groot nadeel. Stel dat we oorspronkelijk 50 telefoons hebben. Het HMM-model heeft interne statussen van 50 × 3 (een begin-, midden- en eindtoestand voor elke telefoon). Voor triphones hebben we 50³ × 3 triphone-toestanden, d.w.z. 50² triphones per telefoon. Het geëxplodeerde aantal toestanden wordt onbeheersbaar.

Staatsbinding

Gelukkig zijn sommige combinaties van triphones moeilijk te onderscheiden van het spectrogram. In de praktijk zijn de mogelijke triphones groter dan het aantal geobserveerde triphones.

Daarom kunnen sommige staten hetzelfde GMM-model delen. Dit wordt State Tying genoemd.

Om een ​​dergelijke clustering te vinden, kunnen we verwijzen naar hoe telefoons gearticuleerd zijn: Stop, Nasal Fricative, Sibilant, Vowel, Lateral, enz … We maken een beslissingsboom om de mogelijke manier te onderzoeken om triphones te clusteren die hetzelfde GMM-model kunnen delen .

Meestal bouwen we deze fonetische beslissingsbomen op basis van trainingsgegevens. Laten we een andere mogelijkheid onderzoeken om de boom te bouwen. Hier zijn de verschillende manieren om / p / in verschillende contexten te spreken.

Voor elke telefoon maken we een beslissingsboom met de beslissingsstronk op basis van de linker- en rechtercontext. De bladeren van de boom clusteren de triphones die kunnen modelleren met hetzelfde GMM-model.

We kunnen beslissingsboomtechnieken toepassen om overfitting te voorkomen. Zo kunnen we het aantal bladknooppunten en / of de diepte van de boom beperken. Ons trainingsdoel is om de kans op trainingsgegevens met de uiteindelijke GMM-modellen te maximaliseren. Hier is hoe we evolueren van telefoons naar triphones met behulp van state koppelverkoop. Voor elke telefoon hebben we nu meer subcategorieën (triphones). En we gebruiken GMM in plaats van eenvoudig Gaussiaans om ze te modelleren.

Continue spraakherkenning

Het concept van spraakherkenning van één woord kan worden uitgebreid tot continue spraak met het HMM-model. We voegen bogen toe om woorden in HMM met elkaar te verbinden.

Taalmodel

Ook al is het audiofragment grammaticaal niet perfect of zijn er woorden overgeslagen, toch gaan we ervan uit dat ons audiofragment grammaticaal en semantisch correct is. Als we daarom een ​​taalmodel bij het decoderen opnemen, kunnen we de nauwkeurigheid van ASR verbeteren.

Bigram-model

Een taalmodel berekent de waarschijnlijkheid van een reeks woorden.

In een bigram-taalmodel (oftewel 2 gram) is het huidige woord alleen afhankelijk van het laatste woord.

Bijvoorbeeld

Laten we eens kijken naar de Markov-keten als we een bigram-taalmodel integreren met het uitspraaklexicon. De drie onderstaande lexicons zijn respectievelijk voor het woord één, twee en nul. Vervolgens verbinden we ze met het bigrams-taalmodel, met overgangskansen als p (een | twee).

Om P (“nul” | “twee”) te berekenen, klauwen we het corpus (zeg maar uit het Wall Street Journal-corpus dat 23 miljoen woorden bevat) en berekenen

Als het taalmodel afhankelijk is van de laatste 2 woorden, wordt het trigram genoemd.

n-gram is afhankelijk van de laatste n-1 woorden. Hier is het toestandsdiagram voor de bigram en het trigram. Voor een trigrammodel vertegenwoordigt elk knooppunt een toestand met de laatste twee woorden, in plaats van slechts één.

Hier is de visualisatie met een trigram-taalmodel.

Smoothing

Zelfs 23 miljoen woorden klinkt veel, maar het blijft mogelijk dat het corpus geen legitieme woordcombinaties bevat. Deze situatie wordt nog erger voor trigram of andere n-grammen. Gegevens zijn vaak schaars voor de trigram- of n-gram-modellen. Als we het WSJ-lijk in tweeën splitsen, wordt 36,6% van de trigrammen (4,32M / 11,8M) in de ene set gegevens niet op de andere helft gezien. Dit is slecht omdat we het model trainen om te zeggen dat de kansen voor die legitieme reeksen nul zijn.

Add-one smoothing

Laten we eerst het probleem vanuit unigram bekijken. Een oplossing voor ons probleem is om een ​​offset k (zeg 1) toe te voegen aan alle tellingen om de waarschijnlijkheid van P ( W ) aan te passen, zoals dat P ( W ) allemaal positief zal zijn, zelfs als we ze niet in het corpus hebben gezien. Het volgende is de afvlakkingstelling en de afvlakkans na het kunstmatig opvoeren van de tellingen.

Maar het zal moeilijk zijn om de juiste waarde van k te bepalen. Maar laten we eens nadenken over wat het principe van afvlakking is. Als we niet genoeg gegevens hebben om een ​​schatting te maken, vallen we terug op andere statistieken die nauw verwant zijn aan de oorspronkelijke en die nauwkeuriger blijken te zijn. Vervolgens interpoleren we ons uiteindelijke antwoord op basis van deze statistieken. Als een bigram bijvoorbeeld niet in een corpus wordt waargenomen, kunnen we statistieken van bigrams lenen met één keer voorkomen.

Good-Turing smoothing

Laten we voor onze bespreking terugkomen op een n-gram-model. Het algemene idee van afvlakken is om tellingen die in de trainingsgegevens worden gezien, opnieuw te interpoleren om ongeziene woordcombinaties in de testgegevens te begeleiden. In dit proces herschikken we de tellingen en persen we de kans op geziene woorden samen om onzichtbare n-grammen te accommoderen.

Een mogelijkheid is om het aantal afvlakkingen r * en de waarschijnlijkheid p te berekenen als:

Intuïtief, we egaliseren de waarschijnlijkheidsmassa met de bovenste n-grammen met “ r + 1″ -telling

Voor ongeziene n-grammen berekenen we de waarschijnlijkheid door het aantal n-grammen te gebruiken dat één keer voorkomt ( n ₁).

Maar er zijn situaties waarin de bovenste laag ( r + 1 ) nul n-gram heeft. We zullen interpolatie S toepassen om de telling eerst glad te strijken.

Voorlopig hoeven we er niet verder op in te gaan. We gaan verder met een andere, interessantere afvlakkingsmethode. Maar als u geïnteresseerd bent in deze methode, kunt u dit artikel lezen voor meer informatie.

Katz Smoothing

Katz-afvlakking is een van de populaire methoden om de statistieken af ​​te vlakken wanneer de gegevens schaars zijn. Voor een bigram-model worden het aantal afvlakkingen en de waarschijnlijkheid berekend als:

Deze methode is gebaseerd op een kortingsconcept waarbij we de tellingen voor een bepaalde categorie verlagen om de tellingen opnieuw toe te wijzen aan woorden zonder tellingen in de trainingsdataset.

Als het aantal hoger is dan een drempel (zeg 5), is de korting d gelijk aan 1, d.w.z. we gebruiken het werkelijke aantal. Ze hebben voldoende gegevens en daarom is de bijbehorende kans betrouwbaar.Voor woordcombinaties met een lager aantal, willen we dat de korting d evenredig is met de Good-Turing-afvlakking.

We willen ook dat de opgeslagen tellingen van de korting gelijk zijn aan n ₁ die Good-Turing toekent aan nul tellingen.

Om aan beide beperkingen te voldoen, wordt de korting

Bij Good-Turing-afvlakking heeft elke n-gram zonder telling dezelfde afvlakking. Voor Katz Smoothing zullen we het beter doen. α is zo gekozen dat

Dus de algemene statistieken die aan het eerste woord in de bigram worden gegeven, komen overeen met de statistieken nadat de tellingen opnieuw zijn verdeeld. We zullen het aantal afvlakkingen berekenen als:

Dus zelfs een woordpaar bestaat niet in de trainingsdataset, we passen het aantal afvlakkingen hoger aan als het tweede woord wᵢ populair is.

α is gelijk aan

Intuïtief gaat het aantal afvlakkingen omhoog als er veel woordparen met een laag aantal zijn die beginnen met hetzelfde eerste woord.

In dit scenario verwachten (of voorspellen) we dat veel andere paren met hetzelfde eerste woord zullen verschijnen tijdens testen maar niet tijdens training. Empirische resultaten tonen aan dat Katz Smoothing goed is in het afvlakken van schaarse gegevenskans. Nogmaals, als u de afvlakking beter wilt begrijpen, raadpleeg dan dit artikel.

Backoff-model

Katz Smoothing is een backoff-model dat wanneer we geen enkel voorkomen van een n-gram kunnen vinden, we terugvallen, d.w.z. als we geen enkel voorkomen voor het n-gram kunnen vinden, schatten we het met het n-1 gram. Maar er is ook geen voorkomen in de n-1 gram, we blijven terugvallen totdat we een niet-nul voorkomen. De kans op uitstel wordt berekend als:

waarbij α en P zijn gedefinieerd als:

Telkens wanneer we terugvallen op een taalmodel met een lagere spanwijdte, moeten we de waarschijnlijkheid schalen met α om er zeker van te zijn dat alle waarschijnlijkheden samen één zijn.

Laten we een voorbeeld geven om het concept te verduidelijken. Veronderstel dat we het “10e symbool is een obelus” van 5 gram nooit in ons trainingscorpus vinden. We moeten dus terugvallen op een 4-grammodel om de kans te berekenen.

P (Obelus | symbol is an) wordt berekend door het corresponderende voorkomen hieronder te tellen:

Ten slotte berekenen we α om de kans opnieuw te normaliseren.

En dit is het uiteindelijke aantal afvlakkingen en de waarschijnlijkheid.

Volgende

Nu weten we hoe we ASR moeten modelleren. Maar hoe kunnen we deze modellen gebruiken om een ​​uiting te decoderen?

Credits & amp; Verwijzingen

Gewogen eindige-toestandstransducers in ASR

Leren en NLP

NLP Lunch-zelfstudie: afvlakken