• 大小: 9KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Java
  • 标签: Java  mfcc  评分功能  

资源简介

语音识别中的MFCC参数提取的java源码和FFT的java源码

资源截图

代码片段和文件信息



public final class FFT {
public int logm;
final int MAXLOGM = 20; /* max FFT length 2^MAXLOGM */
final double TWOPI = 6.28318530717958647692;
final double SQHALF = 0.707106781186547524401;
int brseed[] = new int[4048];
float tab[][];

public FFT(int nlength) {
double dtemp = Math.log(nlength) / Math.log(2);
if ((dtemp - (int) dtemp) != 0.0) {
throw new Error(“FFT length must be a power of 2.“);
} else {
this.logm = (int) dtemp;
}
if (logm >= 4) {
creattab(logm);
}
}

/**
 * Calculates the magnitude spectrum of a real signal. The returned vector
 * contains only the positive frequencies.
 */
public float[] calculateFFTMagnitude(float x[]) {
int i n;
n = 1 << this.logm;

if (x.length > n) {
throw new Error(“Tried to use a “ + n
+ “-points FFT for a vector with “ + x.length + “ samples!“);
}

rsfft(x);

float[] mag = new float[n / 2 + 1];
mag[0] = x[0]; // DC frequency must be positive always

if (n == 1) {
return mag;
}
mag[n / 2] = (float) Math.abs(x[n / 2]); // pi (meaning: fs / 2)

// System.out.println(“FFT before magnitude“);
// IO.DisplayVector(x);

for (i = 1; i < n / 2; i++) {
mag[i] = (float) Math.sqrt(x[i] * x[i] + x[n - i] * x[n - i]);
// System.out.println(mag[i] + “ “ + x[i] + “ “ + x[n-i]);
}

// IO.DisplayVector(mag);
return mag;
}

/**
 * Calculates the magnitude spectrum of a real signal. The returned vector
 * contains only the positive frequencies.
 */
public double[] calculateFFTMagnitude(double inputData[]) {
int i n;
n = 1 << this.logm;
if (inputData.length > n) {
throw new Error(“Tried to use a “ + n
+ “-points FFT for a vector with “ + inputData.length
+ “ samples!“);
}

// System.out.println(“magnitude test“);
// double[] dtest = DSP.DFTMagnitude(inputData);
// IO.DisplayVector(dtest);

float[] x = new float[n];
for (i = 0; i < inputData.length; i++) {
x[i] = (float) inputData[i];
}

rsfft(x);

// System.out.println(“FFT before magnitude“);
// IO.DisplayVector(x);

double[] mag = new double[n / 2 + 1];
mag[0] = x[0]; // DC frequency must be positive always

if (n == 1) {
return mag;
}
mag[n / 2] = Math.abs(x[n / 2]); // pi (meaning: fs / 2)

for (i = 1; i < n / 2; i++) {
mag[i] = Math.sqrt(x[i] * x[i] + x[n - i] * x[n - i]);
// System.out.println(mag[i] + “ “ + x[i] + “ “ + x[n-i]);
}

// IO.DisplayVector(mag);
return mag;
}

/**
 * Calculates the power (magnitude squared) spectrum of a real signal. The
 * returned vector contains only the positive frequencies.
 */
public double[] calculateFFTPower(double inputData[]) {
int i n;
n = 1 << this.logm;

// System.out.println(“magnitude test“);
// double[] dtest = DSP.DFTMagnitude(inputData);
// IO.DisplayVector(dtest);

float[] x = new float[n];
for (i = 0; i < inputData.length; i++) {

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      17791  2012-03-08 19:25  MFCC.java

     文件      20160  2012-03-08 19:26  FFT.java

----------- ---------  ---------- -----  ----

                37951                    2


评论

共有 条评论