NUANCE TUTORIAL TALTEKNOLOGI KURSEN VT2006. Labkonstruktör: Rebecca Jonson Labhandledare: Håkan Burden

Relevanta dokument
NUANCE TUTORIAL TALTEKNOLOGI KURSEN VT2006. Labkonstruktör: Rebecca Jonson Labhandledare: Håkan Burden

ASR3 Språkmodeller Talgrammatiker

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Föreläsning 3. Programmering, C och programmeringsmiljö

Vanliga frågor för VoiceXpress

Avkodning ASR prestanda

Handbok Artikulate. Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

NetBeans 7. Avsikt. Projektfönster

Avslutning. Kapitel Komprimering av filer

Objektorienterad programmering i Java I

Laboration 10 - NetBeans

NetBeans 5.5. Avsikt. Projektfönster

Föreläsning 2 Verktyg m.m.

TDP005 Projekt: Objektorienterat system

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 3. Programmering, C och programmeringsmiljö

Laboration 10 - Eclipse

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Manual TorTalk version 1.3

TUTORIAL: SAMLING & KONSOLL

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Program. Kapitel make Program Interpreterande och kompilerande program

INSTALLATIONSHANDBOK

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Handbok Artikulate. Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll

Laboration 1: Linjär algebra

Lab5 för prgmedcl04 Grafik

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

Så här skriver du ditt första program i C++

1. Starta programmet 2. Välja projekt antingen redan skapat eller nytt

Uppgift 1 ( Betyg 3 uppgift )

ASR3 Språkmodeller Taligenk änningsgrammatiker

Välkomna till kursen i grundläggande programmering DVGA08, ISGA04

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg ) behöver inte redovisas

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Introduktion till datormiljön och Python

Introduktion till Matlab

Introduktion till programmering, hösten 2011

SF1672, Linjär Algebra med Matlab för F1 Lab0

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Installationsanvisning för kursens programvara på egen dator

Laboration: Whitebox- och blackboxtesting

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Kort-kort om utdelade användarkonton och datormiljön på NADA

Laboration 1. Grafisk produktion och tryckkvalitet (TNM015) Rastrering och objektiva kvalitetsmått. S. Gooran (VT2007)

Kom igång med Denna korta manual hjälper dig med att komma igång med programmen Vital och ViTex.

Gränssnitt för FakeGranska. Lars Mattsson

Språkets struktur och funktion, 7,5 hp

Guide till att använda Audacity för uttalsövningar

Editering, Kompilering och Exekvering av Javaprogram

Objektorienterad programmering D2

kl Tentaupplägg

DATORINTRODUKTION. Laboration E ELEKTRO. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren

Programmeringsteknik med C och Matlab

Objektorienterad Programmering (TDDC77)

Guider för specialprogrammen

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

E-tentavakt - Invigilator

Lathund för överföring av rapporter och ljudfiler

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Programsnickaren. Grunderna för hur du kommer igång och arbetar med Programsnickaren till Micro Rolltalk. Habilitering & Hjälpmedel

Publicera material i Blackboard

PC-teknik, 5 p LABORATION FILHANTERING

Statistiska språkmodeller med klass

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Voic i FirstClass

Delta i undervisning online via Zoom

Bruksanvisning. Bruksanvisning. Käyttöohje FIN. Brugsanvisning. User Manual. Gebruikershandleiding. DEFA SilentAlarm

Övningar för del I av kursen

Bilaga B Specifik programinformation

Handbok Sam. Peter H. Grasch

ANVÄNDARGUIDE VITAL & TALANDE TANGENTBORD

Kom igång med. Windows 8. DATAUTB MORIN AB

Word- sense disambiguation

Motivet finns att beställa i följande storlekar

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Taligenkänning i PMO

JAVA Mer om klasser och objektorientering

Programmering i C++ Kompilering från kommandoraden

Migrera till Word 2010

Felsökande av en Lego Mindstorm robot

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Spela in och spara din PowerPointpresentation

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Laboration 3, uppgift En klass för en räknare

DD1310 Programmering för OPEN1 LAB1: Laborationer i Python läsåret 2011/2012

1 Logga in 1. 2 Byta lösenord 1. 3 Hemkatalog 1. 4 Unixintroduktion Viktiga kommandon Läsa 3

TUTORIAL: KLASSER & OBJEKT

Elias Castegren. (Version 1, 2012)

Migrera till PowerPoint 2010

Laboration: Grunderna i MATLAB

Föreläsning 10. Paket Synlighet Arkiv. DA129A Programmering 1

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Transkript:

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 inspelningar av klockslag. 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. Vi kommer ha flera processer igång samtidigt under labben så se till att ha flera terminalfönster igång. DEL 1 Skapa en Språkmodell med Nuance 1. Börja med att hämta korpusen från labkontot: cp../../klockkorpus. 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 (ni kan ta en titt på dessa i filen X.missing som skapas)

c. Som resultat av nuance-compile får ni flera olika filer i biblioteket PaketNAMN. Kolla så att det skapats en hög filer där. När kompilering går fel säger Nuance till och om det är något fel i grammatiken brukar det står Rule:NR som hänvisar till en rad i grammatiken. Om det klagar på NL interpretation så är det bara att förbise (eftersom vi inte vill köra någon tolkning). 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 och säg ett klockslag (se till att micen sitter rätt och är påslaget med lagom volym) 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 nu? Jämför med värden för modellen i 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 genom att parsa dem. 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../../klockt*. Hämta också biblioteket klockyttranden därifrån som innehåller ljudfiler med klockyttranden. cp r../../klockyttranden. Nu har ni 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 word error rate (WER) för de olika filerna samt totalt? 4. Jämför paketen 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 Spela in egna filer Med javaprogrammet CorpusRecorder (@David Hjelm) kan ni pröva att spela in egna ljudfiler som kan användas för testning. Skapa först en fil med yttranden som ni vill testa och skriv ner ett yttrande per rad (små bokstäver, inga siffror): klockan fem klockan sju sju Sätt sedan igång CorpusRecorder med er nyskapta korpus (CORPUS) och ert namn.../../spelain corpus CORPUS speaker ERTNAMN Nu kommer ni se de yttranden ni har skrivit ner på skärmen och kan spela in dem och lyssna på dem. Spela in allihop och testa sedan taligenkänningen för något av era paket som i Del 4 med den testset-fil som skapas från CorpusRecorder. Verkar den känna igen er?