Op spraak gebaseerde conversatie-AI lost vragen van klanten op door relevante antwoorden te geven. Het omvat een reeks stappen: audio wordt omgezet in tekst, modellen voor het begrijpen van natuurlijke/gesproken taal halen relevante intenties en entiteiten uit de tekst en tot slot wordt er een geschikt antwoord voor de gebruiker geformuleerd.
Dit vereist de noodzaak om goede ASR-systemen te hebben voor het bouwen van een robuuste Voice AI.
Dergelijke systemen zouden daarom moeten
- Heb een hoog niveau van nauwkeurigheid
- In staat zijn om goed te werken in verschillende domeinen en specifieke woorden / zinnen correct te identificeren die in specifieke domeinen worden gesproken
Een van de grootste uitdagingen bij het bouwen van een stemassistent is het verminderen van de impact van fouten die door de ASR-systemen worden geïntroduceerd. De ASR-fouten hebben een cascade-effect op modellen voor taalbegrip en schaden uiteindelijk downstream-taken.
Een gebruikelijke maatstaf om ASR-prestaties te meten, is de Word Error Rate (WER). De Word Error Rate wordt gedefinieerd als het percentage van het totale aantal onnauwkeurig vertaalde woorden, inclusief invoeging, verwijdering en vervangingen, gemaakt door de ASR ten opzichte van het totale aantal woorden dat aanwezig zou moeten zijn als de vertaling 100% nauwkeurig was. De huidige ASR-modellen van cloudproviders hebben WER in de regio van 20-30% op gespreksopnamen.
De fouten zijn normaal gesproken laag wanneer generieke zinnen worden gebruikt. Deze kunnen echter oplopen tot 35% wanneer domeinspecifieke zinnen worden uitgesproken. Dit aantal neemt verder toe als de dialecten en omgeving van de spreker te luidruchtig worden of veel afwijken van de trainingsgegevens. Ook slagen de meeste ASR-modellen van de cloudprovider er niet in om de naam van de organisatie, Indiase namen en afkortingen op te pikken, twee woorden samen te voegen tot één wanneer ze fonetisch vergelijkbaar zijn, en woorden te verwijderen in rumoerige omgevingen.
Hiervan kunnen sommige worden gecorrigeerd, terwijl sommige veel moeilijker zijn. Het maken van fouten in namen is bijvoorbeeld niet gemakkelijk te corrigeren, maar zinsdeelvervangingen zijn gemakkelijker te corrigeren.
Hoewel ASR-systemen behoorlijke nauwkeurigheid bieden voor veelgebruikte woorden, herkennen ze domeinspecifieke woorden niet. Bijvoorbeeld:
Als de eerste stap foutieve resultaten oplevert, worden de daaropvolgende delen, dwz. de reacties lijden er ook onder.
Een oplossing is om voor elk domein aangepaste modellen te trainen. Het trainen van aangepaste modellen voor elk domein kan echter moeilijk blijken vanwege de beperkte beschikbaarheid van geannoteerde gegevens voor dergelijke taken.
De andere methode is het gebruik van domeinspecifieke nabewerkingstechnieken. Nabewerkingstechnieken kunnen worden geïmplementeerd met behulp van deep learning-modellen of met behulp van eenvoudigere klassieke technieken.
We hebben geëxperimenteerd met verschillende opties voor nabewerking die geschikt waren voor eisen met lage latentie. We hebben ook geëxperimenteerd met deep learning-benaderingen met behulp van op BERT gebaseerde modellen en T5 voor het voorspellen van de juiste zin. In deze blog praten we over enkele van onze experimenten met behulp van klassieke methoden.
ASR-nabewerking
De nabewerkingstechniek kan in twee delen worden verdeeld:
- Detectie van het foutwoord/de foutzin
- Vervang het foutwoord/de foutzin door het juiste woord/de juiste zin
Foutwoorden detecteren:
De eerste stap bij het corrigeren van de getranscribeerde tekst is het detecteren van de plaatsen waar de ASR fouten heeft gemaakt. We hebben geëxperimenteerd met verschillende benaderingen en een op waarschijnlijkheid gebaseerd KL-Divergentiemodel werkte goed, waarin we de KL-Divergentie voor elk woord berekenen en als het boven een drempelwaarde ligt, wordt het woord gemarkeerd als onjuist [1]. De kl-div wordt berekend als:
D(p||q) = Σ p(x)log(p(x)/(1-p(x))
waarbij p(x) de voorwaardelijke waarschijnlijkheid is van het samen voorkomen van het doelwoord
met een contextwoord x in de set van c contextwoorden X.
Een dataset met 60.000 voorbeelden van chatuitingen van gebruikers werd gebruikt om ons KL-Div-model te trainen. We gebruikten een glijdende venstertechniek in onze chatuiting, waarbij het middelste woord het doelwoord was en het omringende woord de contextwoorden, voor bijvoorbeeld -> “Hallo mijn naam is Shivam Raj”, met een venstergrootte van 5, het venster bestaat uit “Hallo mijn naam is Shivam” waarbij het middelste woord “naam” wordt beschouwd als het doelwoord en de woorden “Hallo”, “mijn”, “is” en “Shivam” worden beschouwd als de contextwoorden. Met behulp van het hele trainingscorpus berekenen we de waarschijnlijkheid van elk woord en de voorwaardelijke waarschijnlijkheid dat het woord voorkomt, gegeven het contextwoord.
Op het moment van deductie wordt de eigenlijke tekst “Ik wil inchecken in het hotel” door het ASR-systeem omgezet in “Ik wil het hotel kippen”. Als we een venster van grootte 5 gebruiken, met contextwoorden “willen”, “naar”, “het”, “hotel” en het doelwoord “kip” is, zien we dat het woord kip nooit kwam met de woorden “willen”, ” naar”, “het”, “hotel” in trainingsgegevens, waardoor het een hoge KL-afwijkingswaarde krijgt en het daarom als een onjuist woord markeert.
Vervangende woorden zoeken:
Zodra het onjuiste woord is gevonden, is de volgende stap om het te vervangen door een geschikte correctie. We controleerden met pure probabilistische benaderingen en op afstand gebaseerde benaderingen voor het vinden van een geschikt vervangend woord, maar de nauwkeurigheid was laag.
Om dit aan te pakken, werd een voorfiltertechniek toegevoegd, waarbij de woorden uit het corpus werden gefilterd die ruis zouden kunnen toevoegen en onze resultaten zouden kunnen verslechteren. Hiervoor werden de voorbeelden van trainingsgegevens gebruikt om een op trie gebaseerde suggestie te construeren, waarbij bijvoorbeeld de context uit het verleden en de toekomst werd gebruikt.
Als de context uit het verleden “boek mijn” is, zijn de suggesties woorden die als volgende na “boek mijn” in ons trainingscorpus kwamen, zoals “ticket”, “kamer” enz. voorgestelde woorden ter vervanging. Als op het moment van deductie een ASR-getranscribeerde tekst “boek mijn limiet” binnenkomt, gebruiken we “boek mijn” als de verleden context, en alle voorgestelde woorden uit de trie als mogelijke vervangende kandidaten voor het woord “limiet”. Binnen deze kandidaatwoorden zoeken we naar ons juiste vervangende woord met behulp van de gewogen functie van fonetische en woordafstand. Met deze aanpak konden we fouten vervangen met een nauwkeurigheid van 31%, wat onze algemene ASR-tekstvoorspelling verbeterde.
Conclusie
De experimenten die werden uitgevoerd met behulp van de nabewerkingstechnieken lieten duidelijk een verbetering van 31% zien in WER na nabewerking op onze aangepaste dataset. De WER vóór eventuele nabewerking kwam uit op 27% en werd na nabewerking verder teruggebracht tot 19%.
Hoewel het gebruik van een Deep Learning-benadering goed kan werken wanneer er veel domeinspecifieke trainingsgegevens beschikbaar zijn, kan het nog steeds duur blijken te zijn vanwege de zware rekenkracht en latentievereisten die worden opgelegd door een realtime systeem.
Onze techniek is gebaseerd op de traditionele methoden met behulp van de drie gegevensstructuur, fonetische afstanden, probabilistische modellen en KL-Div-benaderingen. Hierdoor is het snel en eenvoudig in te passen in de bestaande leidingen. Het voorkomt ook de noodzaak om aangepaste modellen voor elk domein/klant te trainen en te onderhouden.