資源簡介
語音識別中的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?<
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? 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?< 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? 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? 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?<
//?System.out.println(“magnitude?test“);
//?double[]?dtest?=?DSP.DFTMagnitude(inputData);
//?IO.DisplayVector(dtest);
float[]?x?=?new?float[n];
for?(i?=?0;?i?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????17791??2012-03-08?19:25??MFCC.java
?????文件??????20160??2012-03-08?19:26??FFT.java
-----------?---------??----------?-----??----
????????????????37951????????????????????2
評論
共有 條評論