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

📄 waveutils.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.util;/** * Provides a set of utilities for prrocessing wave/audio data. */public class WaveUtils {    private static int[] exp_lut2 = {0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,				     4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,				     5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,				     5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,				     6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,				     6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,				     6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,				     6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,				     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};    private static final boolean ZEROTRAP = true;    private static final int CLIP = 32625;    private static final int BIAS = 0x84;            private final static int[] expLut = { 0, 132, 396, 924, 1980, 4092, 					  8316, 16764 };        /**     * Converts a raw short to ulaw.     *     * @param sampleData signed 16-bit linear sample     *     * @return 8-bit ulaw sample, normalized     */    public static final byte shortToUlaw(short sampleData) {	int sign, exponent, mantissa;	int ulawByte;	int sample = (int) sampleData;			sign = (sample >> 8) & 0x80; // set aside the sign	if (sign != 0) {             // get the magnitude	    sample = -sample;	}	if (sample > CLIP) {         // clip the magnitude	    sample = CLIP;	}	sample = sample + BIAS;	exponent = exp_lut2[ (sample >> 7) & 0xFF ];	mantissa = (sample >> (exponent + 3)) & 0x0F;	ulawByte = ~(sign | (exponent << 4) | mantissa);		if (ZEROTRAP) {	    if (ulawByte == 0) { // optional CCITT trap		ulawByte = 0x02;	    }	}		return (byte) ((ulawByte - 128) & 0xFF);    }    /**     * Converts from ulaw to 16 bit linear.     * <p>     * Craig Reese: IDA/Supercomputing Research Center     * <br>     * 29 September 1989     * <p>     * References:     * <br>     * 1) CCITT Recommendation G.711  (very difficult to follow)     * <br>     * 2) MIL-STD-188-113,"Interoperability and Performance Standards     *    for Analog-to_Digital Conversion Techniques," 17 February 1987     *     * @param uByte 8 bit ulaw sample     *     * @return signed 16 bit linear sample     */    public static final short ulawToShort(short uByte) {	int sign, exponent, mantissa;	int sample;	int ulawByte = uByte;			ulawByte = ~(ulawByte);	sign = (ulawByte & 0x80);	exponent = (ulawByte >> 4) & 0x07;	mantissa = ulawByte & 0x0F;	sample = expLut[exponent] + ( mantissa << ( exponent + 3 ) );	if ( sign != 0 ) {	    sample = -sample;	}		return (short) sample;    }    /**     * Reconstructs a short from its hi and low bytes.     *     * @param hiByte the high byte     * @param loByte the low byte     *      * @return the short value     */    public static final short bytesToShort(byte hiByte, byte loByte) {	int result = (0x000000FF & hiByte);	result = result << 8;	result |= (0x000000FF & loByte);	return (short) result;    }    /**     * Provides test program for method ulawToShort().     *     * @param args not used     */    public static void main(String[] args) {	for (int i = 0; i < 256; i++) {	    System.out.println("" + i + "=" + ulawToShort((short) i));	}    }}

⌨️ 快捷键说明

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