freettssynthesizermodedesc.java

来自「FreeTTS is a speech synthesis system wri」· Java 代码 · 共 116 行

JAVA
116
字号
/** * 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. */package com.sun.speech.freetts.jsapi;import java.util.LinkedList;import java.util.List;import java.util.Locale;import javax.speech.Engine;import javax.speech.EngineCreate;import javax.speech.EngineException;import javax.speech.synthesis.SynthesizerModeDesc;import com.sun.speech.engine.synthesis.BaseVoice;import com.sun.speech.freetts.ValidationException;/** * Represents a SynthesizerModeDesc for the * FreeTTSSynthesizer. A FreeTTSSynthesizerModeDesc adds  * an audio player to the standard mode items. */public class FreeTTSSynthesizerModeDesc extends SynthesizerModeDesc implements EngineCreate {    /**     * Creates a fully-specified descriptor.     * Any of the features may be <code>null</code>.     *     * @param engineName  the name of the engine     * @param modeName   the name of the mode     * @param locale  the locale associated with this mode     */    public FreeTTSSynthesizerModeDesc( String engineName, String modeName,	    Locale locale) {        super(engineName, modeName, locale, Boolean.FALSE, null);    }    /**     * Returns the valid voices in this synthesizer mode.     *     * @return an array of valid voices, if no valid voices, it will     *    return an array of size 0     */    public javax.speech.synthesis.Voice[] getVoices() {        List voiceList = new LinkedList();        javax.speech.synthesis.Voice[] voices = super.getVoices();        int count = 0;        for (int i = 0; i < voices.length; i++) {            FreeTTSVoice freettsVoice = (FreeTTSVoice) voices[i];            try {                freettsVoice.validate();                voiceList.add(freettsVoice);                count++;            } catch (ValidationException ve) {                // don't do anything here if a FreeTTSVoice is invalid            }        }        javax.speech.synthesis.Voice[] validVoices =            new javax.speech.synthesis.Voice[count];        voiceList.toArray(validVoices);                return validVoices;    }        /**     * Returns true if this is a valid FreeTTSSynthesizerModeDesc.     * It is valid if it contains at least one valid Voice.     * Returns false otherwise.     *     * @throws ValidationException if this FreeTTSSynthesizerModeDesc     *    is invalid     */    public void validate() throws ValidationException {        javax.speech.synthesis.Voice[] voices = super.getVoices();        int invalidCount = 0;        String validationMessage = "";        for (int i = 0; i < voices.length; i++) {            try {                ((FreeTTSVoice) voices[i]).validate();            } catch (ValidationException ve) {                invalidCount++;                validationMessage += (ve.getMessage() + "\n");            }        }        if (invalidCount == voices.length) {            throw new ValidationException                (validationMessage + getModeName() + " has no valid voices.");        }    }    /**     * Constructs a FreeTTSSynthesizer with the properties of this mode     * descriptor.     *      * @return a synthesizer that mathes the mode     *     * @throws IllegalArgumentException  if the properties of this     * 		descriptor do not match any known engine or mode     * @throws EngineException if the engine could not be created     * @throws SecurityException if the caller does not have     * 		permission to use the speech engine     */    public Engine createEngine()        throws IllegalArgumentException, EngineException, SecurityException {        FreeTTSSynthesizer s = new FreeTTSSynthesizer(this);        return s;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?