📄 the speaktext.java file.txt
字号:
/* Import required packages*/
import java.io.File;
import java.util.Locale;
import java.util.Vector;
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-Converts the text value to speech.
Methods:
listAllVoices(): Retrieves all the voices that the end user's system supports
*/
public class SpeakText
{
/*
listAllVoices():List all the system voices.
Parameters:
modeName:An object of String class.
Return Type: NA
*/
public static void listAllVoices(String modeName)
{
System.out.println();
/*
Print the mode name and locale for the voice synthesizer
*/
System.out.println(
"All " + modeName + " Mode JSAPI Synthesizers and Voices:");
SynthesizerModeDesc required = new SynthesizerModeDesc(
null,
modeName,
Locale.US,
null,
null);
/*
Retrieve all the available synthesizers
*/
EngineList engineList = Central.availableSynthesizers(required);
/*
Start a loop from 0 to the total number of available synthesizers
*/
for (int i = 0; i < engineList.size(); i++)
{
SynthesizerModeDesc desc = (SynthesizerModeDesc) engineList.get(i);
/*
Print the name, mode, and locale
*/
System.out.println(" " + desc.getEngineName()
+ " (mode=" + desc.getModeName()
+ ", locale=" + desc.getLocale() + "):");
/*
Retrieve all the available voices in an array
*/
Voice[] voices = desc.getVoices();
/*
Print all the available voices on console
*/
for (int j = 0; j < voices.length; j++)
{
System.out.println(" " + voices[j].getName());
}
}
}
/*
SpeakText(): Default constructor of SpeakText class
Parameter:
k: An object of String class.
Return Type:NA
*/
public SpeakText(String k)
{
String l=k;
/*
List all the available voices by calling the ListAllVoices() method.
*/
listAllVoices("general");
/*
Set the voice to kevin16
*/
String voiceName = "kevin16";
System.out.println();
System.out.println("Using voice: " + voiceName);
try
{
SynthesizerModeDesc desc = new SynthesizerModeDesc
(
null,
"general",
Locale.US,
null,
null);
Synthesizer synthesizer = Central.createSynthesizer(desc);
/*
Check if the value of synthesizer is null
*/
if (synthesizer == null)
{
/*
Print the error message
*/
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 the synthesizer
*/
synthesizer.allocate();
synthesizer.resume();
/*
Retrieve the engine mode description of the synthesizer
*/
desc = (SynthesizerModeDesc) synthesizer.getEngineModeDesc();
/*
Retrieve the voices for the synthesizer
*/
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;
}
}
/*
Checks if no voice exists
*/
if (voice == null)
{
/*
Print a message that the voice selected does not exists
*/
System.err.println("Synthesizer does not have a voice named "+ voiceName + ".");
System.exit(1);
}
/*
Set the voice for the synthesizer
*/
synthesizer.getSynthesizerProperties().setVoice(voice);
/*
Speak the text using the speakPlainText() method
*/
synthesizer.speakPlainText(l, null);
synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -