160 likes | 429 Views
Nuance Tutorial & Workshop. Anders Green KTH/NADA IPLab 2002-06-03. Nuance-tutorial/workshop . 10 - 12 Intro till Nuance Var-finns-och-hur-komma-igång-varför-funkar-det-inte-aha-nuså! Verktyg Nuance Grammar Builder VBuilder API:er Java SpeechChannel C++: RCEngine, VRSAPI
E N D
Nuance Tutorial & Workshop Anders Green KTH/NADA IPLab 2002-06-03
Nuance-tutorial/workshop • 10 - 12 Intro till Nuance • Var-finns-och-hur-komma-igång-varför-funkar-det-inte-aha-nuså! • Verktyg • Nuance Grammar Builder • VBuilder • API:er • Java SpeechChannel • C++: RCEngine, VRSAPI • C, RCAPI • Exempel/demo • Nuance -> Java <-> (Prolog) • Prologdelen utgår (tidsbrist/off-topic) • 12 - 13 Lunch • 13 - 16 (eller när vi vill gå hem) • Diskussionsämnen • Tillämpningar & möjligheter • Begränsningar • Omvägar, genvägar, tips & tricks
Nuance taligenkänning-varfördå-vardå? • Taligenkänning på svenska • Kostnadsfri utvecklarlicens (1 igenkännare) • Kan hantera telefonikort • Väldokumenterat API • Unix & Windows • Dock ej linux (vad det verkar) • http://www.nuance.com/ • ASR & Verifiering: US/Canadian English, UK English, Australian/New Zealand English, Singapore English, South African English, European French, Canadian French, Latin American Spanish, European Spanish, Brazilian Portuguese, Italian, German/Austrian German, Swiss German, Dutch, Swedish, Norwegian, Danish, Czech, Greek, Hebrew, Turkish, Korean, Japanese, Cantonese (Hong Kong-China), Mandarin Chinese (China, Taiwan), and Arabic (Jordan). • Ladda ner på: • http://extranet.nuance.com/developer/ • Installera på en maskin med rätt* ljudkort** eller telefonikort*** *) Soundblasterkompatibelt • IBM Thinkpad t22 • Dell Latitude CPt • PC med ett vanligt hederligt kort (inga specialkort) **) Kort som har ESS chipset verkar fungera sämre ***) Till exempel ett DSP-kort som Dialogic
Varför funkar det inte? • Native-igenkänning funkar inte med ljudkortet i maskinen • Arghh!! Åtgärd, byt maskin, typ • Ej startat licenshanterare • Starta en licenshanterare med rätt licensnummer som du hittar på http://extranet.nuance.com/developer/ • Sökväg till grammatikpaket fel • Se till att det finns ett kompilerat grammatikpaket • Ange var servern körs med lm.addresses • Vad kan man inte göra? • Få det att fungera på Linux • Få ut tidsstämplar från igenkänningsresultat direkt från API:t • Omväg finns genom partiella resultat • dock ej via JAVA • Använda för diktering • Köra det på valfri bärbar PC • Fler problem?
V-Builder IDE VoiceXML Nuance SpeechObjectsTM. Bygger dialoger med hjälp av fördefinierade objekt Nuance Speech Channel API:er Nuance Verifier Talarverifiering Nuance Grammar Builder IDE Skapa, kompilera och testa grammatikpaket I ett BNF-liknande format Har viss typkonvertering Semantik (enkel) kan specificeras med hjälp av slottar Verktyg
Om API:er • RCEngine: • C++ class that gives you direct access to recognition client functionality, including recognition, recording and playback, and call control. The RCEngine gives you a high level of control over event flow through a set of asynchronous notifications. • Finns tillgängligt som exempel med socket-koppling • Kräver t ex Visual Studio med C++ för att kunna kompilera • VRSAPI: • C++ class that lets you access recognition functionality as if you were communicating directly with the recognition server. • Alternativ till RCEngine (vet ej skillnad) • Java SpeechChannel: • The Java SpeechChannel interface defines methods you can implement to enable access to the Nuance recognition engine on a specific platform, including access to dynamic grammar and speaker verification functionality. • Verkar fungera med jdk 1.3 • Se senare exempel • RCAPI: • Provides functionality similar to the RCEngine via a set of C functions.
Design avFootFan(Windows 2000 + JAVA) Nuance-tutorial 2002-06-03
FotbollFan • Säg namnet på ett lag och du får se lagets resultat • Ex: • “visa nigeria” • “få se england” • “Sverige” • “England” GameResult DB Dialog hantering Taligen-känning Text- generator
Nuance SpeechChannel • Java Speech Channel • Java API (native-bibliotek) • Något färre funktioner än övriga API:er • Implementerar API till en igenkänningsklient • Server startas med bat-fil (dos) • Grammatiker anges vid start • Grammatiker förkompileras • Nuance licenshanterare (nlm) • Måste vara startad vid kompilering av grammatiker samt vid körning av server • Utvecklingslicensen medger att man kör en klient • ”lm.addresses” berättar var serv ern körs (ex lm.addresses=localhost) kodruta start_nlm.bat: nlm ntk7-100062003-a-x12-00347a1f1ac4 lm.Addresses=localhost start_rec.bat: recserver –package "c:\Fotfan\fotfan\fotfan" lm.Addresses=localhost
Importera Speech Channel Skapa en konfiguration med startNuance() Skapa ett SpeechChannel-objekt Skapa applikationsspecifika saker fönsterobjekt, knappar etc datakopplingar RunnableRecognition: Tråd som visar resultatet från en igenkänning (dör sedan) RecResult Sätter igång en igenkännare recognize Skapar tråden x Result Recognize En minimal klass Init Functions import vcommerce.core.util.*; import vcommerce.core.sc.*; import nuance.core.sc.*; import nuance.core.util.*; public class Frame1 extends JFrame { // Nuance stuff NuanceConfig config; NuanceSpeechChannel nsc; <konfigurera nuance (se nästa sida)> <fönstersaker> privateclass RunnableRecognition implements Runnable { public void run() { RecResult result; try { //get the result result = recognitionFunction(); displayRecResult(result.getString("results[0].text")); } catch (Exception e) { } } } // grammar name is “.FOTFAN” (top grammar) protected RecResult recognitionFunction () throws Exception { return nsc.playAndRecognize(".FOTFAN"); } // called whenever we should recognize stuff void recognize() { new Thread(new RunnableRecognition()).start(); } } // Frame1 end
--package: Säger var den kompilerade grammatiken är lm.addresses Talar om för NSC var den kan hitta igenkänningsklienten (recserver) client.RecordDirectory Var ska loggarna hamna client.RecordFilename %NUANCE%\doc\api\index.html %NUANCE%\doc\api\parameters\frame.html Initialisering Initialize Nuance Speech Channel void startNuance() { // Requires a running recognition server config = new NuanceConfig(); String[] params = { // Grammar location "-package","C:/FotFan/fotfan/fotfan", // Where is the server running "lm.Addresses=localhost", // Name of log-directory "client.RecordDirectory=C:/FotFan/logs", // Fileformat "client.RecordFilename=fotlog%4d" }; try { config.buildFromCommandLine(params); nsc = new NuanceSpeechChannel(config); } catch (Exception e) { System.out.println("Start Nuance failed:" + e); } }
Använd Nuance Grammar Builder Kompilera fotfan_master Swedish.1.2 -o fotfan -auto_pron lm.Addresses=localhost Glöm inte att starta Nuance licenshantering(nlm)! Specificera lm.Addresses En minimal grammatik Grammatik ;kommentarer .FOTFAN [ [öppna visa starta]? COUNTRY:country {<country $country>} ] COUNTRY [ sverige {return("swe")} england {return("gbr")} nigeria {return("nig")} ] toppgrammatik ”country” är en slot subgrammatik fotfan_master.slot-definitions: country
Java: (skapa en java-applikation med knappar etc) Inititera Nuance Speech Channel NuanceConfig (nsc) Bygg konfigstränglista (String[]) Var körs (lm.addresses) Grammatikens plats (--package) Logginfo (client. etc) buildFromCommandLine(<konfigsträng>) Skapa trådklass Deklarera en RecResult i run() metoden Anropa nsc.playAndRecognize(<grammatiknamn>); Definiera funktion som skapar en tråd Recognize() I Nuance Grammar Builder Skapa en grammatik Definiera slottar Kompilera Dos Starta NLM Ange lm.addresses Starta en recserver med –package Ange lm.addresses Starta java-applikationen Det är möjligt att starta både nlm och recserver inifrån java men det är krångligt att sätta alla nödvändiga parametrar. Förslag emottages… Prolog Kan användas Jasper funkar utmärkt Att-göra-lista
Diskussionsämnen Format Tillämpningar & möjligheter Göteborg Robot Begränsningar Omvägar, genvägar, tips & tricks Dialogic Ljud på andra sätt Voxi X10 Lägga upp -maila ut Workshop
Göteborg Ljudkort Ingen dokumentation för ljudkort Extigy kanske är lösningen Barge-in IP-telefoni kan användas, men svårt pga dålig dokumentation IP-telefoni Ophone Netmeeting Linux: H323 paket för ip-telefoni Licens-problem För få licenser (t ex vid flerspråkighet) Nlm lämnar inte tillbaka licenser tillräckligt snabbt Asynkron taligenkänning/talsyntes kräver att man kör två versioner recserver Auto-generera grammatiker HPSG, Typteoretiska ramverk VoiceXML (sun har en teknik preview/early access) Statistiska språkmodeller Parallella igenkännare Global och lokal grammatik Alt: dynamisk viktning Flexibel turtagning Barge-in Parsning av feedback vs. bidrag Hålla reda på när användare avbruter (vad var det som sades när avbrott skedde?) Betoning Hitta betonade ord Telefonkort Telefonkortet ip-telefoni Utforska semantik Nu separat modul Talarspecifik igenkännng från talaroberoende Frågor: Erfarenhet av fyllda pauser (Gabriel->Staffan, David) GU: Vi har inte gjort några studier, men vi har fått det att funka för demos Vi vill känna igen fraser GU