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

📄 sampleset.java

📁 这是java 开发的的免费语音播放插件,很值得学习参考!!!!!!!!!!!!111
💻 JAVA
字号:
/** * Portions Copyright 2001 Sun Microsystems, Inc. * Portions Copyright 1999-2001 Language Technologies Institute,  * Carnegie Mellon University. * 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 com.sun.speech.freetts.relp;import java.io.BufferedReader;import java.io.IOException;import java.io.DataOutputStream;import java.io.DataInputStream;import java.util.StringTokenizer;import java.util.NoSuchElementException;import java.nio.channels.WritableByteChannel;import java.nio.channels.ReadableByteChannel;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.ShortBuffer;import java.io.IOException;/** * Represents the frame and residual data * used by the diphone database * used Residual Excited Linear Predictive synthesizer */public class SampleSet {    private Sample[] samples;    private SampleInfo sampleInfo;    /**     * Reads a SampleSet from the input reader.      *     * @param tok tokenizer that holds parameters for this SampleSet     * @param reader the input reader to read the data from     */    public SampleSet(StringTokenizer tok, BufferedReader reader) {	try {	    int numSamples = Integer.parseInt(tok.nextToken());	    int numChannels = Integer.parseInt(tok.nextToken());	    int sampleRate = Integer.parseInt(tok.nextToken());	    float coeffMin = Float.parseFloat(tok.nextToken());	    float coeffRange = Float.parseFloat(tok.nextToken());	    float postEmphasis = Float.parseFloat(tok.nextToken());	    int residualFold = Integer.parseInt(tok.nextToken());	    samples = new Sample[numSamples];	    sampleInfo = new SampleInfo(sampleRate, numChannels,		    residualFold, coeffMin, coeffRange, postEmphasis);	    for (int i = 0; i < numSamples; i++) {		samples[i] = new Sample(reader, numChannels);	    }	} catch (NoSuchElementException nse) {	    throw new Error("Parsing sample error " + nse.getMessage());	}    }    /**     * Creates a SampleSet by reading it from the given byte buffer     *     * @param bb source of the Unit data     *     * @throws IOException if an IO error occurs     */    public SampleSet(ByteBuffer bb) throws IOException {	int numSamples;	sampleInfo = new SampleInfo(bb);	numSamples = bb.getInt();	this.samples = new Sample[numSamples];	for (int i = 0 ; i < numSamples; i++) {	    samples[i] = Sample.loadBinary(bb);	}    }    /**     * Creates a SampleSet by reading it from the given input stream     *     * @param is source of the Unit data     *     * @throws IOException if an IO error occurs     */    public SampleSet(DataInputStream is) throws IOException {	int numSamples;	sampleInfo = new SampleInfo(is);	numSamples = is.readInt();	this.samples = new Sample[numSamples];	for (int i = 0 ; i < numSamples; i++) {	    samples[i] = Sample.loadBinary(is);	}    }    /**     * Dumps this sample set to the given stream     *     * @param os the output stream     *     * @throws IOException if an error occurs.     */    public void dumpBinary(DataOutputStream os) throws IOException {	sampleInfo.dumpBinary(os);	os.writeInt(samples.length);	for (int i = 0; i < samples.length; i++) {	    samples[i].dumpBinary(os);	}    }    /**     * return the sample associated with the index     *     * @param index the index of the sample     *     * @return the sample.     */    public Sample getSample(int index) {	return samples[index];    }    /**     * Retrieves the info on this SampleSet     *     * @return the sample info     */    public SampleInfo getSampleInfo() {	return sampleInfo;    }    /**     * Returns the size of the unit represented     * by the given start and end points     *     * @param start the start of the unit     * @param end the end of the unit     *     * @return the size of the unit     */    public int getUnitSize(int start, int end) {	int size = 0;	for (int i = start; i < end; i++) {	    size += getFrameSize(i);	}	return size;    }    /**     * Gets the size of the given frame     *     * @param frame the frame of interest     *     * @return the size of the frame     */    public int getFrameSize(int frame) {	return  samples[frame].getResidualSize();    }}    

⌨️ 快捷键说明

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