Kontinuerlig taligenkänningstestning

Källnod: 1197180

Innehåll:

Konversations-AI och röst
Kontinuerlig taligenkänningstestning

Konfigurera taltjänster i Botium Box

Taligenkänning (tal-till-text)
Talsyntes (text-till-tal)
Anpassade talmotorer
Förbered chatbots för talsyntes och igenkänning
Förbered testset

Samla in testdata

Märkt referensljudfiler
Syntetisera tal
Spela in tal
Kör taligenkänningstestsession

Humanifiering: Lägga till brus

Rösteffekter pipeline
Använd bruseffekter

Bonus: Kontrollera Word Error Rate

Bonus: Taligenkänningsregressionstest

Konversations-AI och röst

Från traditionella IVR-system, fortfarande mycket vanliga inom kundtjänst, till röstassistenter på Alexa eller Google Assistant - röstteknik är numera en del av vardagen, och den kommer att fortsätta att få betydelse i framtiden. Komponentstapeln i en typisk röstassistent inkluderar taligenkänning och talsyntes, förutom de vanliga samtalskomponenterna som NLU (naturlig språkförståelse), dialoghantering och NLG (naturlig språkgenerering).

Botium Box gör det möjligt för företag att implementera en holistisk teststrategi för röstassistenter på alla nivåer i komponentstacken. Den här artikeln fokuserar på taligenkänningsdelen och visar hur man bygger en regressionstestsvit baserad på ljudfiler, transkriptionsfiler och verifiering av ordfelsfrekvens.

Kontinuerlig taligenkänningstestning

De stora molntjänstleverantörerna Google, Amazon, Microsoft och IBM tillhandahåller alla högkvalitativa taltjänster med marknadens bästa igenkänningsgrad. Men även med dessa molnleverantörer gör vissa det möjligt att lägga till dina egna optimeringar genom att ladda upp ytterligare träningsdata – detta används ofta för att förbättra igenkänningsfrekvensen för domänspecifikt ordförråd. Förutom de stora molntjänsteleverantörerna finns det också ett antal gratis programvarupaket tillgängliga som Kaldi (för taligenkänning) eller MaryTTS (för talsyntes), som företag installerar, tränar och driver på sin egen infrastruktur.

Kontinuerlig taligenkänningstestning har de flesta fördelarna för röstassistenter som använder en optimerad molntaltjänst eller helt egenutbildade språkmodeller. Som en del av en teststrategi för röstassistent bör kvaliteten på taligenkänningen verifieras kontinuerligt, precis som alla andra stackkomponenter. Den här artikeln visar hur du ställer in en testsvit för kontinuerlig taligenkänning.

Konfigurera taltjänster i Botium Box

I Botium Box byter du till Rösttjänster avsnitt i Inställningar menyn (från användarikonen uppe till höger).

Taligenkänning (tal-till-text)

I Taligenkänning listan registrerar vi taltjänsten (inklusive inloggningsuppgifter) och språket och att använda. Beroende på taltjänsten krävs ytterligare parametrar – till exempel för molntjänster som Google krävs autentiseringsuppgifterna.

Botium Box tillåter mycket finkornig kontroll över hur taltjänsten används med Anpassad motorkonfiguration fält. Till exempel, för att välja din egen anpassade Azure-talmodell:

{
 "speechConfig": {
 "endpointId": "xxx-yyyy-zzzzzzzzzz"
 }
}

Det är möjligt att omedelbart testa taltjänstens konfiguration genom att använda din egen mikrofon.

Talsyntes (text-till-tal)

I Talsyntes listan registrerar vi taltjänsten (inklusive inloggningsuppgifter), språket och rösten som ska användas för att syntetisera ljud från text. Beroende på taltjänsten krävs ytterligare parametrar – till exempel för molntjänster som Google krävs autentiseringsuppgifterna.

Återigen kan du testa konfigurationen genom att lyssna på ett första exempel.

Anpassade talmotorer

Botium Box använder öppen källkod Botium talbehandling programvara stack (se Github-projekt). Genom att använda Github-källkoden som bas är det möjligt att lägga till din egen anpassade taligenkänning eller talsyntes samt rösteffekter till dina Botium-tester. Var beredd att göra lite Node.js-kodning!

Förbered Chatbot för talsyntes och -igenkänning

Därefter kommer vi att skapa en chatbot i Botium Box med anslutningen för talsyntes och igenkänning. I avsnittet Chatbots, registrera en ny chatbot, välj tekniken från listan och de tidigare konfigurerade profilerna för taligenkänning och talsyntes.

Smakämnen Talsyntes och igenkänning connector är en mycket smal Botium-kontakt som kan göra enkla 2-stegskonversationer:

  • använd förinspelad ljudfil eller syntetisera ljudfil för en given text med en given röst
  • skicka den här ljudfilen till taligenkänningsmotorn och visa textresultaten och WER

Konfigurationen kan testas omedelbart med Say Hello eller till och med med Live Chat. Du kan antingen skriva in text i livechatten för vilken röst kommer att syntetiseras, eller så kan du också spela in din egen röst.

Förbered testset

Som nästa steg måste vi förbereda en Testuppsättning. Ett testset i Botium Box är behållaren för själva testdatan samt konfigurationen av hur man tolkar testdatan för att injicera den i Botiums testpipeline.

Vanligtvis definieras testfall i Botium Box i skriptspråket BotiumScript, konversationsflödestester samt NLP-tester och andra testtyper som stöds av Botium. I fallet med taligenkänningstestning är det inte nödvändigt att använda BotiumScript: för att testa taligenkänning räcker det med märkta ljudfiler för att bygga upp testfallen.

  • Ljudfiler måste laddas upp som wav- eller mp3-filer till Botium Box
  • Botium letar upp den förväntade transkriptionen ...
  • i en fil med samma namn men med tillägget .txt istället
  • i en CSV-fil transcript.csv
  • från själva filnamnet

I Testuppsättningar skapa ett nytt testset och navigera till menyn Inställningar för mediaresurser. I Användning av ljudfiler fältet välj alternativet Använd alla ljudfiler som indata för testfall och läs transkription från filen.

Smakämnen Standardmapp för bifogade filer är mappen i Botium Box där vi kommer att placera våra testljudfiler i nästa steg. Du kan navigera dit genom att klicka på Öppna i filläsare för att visa en nu fortfarande tom mapp i Botium Box File Browser.

Samla in testdata

Som alltid är en teststrategi bara lika bra som kvaliteten på testdata. Beroende på dina mål finns det några sätt att samla in testdata.

Märkt referensljudfiler

Om du arbetar med din egen röstassistent äger du med största sannolikhet redan referensdata i form av märkta ljudfiler (ljudfil + förväntad transkription). Botium förväntar sig den förväntade transkriptionen i en separat textfil med namn efter ljudfilen, eller i en separat CSV-fil.

Tänk till exempel på att det finns ett par märkta ljudfiler:

  • F01-hej-hur-mår-dig.wav, förväntad transkription "hej hur mår du"
  • F02-hi-whats-up.wav, förväntad transkription "hej vad händer"

Öppna Botium Box Standardmapp för bifogade filer av testsetet du skapade ovan i filläsaren.

  1. Ladda upp de två ljudfilerna
  2. gör något av följande
  3. Placera ytterligare två textfiler i den här mappen
  4. F01-hej-hur-är-dig.txt med textinnehåll "hej hur mår du"
  5. F02-hi-whats-up.txt med textinnehåll "hej vad händer"
  6. Eller placera en fil transcript.csv i den här mappen
  7. du kan förbereda den här filen med en textredigerare eller med ett kalkylblad som Excel
F01-hej-hur-är-du.wav;hej hur mår du
F02-hi-whats-up.wav;hej vad händer

Nu vet Botium vad som kan förväntas när ljudfilen skickas till taligenkänningsmotorn.

Syntetisera tal

Ett annat sätt att börja testa din taligenkänning är att syntetisera ljudfiler från text. Botium Box har Röstguiden att stödja dig i att göra det. Klistra in texten som ljudfilerna ska genereras för, välj de röster du vill använda och utdatamappen. Röstguiden placerar både ljudfilerna och transkriptionsfilerna där.

När du öppnar mappen nu i filläsaren kan du se ett gäng ljudfiler - en för varje textrad och röst - samt en transkriptionsfil per ljudfil, som slutar på .Text.

Detta är det i särklass snabbaste sättet att generera ljudtestdata i massor.

Spela in tal

För mindre projekt kan det också vara möjligt att spela in din egen röst och använda den för att testa taligenkänningen. Voice Wizard har också möjlighet att spela in en ljudfil och placera den i mappen Test Set.

Du måste lägga till transkriptionsfilerna manuellt om du väljer det här alternativet.

Kör taligenkänningstestsession

Nu när vi har allt på plats för en första testkörning – anslutningen till vår taligenkänningsmotor och märkta testdata – kör vi ett första test. För detta skapar vi ett testprojekt — i Testa projekt menyn, registrera ett nytt testprojekt, välj Chatbot och testsetet som vi skapade i de föregående stegen och klicka på Spara.

Klicka nu på Starta testsessionen nu för att starta det första testpasset. Några minuter senare kan du redan börja inspektera resultatet.

Du kan se listan över ljudfiler där taligenkänningen matchade den förväntade transkriptionen och de där den misslyckades. Du kan dyka in i resultaten, lyssna på ljudfilerna och se resultatdetaljerna på en JSON-kodnivå (använd <>-knappen).

Som väntat går de flesta av testerna nu, eftersom vi använder de bästa ljudfilerna vi kan få - märkta referensdata, dina egna röstinspelningar eller till och med syntetiserad röst, som per definition är extremt ren. Vi kan nu lägga till lite brus till ljudfilerna för att utmana taligenkänningen med verkliga scenarier.

Humanifiering: Lägga till brus

I Botium Box, termen Humanifiering används för att beskriva tillämpningen av algoritmer för att introducera brus i testdata. För textbaserad testning innebär det att man tar hänsyn till typiska mänskliga beteendemönster och typiska mänskliga brister som typografiska fel, skiftlägesokänslighet, blanksteg (eller avsaknad av blanksteg), med hjälp av emojis och annat. För röstbaserad testning, brus kan verkligen vara brus - som att lägga till lite miljöspecifikt bakgrundsljud.

Rösteffekter pipeline

Byt till Rösttjänster avsnitt i Inställningar menyn (från användarikonen uppe till höger). I den Rösteffekter lista kan du konfigurera din pipeline med ytterligare bruslager för att tillämpa på en ljudfil. Det finns flera vanliga ljudeffekter tillgängliga för att simulera verkliga miljöer:

  • Lägger till bakgrundsljud
  • Få det att låta som ett GSM-samtal med låg bandbredd
  • Simulera en något avbruten telefonlinje genom att lägga till pauser
  • … och mer

Klona testsetet från ovan och lägg till något med "Noise" till namnet. Detta testset är initialt tomt, men har samma inställningar som ovan.

Verifiera att Användning av ljudfiler fältet är verkligen inställt på Använd alla ljudfiler som indata för testfall och läs transkription från filen.

Använd bruseffekter

Öppna din rena testset Rösteffekter avsnitt i Röstguiden. Välj mappen där du placerade dina ljudfiler tidigare och välj brusprofilen ovanifrån. I Utgång Folder, välj mediamappen från din nya brustestset som du skapade i föregående steg. När man klickar på Använd rösteffekt, kommer Botium Box att köra alla ljudfiler i den valda mappen (inklusive undermappar!) genom rösteffektpipelinen och placera de resulterande ljudfilerna i utdatamappen.

Skapa nu ett nytt testprojekt för det nya testsetet med brus, och starta en första testsession.

Återigen kan du inspektera testresultaten efter några minuter för att kontrollera om det applicerade bruset får taligenkänningen att kämpa.

Grattis, du kan nu köra taligenkänningstesterna med dina referensdata och med bullriga data om och om igen - det är förstås mest vettigt när du tränar om din taligenkänning.

Trending Bot-artiklar:
1. Hur konversations AI kan automatisera kundtjänst
2. Automated vs Live Chats: Hur kommer kundtjänstens framtid att se ut?
3. Chatbots som medicinska assistenter i COVID-19-pandemi
4. Chatbot vs. Intelligent virtuell assistent — Vad är skillnaden och varför bry sig?

Bonus: Kontrollera Word Error Rate

I många fall kanske du faktiskt inte är intresserad av den exakta transkriptionen av ljudfilen, utan snarare om vissa kvalitetskriterier för transkriptionen är uppfyllda - det är här ordfel spelar in. Det är ett mått på hur många ord i en enskild transkription som har identifierats korrekt - för en perfekt transkription som helt matchar etiketten är det 0, och värdet är mellan 0 och 1. Beroende på dina krav kan du överväga en ordfelfrekvens på 0.1 (en felaktig transkription av 10 ord) ok. Botium Box kan verifiera ordfelfrekvensen på en enda yttrandenivå istället för den exakta transkriptionen.

Byt först värdet på Användning av ljudfiler i Test Set inställningar till Använd alla ljudfiler som testfallsindata och beräkna ordfelfrekvensen från transkription från fil — detta kommer Botium att instruera att beräkna ordet felfrekvens, istället för att hävda den exakta transkriptionen.

För närvarande finns det ingen speciell Word Error Rate asserter i Botium Box, men vi kan skräddarsy Generisk JSONPath Asserter för att göra detta. I Botium Box, i Inställningar menyn öppnar Registrerade komponenter sektion. Registrera en ny komponent där, namnge den Kontrollera WER och välj Test Case Asserter as Komponenttyp.

As Komponentreferenskod, Använd WER och i Komponentkälla fältet ange JsonPathAsserter. Detta kommer att instruera Botium att använda Generic JSONPath Asserter för den här komponenten. Aktivera omkopplaren Registrera dig som global skriptkomponent för att få Botium att använda denna påstående för alla testfall. Slutligen, i komponentkonfigurationen berättar vi för Botium JSONPath uttryck som vi förväntar oss ska matcha taligenkänningssvaret.

Om vi ​​förväntar oss en perfekt ordfelfrekvens på 0, kan vi ange detta uttryck:

{
 "path": "$.response..[?(@.wer == 0)]"
}

Om vi ​​har det bra med en ordfelfrekvens på exakt eller under 0.1, är detta uttrycket att använda:

{
 "path": "$.response..[?(@.wer <= 0.1)]"
}

Vi måste nu berätta för Botium Box att använda den här påståenden i våra tester. Spara den registrerade komponenten och navigera till ditt testprojekt. Öppna Testutförande avsnitt i Inställningaroch lägg till Kontrollera WER komponent till Inblandade registrerade komponenter fält.

När nu kör en testsession kommer Botium inte att hävda den exakta transkriptionen längre, utan det kommer istället att använda Kontrollera WER asserter misslyckas i ett testfall om ordfelfrekvensen är över 0.1 — du kan inspektera de detaljerade resultaten i testsessionen igen:

Bonus: Taligenkänningsregressionstest

När man regressionstestar en talmodell är ofta inte själva ordets felfrekvens huvudkriteriet – utan för att se till att transkriptionen för vissa referensljudfiler alltid är densamma, innan man tränar en ny talmodell och efteråt. Med detta är det möjligt att avgöra om den nyutbildade talmodellen har några uppenbara defekter.

I dessa fall har du med största sannolikhet ett bibliotek med referensljudfiler, märkta eller omärkta. I det här fallet kan vi börja med de omärkta ljudfilerna för att bygga upp en regressionstestsvit.

  1. Skapa ett nytt testset, ställ in Användning av ljudfiler till Använd alla ljudfiler som ingång för testfall
  2. Ladda upp dina omärkta ljudfiler till medium mapp i detta testset
  3. Starta en första testsession - Botium Box skickar alla ljudfiler till taligenkänningsmotorn och accepterar alla transkriptioner
  4. I Nedladdningar del av testresultatet, ladda ner hela transkriptet som CSV-fil och öppna det i Excel

I den här CSV-filen är vi bara intresserade av de namngivna kolumnerna testCaseName (som innehåller filnamnet) och convoStepActual (som innehåller transkriptionen). Filtrera convoStepSender kolumn på värdet bot och dölj alla andra kolumner utom de två nämnda. Kopiera återstående data som filen transcript.csv till mappen med dina ljudfiler i Botium Box.

När nu byter du Användning av ljudfiler fältet till Använd alla ljudfiler som indata för testfall, och läs transkription från fil, kommer Botium att läsa de förväntade transkriptionerna från denna fil och eventuella ändringar i transkriptionen för dina referensfiler kommer att dyka upp i testresultaten.


Kontinuerlig taligenkänningstestning publicerades ursprungligen i Chatbots liv på Medium, där människor fortsätter konversationen genom att lyfta fram och svara på denna berättelse.

Tidsstämpel:

Mer från Chatbots liv