NUANCE TUTORIAL TALTEKNOLOGI KURSEN VT2006 Labkonstruktör: Rebecca Jonson Labhandledare: Håkan Burden Laboration 3 börjar med en Nuance-tutorial som först och främst går ut på att lära sig lite hur Nuance fungerar och vilka program som finns. Större delen av den här tutorial innebär att utveckla en språkmodell för klockslag med de verktyg taligenkänningssystemet Nuance ger för att på så sätt få kännedom om Nuances vanligaste kommandon och om hur man skriver och utvärderar grammatiker och språkmodeller. Som utgångspunkt har labgrupperna en korpus med klockslag (som vi kan tacka Karin Cavallin för ) samt en zip-fil med inspelningar. Dessa två filer kan laddas ned från kurshemsidan. Laborationen är en separat del där ni väljer en av de föreslagna dialogsystemsdomänerna som ni utvecklar en taligenkänningsgrammatik för som ska klara yttranden som framtida användare av system kan komma att säga (Separat labpm om denna del kommer lämnas ut!). Alla fil/regel-namn som innehåller sekvensen NAMN i LabPM står för ett namn som ni själva sätter till filen, regeln eller biblioteket. DEL 1 Skapa en Språkmodell med Nuance 1. Börja med att ladda ner korpusen klockkorpus från kurshemsidan. 2. Ta en titt på korpusen 3. Sätt igång Nuance license manager i ett nytt terminalfönster a. $NUANCE /run_nlm 4. Gör en språkmodell med Nuance. a. Ställ er i biblioteket med filen klockkorpus b. Skriv train-slm help och titta på de alternativ som finns, discounting etc. c. Programmet generar default en trigrammodell med good-turing-discounting. d. Skriv: train-slm corpus klockkorpus slm ModellNAMN e. Vad ger programmet för output? Hur många trigram fick ni? f. Som resultat får ni en pfsg-fil och en slm-fil (NAMN.pfsg och NAMN.slm) som är er språkmodell i två olika format. 5. Skriv en grammatik som inkluderar språkmodellen a. Skapa en fil med filtyp.grammar t ex GramNAMN.grammar b. Skriv följande i filen där namnet på regeln måste vara med stor bokstav:.top RegelNamn RegelNamn:slm ModellNAMN.pfsg 6. Kompilera grammatiken ni skapat (GramNAMN.grammar) a. Skriv: nuance-compile och ta en koll på vad det här kommandot gör b. Skriv: nuance-compile GramNAMN.grammar Swedish o PaketNAMN
auto_pron dont_flatten i. Swedish står för det val av akustiska modeller som ska användas ii. auto_pron skapar uttal för de ord som inte finns i Nuances uttalslexikon c. Som resultat av nuance-compile får ni flera olika filer i biblioteket PaketNAMN som ni kan ta en titt på. d. Uttal med Nuance i. Med kommandot pronounce kan ni kolla uttalet för ett ord eller en fras i språkpaketen, pröva lite olika fraser och ord. 1. pronounce Swedish tjugo 2. pronounce Swedish fem minuter över tio 3. pronounce English.America enough 7. Sätt igång taligenkänningsservern i ett nytt terminalfönster a. Skriv: recserver package PaketNAMN lm.addresses=localhost 8. Sätt igång applikationen JSCApp för att köra taligenkänning i ett nytt terminalfönster a. Skriv: java JSCApp package PaketNAMN lm.addresses=localhost b. Ni får då upp en javaapplikation c. Se till att ert headset är inkopplat och tryck på recognize samt på knappen på headsetet och säg ett klockslag d. Låt alla i gruppen pröva olika klockslag och se hur taligenkänningen fungerar e. Finns det några klockslag som den inte klarar? f. Pröva också följande fraser: i. 27 minuter i 12 ii. 3 minuter över halv 12 iii. Kvart över fem iv. 15 minuter över fem 9. Ta fram perplexiteten på er språkmodell med process-slm a. Kopiera filen klocktest till ert labbkonto: i. cp../../klocktest. b. Titta på filen klocktest: det är en fil med klockslagsfraser c. process-slm ModellNAMN -ppl-corpus klocktest d. Vad får ni för värden? Vad betyder de? DEL 2 Skapa en klassbaserad språkmodell Nu när ni har sett hur taligenkänning med Nuance går till, vet vilka steg som tas för skapa en språkmodell utifrån en korpus och sedan sett hur man använder den språkmodellen i taligenkänningen, är tanken att ni ska modifiera den korpus ni har för att skapa en språkmodell som fungerar lite bättre än den ni har. Som ni kanske märkte fungerade inte en del klockslag. Detta beror på att de inte finns med i korpusen. Korpusen täcker inte allt. Det finns två sätt att lägga till saker: direkt i korpusen eller så skapar man klasser och lägger till definitioner i en klass. 1. Vi väljer att lägga till en klass a. Kvart finns inte med i korpusen, bara motsvarigheten 15 minuter b. Vi skapar klassen Kvart (med stor bokstav) som motsvarar 15 minuter samt kvart i en taggningsgrammatik: TagGramNAMN.tagging.grammar.Tagging Kvart
Kvart [ kvart (femton minuter)] c. Skapa ett taggningspaket med: 1. nuance-compile TagGramNAMN.tagging.grammar Swedish 2. vi får biblioteket TagGramNAMN.tagging som output d. Tagga korpusen med nl-tag-tool med klassen Kvart: 1. nl-tag-tool -package TagGramNAMN.tagging -grammar.tagging -no_output <klockkorpus >klockkorpus.tagged 2. Vi får filen klockkorpus.tagged 3. Öppna den och sök på Kvart e. Träna upp en ny språkmodell med den taggade korpusen 1. train-slm corpus klockkorpus.tagged slm TAGLMNAMN f. Skapa en ny grammatik TagNAMN.grammar som inkluderar den taggade grammatiken TagGramNAMN.tagging.grammar.Top Klockslag Klockslag:slm "TAGLMNAMN.pfsg" #include "TagGramNAMN.tagging.grammar" g. Kompilera grammatiken: 1. nuance-compile TagNAMN.grammar Swedish o TAGPAKETNAMN -auto_pron -dont_flatten 2. Innan vi kör igång en ny igenkänning se till att ni fortfarande har licensmanagern igång och stäng den gamla recservern samt javaapplikationen JSCApp. 3. Kör igång recserver med det nya paketet (motsv. TAGPAKETNAMN) och kör sedan igång JSCApp med följande kommando (se till att ni inte står i paketbiblioteket): a. java JSCApp package TAGPAKETNAMN lm.addresses=localhost rec.numnbest=3 rec.donbest=true b. Pröva taligenkänningen för er nya modell, ni kommer nu få en n-bästa lista från taligenkänningen när den känner igen. Gör gui:n lite större och om ni tar expand på mappen där ni tidigare fick igenkänningen kommer ni nu se flera alternativ med olika konfidenstal (som representerar taligenkänningens konfidens på dess val). c. Pröva de klockslag ni lagt till, t ex kvart i fem 4. Ta fram perplexiteten på er nya språkmodell med process-slm med samma testset som innan a. process-slm TAGLMNAMN -ppl-corpus klocktest b. Vad får ni för värden? Jämför med värden för modell del1 DEL 3 Skapa talgrammatiker med Nuance Nu är tanken att ni ska fortsätta att utvidga språkmodellen till att klara av inte bara klockslag utan hela svar på frågor såsom: Vad är klockan?, När vill du åka? Vilken tid vill du spela in filmen? När börjar mötet? D v s vi tänker oss att den ska användas som en delspråkmodell i olika dialogsystem (t ex videodomänen, resebyrå, väckarklocka, kalender). Detta gör vi genom att skapa en grammatik som anropar språkmodellen.
1. Skapa en ny grammatik KlockslagNAMN.grammar som anropar Klockslagsspråkmodellen enligt följande:.top TalaOmTidREGELNAMN TalaOmTidREGELNAMN [ (klockan Klockslag)] Klockslag:slm "TAGLMNAMN.pfsg" #include "TagGramNAMN.tagging.grammar" 2. Den här grammatiken har en regel som definieras av exempeluttrycket klockan Klockslag. Grammatiken anropar vår taggade språkmodell samt vår taggningsgrammatik. 3. Nu kan man säga saker som klockan fem. Fundera ut och lägg till fler TalaOmTidyttranden än klockan KLOCKSLAG som en användare kan tänkas svara till ovannämnda frågor (enligt NuanceSyntaxen). 4. Kompilera grammatiken med nuance-compile (som i del 1 uppg 6b med dont_flatten) till ett nytt igenkänningspaket och testa igenkänning av era tillagda TalaOmTid-fraser, starta JCSApp med paketet och n-bästa parametrar. (OBS! glöm inte stänga er gamla recserver och JSCApp, kör igång dem på nytt med det nya paketet och se till att run_nlm fortfarande är igång). 5. Testa om de yttranden ni tänkte på när ni utvidgade grammatiken verkligen fungerar: a. parse-tool package PAKETNAMN grammar.top b. skriv in de yttranden ni tror grammatiken bör kunna parsa eller inte Del 4 Utvärdering av en talgrammatik eller språkmodell Taligenkänning utvärderas genom att testa systemet med inspelningar och dess motsvarande transkriberingar. Taligenkänningens resultat jämförs mot transkriberingarna och antal ordfel som begåtts beräknas. Nuance använder sig av kommandot batchrec för att göra detta. Vi behöver en talgrammatik eller en språkmodell konverterat till ett taligenkänningspaket samt inspelningar av yttranden och transkriptioner för varje yttrande. På kurskontot finns filerna klocktestset och klocktransset som motsvarar dessa. Utvärdera era språkmodellspaket (SLM eller KLASSSLM). Kopiera från kurskontot filerna klocktestset och klocktransset (cp /../X). Hämta också biblioteket klockyttranden därifrån (cp r). Ni har ett antal inspelade yttranden samt dess transkriptioner till godo. Utvärdering görs med kommandot batchrec. 1. Ta en titt på filerna klocktestset och klocktransset. 2. batchrec package PAKETNAMN testset klocktestset transcriptions klocktransset rec.donbest=true rec.numnbest=10 rec.confidencerejectionthreshold=0 3. Vad får ni för WER-rate för de olika filerna samt totalt? 4. Jämför Paketet från Del 1 och Del2 5. Vad verkar gå fel? Finns rätt kandidat längre ned i N-Bästa Listan? Del 5 Xwavedit
Kör igång Xwavedit och pröva att spela in egna ljudfiler som kan användas för testning. Spela in de yttranden som finns transkriberade i filen klocktranset och testa hur bra igenkänningen fungerar för era röster. Får ni bättre resultat än Del4?