(noSynthesizerMessage("unlimited domain synthesizer"));
(noSynthesizerMessage("general domain synthesizer"));
    public static void main(String[] argv) {	boolean showEvents = false;	boolean showPropertyChanges = false;	for (int i = 0; i < argv.length; i++) {	    if (argv[i].equals("-showEvents")) {		showEvents = true;	    } else if (argv[i].equals("-showPropertyChanges")) {		showPropertyChanges = true;	    } else {		usage();		System.exit(0);	    }	}	System.out.println(" ** Mixed Voices - JSAPI Demonstration program **");	// alan is a limited-domain voice that only knows how talk	// about time.	Voice alan = new Voice("alan", 		Voice.GENDER_DONT_CARE, Voice.AGE_DONT_CARE, null);	// kevin in an 8khz unlimited-domain diphone voice	Voice kevin = new Voice("kevin", 		Voice.GENDER_DONT_CARE, Voice.AGE_DONT_CARE, null);	// kevinHQ in a 16khz unlimited-domain diphone voice	Voice kevinHQ = new Voice("kevin16", 		Voice.GENDER_DONT_CARE, Voice.AGE_DONT_CARE, null);	try {	    // Create a new SynthesizerModeDesc that will match the 	    // Unlimited domain FreeTTS Synthesizer.	    SynthesizerModeDesc unlimitedDesc = 		new SynthesizerModeDesc(		    "Unlimited domain FreeTTS Speech Synthesizer from Sun Labs",		    null,		    Locale.US,		    Boolean.FALSE,         // running?		    null);                 // voice	    final Synthesizer synthesizer1 			= Central.createSynthesizer(unlimitedDesc);	    if (synthesizer1 == null) {		System.err.println		    (noSynthesizerMessage("unlimited domain synthesizer"));		System.exit(1);	    }	    // Create a new SynthesizerModeDesc that will match the 	    // Limited domain FreeTTS Synthesizer.	    SynthesizerModeDesc limitedDesc = 		new SynthesizerModeDesc(		    "Limited domain FreeTTS Speech Synthesizer from Sun Labs",		    null,		    Locale.US,		    Boolean.FALSE,         // running?		    null);                 // voice	    final Synthesizer synthesizer2 		= Central.createSynthesizer(limitedDesc);	    if (synthesizer2 == null) {		System.err.println		    (noSynthesizerMessage("limited domain synthesizer"));		System.exit(1);	    }	    System.out.print("  Allocating synthesizers...");	    synthesizer1.allocate();	    synthesizer2.allocate();	    // get it ready to speak	    System.out.print("Loading voices...");	    synthesizer1.getSynthesizerProperties().setVoice(kevinHQ);	    synthesizer1.getSynthesizerProperties().setVoice(kevin);	    // setup a listener so we can see property changes on	    // synthesizer1	    if (showPropertyChanges) {		synthesizer1.getSynthesizerProperties().		    			addPropertyChangeListener(		    new PropertyChangeListener() {			public void propertyChange(PropertyChangeEvent pce) {			    if (pce.getNewValue() instanceof Voice) {				String newVoice = 				    ((Voice) pce.getNewValue()).getName();				System.out.println("  PCE Voice changed to " 				    + newVoice);			    } else {				System.out.println("  PCE " +				    pce.getPropertyName() + " changed from " 				    + pce.getOldValue() + " to " +				    pce.getNewValue() + ".");			    }			}		    }		);	    }	    if (showEvents) {		synthesizer1.addSpeakableListener(		    new SpeakableAdapter() {			public void markerReached(SpeakableEvent e) {			    dumpEvent(e);			}			public void speakableCancelled(SpeakableEvent e) {			    dumpEvent(e);			}			public void speakableEnded(SpeakableEvent e) {			    dumpEvent(e);			}			public void speakablePaused(SpeakableEvent e) {			    dumpEvent(e);			}			public void speakableResumed(SpeakableEvent e) {			    dumpEvent(e);			}			public void speakableStarted(SpeakableEvent e) {			    dumpEvent(e);			}			public void topOfQueue(SpeakableEvent e) {			    dumpEvent(e);			}			public void wordStarted(SpeakableEvent e) {			    dumpEvent(e);			}			private void dumpEvent(SpeakableEvent e) {			    System.out.println(" EVT: " + e.paramString() 				    + " source: " + e.getSource());			}		    }		);	    }	    	    System.out.println("And here we go!");	    synthesizer1.resume();	    synthesizer2.resume();	    	    // speak the "Hello world" string	    synthesizer1.speakPlainText("Hello! My name is Kevin.", null);	    synthesizer1.speakPlainText("I am a die phone synthesizer", null);	    synthesizer1.speakPlainText("I have a friend named Alan.", null);	    synthesizer1.speakPlainText("Listen to him count!", null);	    // get synth2 ready to speak	    synthesizer2.waitEngineState(Synthesizer.ALLOCATED);	    synthesizer2.resume();	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer2.speakPlainText("1 2 3 4 5 6 7 8 9 ten", null);	    synthesizer2.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText("Now listen to me count!", null);	    synthesizer1.speakPlainText("1 2 3 4 5 6 7 8 9 10.", null);	    synthesizer1.speakPlainText(		    "Now, let's try that a little bit faster.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setSpeakingRate(240.0f);	    synthesizer1.speakPlainText("1 2 3 4 5 6 7 8 9 10.", null);	    synthesizer1.speakPlainText("That's pretty fast.", null);	    synthesizer1.speakPlainText("Now lets go very slow.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setSpeakingRate(80.0f);	    synthesizer1.speakPlainText("1 2 3 4 5 6 7 8 9 10.", null);	    synthesizer1.speakPlainText("That is pretty slow.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setSpeakingRate(150.0f);	    synthesizer1.speakPlainText("Now back to normal", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setPitch(200);	    synthesizer1.speakPlainText("I can talk very high.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setPitch(50);	    synthesizer1.speakPlainText("and I can talk very low.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setPitch(100);	    synthesizer1.getSynthesizerProperties().setVolume(.8f);	    synthesizer1.speakPlainText("and I can talk very softly.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setVolume(1.0f);	    synthesizer1.speakPlainText(		"I can talk with a higher quality voice", null);	    synthesizer1.speakPlainText(		    "Here is a low quality tongue twister. "		    + "She sells seashells by the seashore.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.getSynthesizerProperties().setVoice(kevinHQ);	    synthesizer1.speakPlainText("And this is high quality. "		    + "She sells seashells by the seashore.", null);	    synthesizer1.speakPlainText(		    "The funny thing is, I do not have a tongue.", null);	    synthesizer1.speakPlainText(		"Hey Alan, what time is it where you are right now?", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer2.speakPlainText(		    "the time is now twenty past six.", null);	    synthesizer2.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText("Is that the exact time?", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer2.speakPlainText("Almost", null);	    synthesizer2.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText(		"Is it twenty past six In the morning or the evening?", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer2.speakPlainText("in the morning.", null);	    synthesizer2.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText(		    "Alan and I can talk at the same time", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText("1 2 3 4 5 6 7 8 9 11 12", null);	    synthesizer2.speakPlainText("1 2 3 4 5 6 7 8 9", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer2.waitEngineState(Synthesizer.QUEUE_EMPTY);	    synthesizer1.speakPlainText( "That is a bit confusing.", null);	    synthesizer1.speakPlainText( "Well, thanks. This was fun.", null);	    synthesizer1.speakPlainText("Goodbye everyone.", null);	    synthesizer1.waitEngineState(Synthesizer.QUEUE_EMPTY);	    	    // clean up	    synthesizer1.deallocate();	    synthesizer2.deallocate();	}	catch (Exception e) {	    e.printStackTrace();	}	System.exit(0);    }