资源简介
师弟师妹们,请收下。这是mfcc的pro的代码,仅供参考
代码片段和文件信息
#include “MFCC.h“
#include
#include
#include
#include “fftw3.h“
using namespace std;
void MFCC(const short* waveData int numSamples int sampleRate)
{
float *preemp = new float[numSamples];
preemp[0] = waveData[0];
for(int i = 1; i < numSamples; i++)
{
preemp[i] = waveData[i] - 0.95*waveData[i-1];
//printf(“%f “ preemp[i]);
}
//printf(“\n“);
//calculate the total frames when overlaps exist
int numframes = ceil((numSamples-frameS_PER_BUFFER)/NOT_OVERLAP)+1;
//printf(“%d\n“ numframes);
float hammingWindow[frameS_PER_BUFFER];
float afterWin[512] = {0.0};
float energySpectrum[512] = {0.0};
float mel[NUM_FILTER] = {0};
float c[13] = {0};
for(int i = 0; i< frameS_PER_BUFFER; i++)
{
hammingWindow[i] = 0.54 - 0.46*cos(2*3.14*i/(frameS_PER_BUFFER-1));
}
//handle all frames one by one
for(int i = 0; i < numframes; i++)
{
int j;
//windowing
for(j=0; jameS_PER_BUFFER&&(j+(i-1)*NOT_OVERLAP) {
afterWin[j] = preemp[j+(i-1)*NOT_OVERLAP]*hammingWindow[j];
}
//Zero Padding
for(int k = j-1; k < 512; k++) afterWin[k] = 0.0f;
//for(int a = 0; a < 512; a++) printf(“%f “ afterWin[a]);
//printf(“\n“);
//FFT + power
FFT_Power(afterWin energySpectrum);
//for(int a = 0; a < 512; a++) printf(“%f “ energySpectrum[a]);
//printf(“\n“);
//Warping the frequency axis + FilterBank
memset(mel 0 sizeof(float)*NUM_FILTER);
computeMel(mel sampleRate energySpectrum);
//for(int a = 0; a < NUM_FILTER; a++) printf(“%f “ mel[a]);
//printf(“\n“);
//DCT
memset(c 0 sizeof(float)*13);
DCT(mel c);
//for(int k = 0; k < 13; k++) printf(“%f “ c[k]);
//printf(“\n“);
}
delete[] preemp;
}
void FFT_Power(float *in float *energySpectrum)
{
int len = 512;
fftwf_complex *out = (fftwf_complex *)fftwf_malloc(sizeof(fftwf_complex) * len);
fftwf_plan p = fftwf_plan_dft_r2c_1d(len in out FFTW_ESTIMATE);
fftwf_execute(p);
for (int i = 0; i < len; i++)
{
energySpectrum[i] = out[i][0]*out[i][0] + out[i][1]*out[i][1];
}
fftwf_destroy_plan(p);
fftwf_free(out);
}
void computeMel(float *mel const int sampleRate const float *energySpectrum)
{
int fmax = sampleRate/2;
float maxMelFreq = 1127*log(1+fmax/700);
float melFilters[NUM_FILTER][3];
float delta = maxMelFreq/(NUM_FILTER+1);
float *m = new float[NUM_FILTER+2];
float *h = new float[NUM_FILTER+2];
float *f = new float[NUM_FILTER+2];
for(int i = 0; i < NUM_FILTER+2; i++)
{
m[i] = i * delta;
h[i] = 700 * (exp(m[i]/1127) - 1);
f[i] = floor((256+1) * h[i] / sampleRate); //*********//
}
//get start peak end point of every trigle filter
for(int i = 0; i < NUM_FILTER; i++)
{
melFilters[i][0] = f[i];
melFilters[i][1] = f[i+1];
melFilters[i][2] = f[i+2];
}
delete[] m;
delete[] h;
delete[] f;
//calculate the output of every trigle filter
for(int i = 0; i < NUM_FILTER;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-04-08 14:25 lab1_end_mfcc\
文件 113644 2015-03-31 12:12 lab1_end_mfcc\audio.wav
目录 0 2015-04-08 14:25 lab1_end_mfcc\Backup\
文件 891 2015-03-31 12:12 lab1_end_mfcc\Backup\sound_captrue.sln
文件 10752 2015-03-31 12:12 lab1_end_mfcc\Backup\sound_captrue.v12.suo
目录 0 2015-04-08 14:25 lab1_end_mfcc\Debug\
文件 5748 2015-03-31 12:12 lab1_end_mfcc\Debug\BuildLog.htm
文件 65 2015-03-31 12:12 lab1_end_mfcc\Debug\mt.dep
文件 249856 2015-03-31 12:12 lab1_end_mfcc\Debug\portaudio_x86.dll
文件 11074 2015-03-31 12:12 lab1_end_mfcc\Debug\portaudio_x86.lib
文件 1474 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.Build.CppClean.log
文件 35840 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.exe
文件 285324 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.ilk
文件 2886 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.log
文件 21544 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.obj
文件 470016 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.pdb
目录 0 2015-04-08 14:25 lab1_end_mfcc\Debug\sound_captrue.tlog\
文件 592 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\cl.command.1.tlog
文件 2246 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\CL.read.1.tlog
文件 560 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\CL.write.1.tlog
文件 1268 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\li
文件 2898 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\li
文件 604 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\li
文件 223 2015-03-31 12:12 lab1_end_mfcc\Debug\sound_captrue.tlog\sound_captrue.lastbuildstate
文件 52224 2015-03-31 12:12 lab1_end_mfcc\Debug\vc120.idb
文件 86016 2015-03-31 12:12 lab1_end_mfcc\Debug\vc120.pdb
文件 18312 2015-03-31 12:12 lab1_end_mfcc\fftw3.h
文件 2365756 2015-03-31 12:12 lab1_end_mfcc\libfftw3-3.dll
文件 246078 2015-03-31 12:12 lab1_end_mfcc\libfftw3-3.lib
文件 2446144 2015-03-31 12:12 lab1_end_mfcc\libfftw3f-3.dll
文件 251664 2015-03-31 12:12 lab1_end_mfcc\libfftw3f-3.lib
............此处省略43个文件信息
- 上一篇:任意分布的随机数的产生
- 下一篇:侯捷课程之《C++中的内存管理》讲义
相关资源
- Frogs_MFCCs.csv
- 用遗传算法实现语音识别--基于mfcc参
- 基于MFCC的GMM的说话人识别.rar
- 文本有关的说话人识别系统
- 语音识别GMM模型
- matlab算法实现声纹识别,带界面
- 中英语种识别matlab程序包含40个测试音
- 基于mfcc特征的dtw算法实现
- mfcc特征提取,c++代码实现
- 语音信号分析与处理及其MATLAB实现L
- 语音信号MFCC特征提取
- 基于MFCC和SVM的说话人性别识别
- PE文件格式解析MFCC++源码
- 梅尔倒谱系数MFCC的matlab代码
- 音频感知哈希函数的提取matlab codes
- mfcc源代码
- MFCC的详细介绍PPT
- MFCC梅尔倒谱参数及matlab代码
- zw_MFCCombox自动提示.zip
- google code mfcc c语言实现。
- 语音识别MFCC特征提取matlab代码
- MFCC参数提取的matlab实现
- 声纹识别MATLAB源程序全代码
- MFCC的matlab实现
- 说话人识别代码
- 基于mfcc,vq的说话人识别代码实现_自
- 语音信号处理- MFCC特征提取
- mfcc,,可输入自己的wav文件运行
- mfcc的C程序
- 说话人识别和确认系统
评论
共有 条评论