Nuance Tutorial & Workshop Anders Green KTH/NADA IPLab 2002-06-03.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
”Ett sätt att distribuera Business Objects via webben”
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Fortsättningskurs i Programmering lektion 6
2I1070 Lektion 2 KTH-MI Peter Mozelius Servlets och databaskopplingar.
Klassarv och inkapsling
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
Metoder i java Det finns två typer av metoder i java
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Utveckling med ramverket .net
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
Java servlets och databaskopplingar
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
Namnrum, räckvidd och rekursion Linda Mannila
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Java paket och jar-filer
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Nuance i Göteborg Nuance workshop Sthlm 3/
Ladda ner och installera JAVA Mahmud Al Hakim DynamicOS
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
 Who frågar efter en persons (eller personers) identitet (vem dem är).  Who is he?  Who are they?  Who is coming?
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
1-1 Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-1 Programmering 7.5 hp Programmering är... creativ, fascinerande, roligt,
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Lab Contact 1  Lab Assistants:  Meng Liu, Group B  Sara Abbaspour, Group A
Presentationens avskrift:

Nuance Tutorial & Workshop Anders Green KTH/NADA IPLab

© Anders Green 2001 Nuance-tutorial 3/ Nuance-tutorial/workshop  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)  Lunch  (eller när vi vill gå hem)  Diskussionsämnen —Tillämpningar & möjligheter —Begränsningar —Omvägar, genvägar, tips & tricks

© Anders Green 2001 Nuance-tutorial 3/ 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)   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å:   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

© Anders Green 2001 Nuance-tutorial 3/ 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å  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?

© Anders Green 2001 Nuance-tutorial 3/ Verktyg 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

© Anders Green 2001 Nuance-tutorial 3/ 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 av FootFan (Windows JAVA) Nuance-tutorial

© Anders Green 2001 Nuance-tutorial 3/ FotbollFan  Säg namnet på ett lag och du får se lagets resultat  Ex:  “visa nigeria”  “få se england”  “Sverige”  “England” Taligen- känning Dialog hantering Text- generator GameResult DB

© Anders Green 2001 Nuance-tutorial 3/ 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) recserver –package "c:\Fotfan\fotfan\fotfan" lm.Addresses=localhost nlm ntk a-x a1f1ac4 lm.Addresses=localhost start_nlm.bat: start_rec.bat: kodruta

© Anders Green 2001 Nuance-tutorial 3/ En minimal klass  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 Init private class 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 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; Functions Recognize Result x

© Anders Green 2001 Nuance-tutorial 3/ Initialisering  --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 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); }

© Anders Green 2001 Nuance-tutorial 3/ En minimal grammatik Nuance Grammar Builder  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 Grammatik ;kommentarer.FOTFAN [ [öppna visa starta]? COUNTRY:country { } ] COUNTRY [ sverige {return("swe")} england {return("gbr")} nigeria {return("nig")} ] toppgrammatik subgrammatik ”country” är en slot fotfan_master.slot-definitions: country

© Anders Green 2001 Nuance-tutorial 3/ Att-göra-lista 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( )  Skapa trådklass —Deklarera en RecResult i run() metoden —Anropa nsc.playAndRecognize( );  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

© Anders Green 2001 Nuance-tutorial 3/ Workshop  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

© Anders Green 2001 Nuance-tutorial 3/ GU

GU 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