📄 the answertext.java file.txt
字号:
/*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 + -