Converting Text to Speech


The SpeakText.java file converts text to speech. Listing 3-3 shows the contents of the SpeakText.java file:

Listing 3-3: The SpeakText.java File
start example
 /* Import required io classes */ import java.io.File; /* Import required util classes */ import java.util.Locale; import java.util.Vector; import javax.speech.synthesis.SynthesizerAdapter; import javax.speech.synthesis.SynthesizerEvent; /* Import required speech classes */ import javax.speech.Central; import javax.speech.Engine; import javax.speech.EngineList; import javax.speech.synthesis.Synthesizer; import javax.speech.synthesis.SynthesizerModeDesc; import javax.speech.synthesis.SynthesizerProperties; import javax.speech.synthesis.Voice; /* Class: SpeakText - Speaks the text Fields: voiceName: Represents the voice  selected by the end user. synthesizer: Represents an object of Synthesizer class. Methods: speakSelText(): Uses the object of Synthesizer class to speak the text. closeSynthesizer(): Closes the synthesizer and stops the speaking operation. pauseSynthesizer(): Pauses the synthesizer. resumeSynthesizer(): Resumes the paused speaking operation of the synthesizer. */ public class SpeakText  extends SynthesizerAdapter {    /* Declare variables */    String l;    String voiceName;    SynthesizerModeDesc desc;    Synthesizer synthesizer;    TextPad txtpad;    /*    SpeakText:    Parameters:    k: String representing the text that the synthesizer speaks.    selvoice: String representing the voice selected by the end user.    Return Type: NA    */    public SpeakText(String k, String selvoice)     {       /*       Set the value of l to the text that the synthesizer speaks       */       l=k;       /*       Set the value of voiceName to the voice selected by the user       */       txtpad=new TextPad();       voiceName = selvoice;       System.out.println("Using voice: " + voiceName);       try        {          /*          Initialize an object of SynthesizerModeDesc class          */          desc = new SynthesizerModeDesc          (             null,                       "general",                  Locale.US,                  null,                       null);                      synthesizer = Central.createSynthesizer(desc);             /*             Prints the message if no synthesizer is available             */             if (synthesizer == null)              {                String message = "\nCan't find synthesizer.\n"                + "Make sure that there is a \"speech.properties\" file "                + "at either of these  locations: \n";                message += "user.home: "                + System.getProperty("user.home") + "\n";                message += "java.home/lib: " + System.getProperty("java.home")                + File.separator + "lib\n";                System.err.println(message);                System.exit(1);             }             /*             Allocate a synthesizer to speak text.             */             synthesizer.allocate();             synthesizer.resume();             desc = (SynthesizerModeDesc) synthesizer.getEngineModeDesc();             /*             Retrieve all the available voices in an array             */             Voice[] voices = desc.getVoices();             Voice voice = null;             for (int i = 0; i < voices.length;   i++)              {                if (voices[i].getName().equals(voiceName))                 {                   voice = voices[i];                   break;                }             }             /*             Print error message if selected voice is not available             */             if (voice == null)              {                System.err.println("Synthesizer does not have a voice named "                + voiceName + ".");                System.exit(1);             }             /*             Set the selected voice for the synthesizer             */             synthesizer.getSynthesizerProperties().setVoice(voice);          }          catch(Exception e)          {             System.out.println(e);          }       }    /*    speakSelText(): Speaks the text    Parameters: NA    Return Value: NA    */    public void speakSelText(TextPad st)    {       try       {          txtpad=st;          /*          Invoke speakPlainText() method to speak the text.          */          synthesizer.cancelAll();          synthesizer.speakPlainText(l, null);          System.out.println("Speaking Text");       }       catch (Exception e)        {          e.printStackTrace();       }       try       {          /*          Invoke waitEngineState() method to wait end of speech.          */          synthesizer.waitEngineState(Synthes zer.QUEUE_EMPTY);          txtpad.stopText.setEnabled(false);          txtpad.speakText.setEnabled(true);          txtpad.pause.setEnabled(false);          txtpad.resume.setEnabled(false);          txtpad.stop.setEnabled(false);       }       catch(Exception e)       {       }    }    /*    closeSynthesizer(): Close the synthesizer and  stop the speaking operation.    Parameters: NA    Return Type: NA    */    public void closeSynthesizer()    {       try       {          /*          Stop the synthesizer and cancel the speaking operation          */          synthesizer.cancelAll();          system.out.println("Speaking Operation Cancelled");       }       catch (Exception e)        {          e.printStackTrace();       }    }    /*    pauseSynthesizer(): Pause the synthesizer. This pauses the text that the synthesizer is     currently speaking.    Parameters: NA    Return Value: NA    */    public void pauseSynthesizer()    {    try       {          /*          Pause the synthesizer          */          synthesizer.pause();          System.out.println("Speaking Operation Paused");       }       catch(Exception e)       {          e.printStackTrace();       }    }    /*    resumeSynthesizer(): Resumes the speaking operation that is paused by the end user.    Parameters: NA    Return Value: NA    */    public void resumeSynthesizer()    {       try       {          /*          Resume the synthesizer that speaks the text.          */          synthesizer.resume();          System.out.println("Speaking Operation Resumed");       }       catch(Exception e)       {          e.printStackTrace();       }    } } 
end example
 

Download this listing .

In the above code, the constructor of the SpeakText class takes two strings as input parameters. The k string represents the text specified by an end user. The selvoice string represents the voice selected by an end user in which the synthesizer reads out the text.

The methods defined in Listing 3-3 are:

  • speakSelText(): Uses the object of the Synthesizer class to read out the text specified by an end user.

  • closeSynthesizer (): Closes the synthesizer and stops the speech.

  • pauseSynthesizer (): Pauses the synthesizer.

  • resumeSynthesizer (): Resumes the paused synthesizer.




Java InstantCode. Developing Applications using Java Speech API
Java InstantCode. Developing Applications using Java Speech API
ISBN: N/A
EAN: N/A
Year: 2004
Pages: 46

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net