📄 answertext.java
字号:
/*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 java.net.URL;/*Import required speech classes*/import javax.speech.synthesis.*;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:AnswerText-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 AnswerText extends SynthesizerAdapter{ /* Declare variables */ URL url; String l; String voiceName; SynthesizerModeDesc desc; Synthesizer synthesizer; AutoAnswerObserver txtpad; /* AnswerText(): Parameters: k:String representing the text that the synthesizer speaks. selvoice:String representing the voice selected by the end user. Return Type:NA */ public AnswerText(String k,String selvoice) { /* Set the value of l to the text that the synthesizer speaks */ l=k; 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); } } /* answerSelText():Speaks the text Parameters:NA Return Value:NA */ public void answerSelText(AutoAnswerObserver 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(Synthesizer.QUEUE_EMPTY); } 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(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -