⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbrolavoice.java

📁 这是java 开发的的免费语音播放插件,很值得学习参考!!!!!!!!!!!!111
💻 JAVA
字号:
/** * Copyright 2002 DFKI GmbH. * Portions Copyright 2002 Sun Microsystems, Inc. * All Rights Reserved.  Use is subject to license terms. * * See the file "license.terms" for information on usage and * redistribution of this file, and for a DISCLAIMER OF ALL * WARRANTIES. */package de.dfki.lt.freetts.en.us;import com.sun.speech.freetts.util.Utilities;import java.io.File;import java.net.URL;import com.sun.speech.freetts.Item;import com.sun.speech.freetts.ProcessException;import com.sun.speech.freetts.Relation;import com.sun.speech.freetts.Utterance;import com.sun.speech.freetts.UtteranceProcessor;import com.sun.speech.freetts.Voice;import com.sun.speech.freetts.en.us.CMUVoice;import com.sun.speech.freetts.en.us.CMULexicon;import de.dfki.lt.freetts.mbrola.ParametersToMbrolaConverter;import de.dfki.lt.freetts.mbrola.MbrolaCaller;import de.dfki.lt.freetts.mbrola.MbrolaAudioOutput;import java.io.IOException;import com.sun.speech.freetts.Age;import com.sun.speech.freetts.Gender;import java.util.Locale;/** * Defines an unlimited-domain diphone synthesis based voice using * the MBROLA synthesis. */public class MbrolaVoice extends CMUVoice {    private String databaseDirectory; // where the voice database is    private String database;          // name of the voice database    private static final String MRPA_TO_SAMPA_RENAME_LIST =        "V ah i iy I ih U uh { ae @ ax r= er A aa O ao u uw E eh EI ey AI ay OI oy aU aw @U ow j y h hh N ng S sh T th Z zh D dh tS ch dZ jh _ pau";        /**     * Creates an MbrolaVoice.     *     * @param databaseDirectory the directory within the MBROLA directory     *    where the voice database of this voice is located     * @param database the name of the voice database of this voice     * @param rate the rate of the voice     * @param pitch the pitch of the voice     * @param range the range of the voice     * @param name the name of the voice     * @param gender the gender of the voice     * @param age the age of the voice     * @param description a human-readable string providing a     * description that can be displayed for the users.     * @param locale the locale of the voice     * @param domain the domain of this voice.  For example,     * @param organization the organization which created the voice     * @param lexicon the lexicon to use     */    public MbrolaVoice(String databaseDirectory,                        String database, float rate, float pitch, float range,                       String name, Gender gender, Age age,                       String description, Locale locale, String domain,                       String organization, CMULexicon lexicon) {	super(name, gender, age, description, locale,              domain, organization, lexicon);        setRate(rate);        setPitch(pitch);        setPitchRange(range);        this.databaseDirectory = databaseDirectory;        this.database = database;    }    //[[Providing the Mbrola classes via getUnitSelector() and    // getUnitConcatenator() is just a hack allowing us to use    // the current CMUVoice.java framework. It only means that    // after the Durator and the ContourGenerator, the classes    // process the utterance (Selector before Concatenator).]]    /**     * Returns the unit selector to be used by this voice.     * Derived voices typically override this to customize behaviors.     *      * @return the unit selector     *      * @throws IOException if an IO error occurs while getting     *     processor     */    protected UtteranceProcessor getUnitSelector() throws IOException {        return new ParametersToMbrolaConverter();    }    /**     * Returns the command line that invokes the MBROLA executable.     * The command will be in the form of:     *     * <pre> {mbrolaExecutable} -e -R {mbrolaRenameList} {mbrolaVoiceDB}      * - -.raw </pre>     */    protected String[] getMbrolaCommand() {        // Construct the mbrola command in such a way that        // mbrola reads from stdin and writes raw, headerless audio data        // to stdout; translates CMU us radio to sampa phonetic symbols;        // and only complains, but does not abort, when encountering an        // unknown diphone:        String[] cmd =              {getMbrolaBinary(), "-e", "-R",  getRenameList(),              getDatabase(), "-", "-.raw"};         if (false) {             for (int i = 0; i < cmd.length; i++) {                 System.out.println(cmd[i]);             }         }        return cmd;    }    /**     * Returns the absolute name of the MBROLA directory.     *     * @return the absolute name of the MBROLA directory     */    public String getMbrolaBase() {        return Utilities.getProperty("mbrola.base", ".");    }    /**     * Returns the absolute file name of the MBROLA binary.     *     * @return the absolute file name of the MBROLA binary     */    public String getMbrolaBinary() {        return getMbrolaBase() + File.separator + "mbrola";    }    /**     * Returns the absolute file name of the MBROLA phonetic symbols     * rename table.     *     * @return the absolute file name of the rename table     */    public String getRenameList() {        return MRPA_TO_SAMPA_RENAME_LIST;    }    /**     * Returns the absolute file name of the Voice database     * this MbrolaVoice uses.     *     * @return the absolute file name of the Voice database     */    public String getDatabase() {        return getMbrolaBase() + File.separator +             databaseDirectory + File.separator + database;    }//    /**//     * Returns the unit concatenator to be used by this voice.//     * Derived voices typically override this to customize behaviors.//     * //     * @return the unit conatenator//     * //     * @throws IOException if an IO error occurs while getting//     *     processor//     *///    protected UtteranceProcessor getUnitConcatenator() throws IOException {//        return null;//    }    //[[Providing the Mbrola classes via getUnitSelector() and    // getUnitConcatenator() is just a hack allowing us to use    // the current CMUVoice.java framework. It only means that    // after the Durator and the ContourGenerator, the classes    // process the utterance (Selector before Concatenator).]]    /**     * Returns the unit concatenator to be used by this voice.     * This method constructs the command line with which the     * MBROLA binary will be called, and initialises the     * MbrolaCaller accordingly.     *     * @return the unit conatenator     *     * @throws IOException if an IO error occurs while getting     *     processor     */    protected UtteranceProcessor getUnitConcatenator() throws IOException {        return new MbrolaCaller(getMbrolaCommand());    }    /**     * Returns the audio output used by this voice.     *     * @return the audio output used by this voice     *     * @throws IOException if an I/O error occurs     */    protected UtteranceProcessor getAudioOutput() throws IOException {        return new MbrolaAudioOutput();    }    /**     * Get a resource for this voice.  Resources for this voice are located in     * the package <code>com.sun.speech.freetts.en.us</code>.     */    protected URL getResource(String resource) {        return com.sun.speech.freetts.en.us.CMUVoice.class.            getResource(resource);    }    /**     * Converts this object to a string     *      * @return a string representation of this object     */    public String toString() {	return "MbrolaVoice";    }}

⌨️ 快捷键说明

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