?? emacspeakserver.java
字號:
/** * Copyright 2003 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and * redistribution of this file, and for a DISCLAIMER OF ALL * WARRANTIES. */import java.io.File;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.util.Locale;import javax.speech.Central;import javax.speech.Engine;import javax.speech.EngineException;import javax.speech.synthesis.Synthesizer;import javax.speech.synthesis.SynthesizerModeDesc;import javax.speech.synthesis.SynthesizerProperties;import javax.speech.synthesis.Voice;/** * Provides text-to-speech server for Emacspeak. */public class EmacspeakServer extends TTSServer { // synthesizer related variables private Synthesizer synthesizer; private String voiceName; private Voice voice; /** * Constructs a EmacspeakServer. */ public EmacspeakServer(String voiceName) { loadSynthesizer(voiceName); } /** * Creates and loads the synthesizer. */ private void loadSynthesizer(String voiceName) { voice = new Voice(voiceName, Voice.GENDER_DONT_CARE, Voice.AGE_DONT_CARE, null); SynthesizerModeDesc modeDesc = new SynthesizerModeDesc( null, "general", Locale.US, null, null); try { synthesizer = Central.createSynthesizer(modeDesc); if (synthesizer == null) { System.err.println(noSynthesizerMessage()); System.exit(1); } synthesizer.allocate(); synthesizer.resume(); synthesizer.getSynthesizerProperties().setVolume(1.0f); synthesizer.getSynthesizerProperties().setVoice(voice); } catch (Exception e) { System.out.println("Error creating synthesizer"); System.exit(1); } } /** * Returns a "no synthesizer" message, and asks * the user to check if the "speech.properties" file is * at <code>user.home</code> or <code>java.home/lib</code>. * * @return a no synthesizer message */ static private String noSynthesizerMessage() { String message = "No synthesizer created. This may be the result of any\n" + "number of problems. It's typically due to a missing\n" + "\"speech.properties\" file that should be at either of\n" + "these locations: \n\n"; message += "user.home : " + System.getProperty("user.home") + "\n"; message += "java.home/lib: " + System.getProperty("java.home") + File.separator + "lib\n\n" + "Another cause of this problem might be corrupt or missing\n" + "voice jar files in the freetts lib directory. This problem\n" + "also sometimes arises when the freetts.jar file is corrupt\n" + "or missing. Sorry about that. Please check for these\n" + "various conditions and then try again.\n"; return message; } /** * Spawns a ProtocolHandler depending on the current protocol. * * @param socket the socket that the spawned protocol handler will use */ protected void spawnProtocolHandler(Socket socket) { try { JSAPIEmacspeakHandler handler = new JSAPIEmacspeakHandler(socket, synthesizer); (new Thread(handler)).start(); } catch (Exception e) { e.printStackTrace(); } } /** * Sets the speaking rate of the voice. * * @param wpm the speaking rate (words per minute) */ public void setRate(float wpm) { try { synthesizer.getSynthesizerProperties().setSpeakingRate(wpm); } catch (java.beans.PropertyVetoException e) { // ignore and do nothing } } /** * Starts this TTS Server. */ public static void main(String[] args) { String voiceName = (args.length > 0) ? args[0] : "kevin16"; System.out.println(); System.out.println("Using voice: " + voiceName); System.out.println(); EmacspeakServer server = new EmacspeakServer(voiceName); if (args.length > 1) { float wpm = Float.parseFloat(args[1]); server.setRate(wpm); } (new Thread(server)).start(); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -