Java™ Speech API Programmer’s Guide Version1.0—October26,1998 A Sun Microsystems, Inc. Business 901 San Antonio Road Palo Alto, CA 94303 USA 415 960-1300 Fax 415 969-9131 Copyright1997-1998SunMicrosystems,Inc. 901SanAntonioRoad,PaloAlto,California94303U.S.A. Allrightsreserved. RESTRICTEDRIGHTSLEGEND:Use,duplication,ordisclosurebytheUnitedStatesGovernmentissubjecttotherestrictionssetforthin DFARS252.227-7013(c)(1)(ii)andFAR52.227-19. ThereleasedescribedinthisdocumentmaybeprotectedbyoneormoreU.S.patents,foreignpatents,orpendingapplications.Sun Microsystems,Inc.(SUN)herebygrantstoyouafullypaid,nonexclusive,nontransferable,perpetual,worldwidelimitedlicense(withoutthe righttosublicense)underSUN'sintellectualpropertyrightsthatareessentialtopracticethisspecification.Thislicenseallowsandislimitedto thecreationanddistributionofclean-roomimplementationsofthisspecificationthat(i)arecompleteimplementationsofthisspecification,(ii) passalltestsuitesrelatingtothisspecificationthatareavailablefromSUN,(iii)donotderivefromSUNsourcecodeorbinarymaterials,and (iv)donotincludeanySUNbinarymaterialswithoutanappropriateandseparatelicensefromSUN. Java,PersonalJava,EmbeddedJava,JavaBeans,JavaFoundationClasses,JavaScript,HotJavaand“WriteOnce,RunAnywhere”aretrademarks ofSunMicrosystems,Inc.intheUnitedStatesandothercountries.Sun,SunMicrosystems,SunMicrosystemsComputerCorporation,theSun logo,theSunMicrosystemsComputerCorporationlogo.UNIX®isaregisteredtrademarkintheUnitedStatesandothercountries,exclusively licensedthroughX/OpenCompany,Ltd.Adobelogo™isatrademarkofAdobeSystems,Incorporated.Allotherproductnamesmentioned hereinarethetrademarksoftheirrespectiveowners. THISPUBLICATIONISPROVIDED“ASIS”WITHOUTWARRANTYOFANYKIND,EITHEREXPRESSORIMPLIED,INCLUDING,BUT NOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITY,FITNESSFORAPARTICULARPURPOSE,ORNON- INFRINGEMENT. THISPUBLICATIONCOULDINCLUDETECHNICALINACCURACIESORTYPOGRAPHICALERRORS.CHANGESAREPERIODICALLY ADDEDTOTHEINFORMATIONHEREIN;THESECHANGESWILLBEINCORPORATEDINNEWEDITIONSOFTHEPUBLICATION. SUNMICROSYSTEMS,INC.MAYMAKEIMPROVEMENTSAND/ORCHANGESINTHEPRODUCT(S)AND/ORTHEPROGRAM(S) DESCRIBEDINTHISPUBLICATIONATANYTIME. Please Recycle Table of Contents List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii About this Guide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii Web Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiv Related Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvi Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Chapter 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 What is the Java Speech API? . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Design Goals for the Java Speech API . . . . . . . . . . . . . . . . . . . 2 1.3 Speech-Enabled Java Applications . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1 Speech and other Java APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Applications of Speech Technology . . . . . . . . . . . . . . . . . . . . . 3 1.4.1 Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.2 Telephony Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.3 Personal and Embedded Devices . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.4 Speech and the Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.6 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 iii Chapter 2 Speech Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1 Speech Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Speech Synthesis Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.2 Speech Synthesis Assessment . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Speech Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 Rule Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.2 Dictation Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.3 Limitations of Speech Recognition . . . . . . . . . . . . . . . . . . . . 16 Chapter 3 Designing Effective Speech Applications . . . . . . . . . . . . . . 19 3.1 When to Use Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Design for Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.1 Transience: What did you say? . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.2 Invisibility: What can I say? . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.3 Asymmetry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3.4 Speech synthesis quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3.5 Speech recognition performance . . . . . . . . . . . . . . . . . . . . . . 24 3.3.6 Recognition: flexibility vs. accuracy . . . . . . . . . . . . . . . . . . . 25 3.4 Design Issues for Speech-Only Applications . . . . . . . . . . . . . 26 3.4.1 Feedback & Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.4.2 Prompting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4.3 Handling Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 Design Issues for Multi-Modal Applications . . . . . . . . . . . . . 29 3.5.1 Feedback & Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.2 Prompting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.3 Handling Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6 Involving Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6.1 Natural Dialog Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6.2 Wizard-of-Oz Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.6.3 Usability Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.7 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.8 For More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 iv Chapter 4 Speech Engines: javax.speech. . . . . . . . . . . . . . . . . . . . . . . 35 4.1 What is a Speech Engine? . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2 Properties of a Speech Engine . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3 Locating, Selecting and Creating Engines . . . . . . . . . . . . . . . 39 4.3.1 Default Engine Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.3.2 Simple Engine Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.3 Advanced Engine Selection . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.3.1 Refining an Engine List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4 Engine States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4.1 State systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4.2 Allocation State System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.3 Allocated States and Call Blocking . . . . . . . . . . . . . . . . . . . . 47 4.4.4 Pause - Resume State System . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.4.5 State Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.6 Synthesizer Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.7 Recognizer Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.5 Speech Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.5.1 Event Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.6 Other Engine Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.6.1 Runtime Engine Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.6.2 Audio Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.6.3 Vocabulary Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Chapter 5 Speech Synthesis: javax.speech.synthesis . . . . . . . . . . . . . . 57 5.1 “Hello World!” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 Synthesizer as an Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.3 Speaking Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.4 Speech Output Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.5 Monitoring Speech Output . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.6 Synthesizer Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.6.1 Selecting Voices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.6.2 Property Changes in JSML . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.6.3 Controlling Prosody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 v Chapter 6 Speech Recognition: javax.speech.recognition . . . . . . . . . 71 6.1 “Hello World!” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.2 Recognizer as an Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.3 Recognizer State Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.3.1 Inherited States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.3.2 Recognizer Focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.3.3 Recognition States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.3.3.1 Speech Events vs. Other Events . . . . . . . . . . . . . . . . . . . . . . . 80 6.3.3.2 Speech Input Event Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.3.3.3 Non-Speech Event Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.3.4 Interactions of State Systems . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.4 Recognition Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.4.1 Grammar Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.2 Committing Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6.4.3 Grammar Activation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.5 Rule Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.5.1 Rule Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.5.2 Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.5.3 Rule Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.5.3.1 Advanced Rule Programming . . . . . . . . . . . . . . . . . . . . . . . . 93 6.5.4 Dynamic Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.5.5 Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.6 Dictation Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.6.1 Dictation Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.7 Recognition Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.7.1 Result Finalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.7.2 Result Interface Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.7.3 Result Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.7.3.1 Result Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.7.3.2 FinalResult Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.7.3.3 FinalDictationResult Interface . . . . . . . . . . . . . . . . . . . . . . . 107 6.7.3.4 FinalRuleResult Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.7.4 Result Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.7.5 ResultListener Attachment . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.7.6 Recognizer and Result States . . . . . . . . . . . . . . . . . . . . . . . . 110 6.7.6.1 Updating Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 vi 6.7.7 Grammar Finalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.7.8 Token Finalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.7.9 Finalized Rule Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.7.9.1 Result Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.7.9.2 Alternative Guesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.7.9.3 Result Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.7.9.4 Result Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 6.7.10 Finalized Dictation Results. . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.7.10.1 Alternative Guesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.7.10.2 Result Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.7.11 Result Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.7.12 Result Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.7.13 Rejected Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.7.13.1 Rejection Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.7.14 Result Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6.7.15 Storing Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.8 Recognizer Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.9 Speaker Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.10 Recognizer Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 vii viii List of Figures Chapter 1 Introduction Chapter 2 Speech Technology Chapter 3 Designing Effective Speech Applications Chapter 4 Speech Engines: javax.speech 4-1 Engine allocation state system . . . . . . . . . . . . . . . . . . . . . . . . .47 4-2 PAUSED and RESUMED Engine states . . . . . . . . . . . . . . . . .49 Chapter 5 Speech Synthesis: javax.speech.synthesis 5-1 Synthesizer states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Chapter 6 Speech Recognition: javax.speech.recognition 6-1 Recognizer states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 6-2 Result states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 ix Java Speech Application Programming Interface x
Description: