import javax.speech.synthesis.*;
import javax.speech.*;
import java.util.Locale;
import java.net.URL;
import java.io.File;

class sintese_exemplo4{
    static Synthesizer synthesizer;

    public static void main(String args[]){
        try{
            Locale.setDefault(new Locale("en","EN"));
            synthesizer = Central.createSynthesizer(null);
            synthesizer.allocate();
         	
            //====================THE 4 WAYS TO SYNTHESIZE VOICE==========================
         	
            //example of method speakPlainText(String object, SpeakableListener object)
            synthesizer.speakPlainText("This is a Plain Text sample: Hi master",null);
         	
            //example of method speak(Speakable object, SpeakableListener object)
	    //refer to implementation of the class speakableFrame at the end of the file
            speakableFrame SP_Frame = new speakableFrame();		
            synthesizer.speak(SP_Frame,null);
				
            //example of method speak(URL object, SpeakableListener object)
            //refer to file ./sintese_exemplo5.jsml
            synthesizer.speak(new File("sintese_exemplo5.jsml").toURL(),null);

            //example of method speak(String JSML, SpeakableListener object);
            synthesizer.speak("<PROS RANGE=\"-50%\"
VOL=\"+15%\">This is a <EMP>JSML sample: Hi
Master!</EMP></PROS>",null);
         
            //==============================================================================         
        }
        catch(Exception e){
            System.out.println("Error message: "+e.toString());
        }
    }
}


class speakableFrame extends java.awt.Frame implements javax.speech.synthesis.Speakable {

    public String getJSMLText() {
        return("<PROS RANGE=\"-100%\"> This is a frame that might
be spoken.</PROS>");
    }
}