MFCC
来源:互联网 发布:mac有没有抢网速的软件 编辑:程序博客网 时间:2024/06/05 15:49
下面内容是当时的实验报告,用word写的。所以直接截图当时的内容,主要是做个记录而已。
matlab代码如下:
clear;clc;close all;z=[];z1=[];%语音采集 r=audiorecorder(16000,16,1);record(r);%开始录音but_stop=input('input 1 to stop record:');if but_stop == 1 stop(r);%停止录音endmyspeech = getaudiodata(r);%获取声音% wavwrite(myspeech,16000,16,'sound');%保存声音% myspeech=wavread('sound');%读取wav文件figure;plot(myspeech);title('语音');size_wave=size(myspeech,1);%预加重spreemp(1)=myspeech(1);for i=2:size_wave spreemp(i)=myspeech(i)-0.95*myspeech(i-1);endfigure;plot(spreemp);title('预加重');%计算帧数numFrame=ceil((size_wave-400)/250)+1;%400 是每帧的长度,250是分帧间隔%hamming窗for i=1:400 hammwin(i)=0.54-0.46*cos(2*pi*i/(400-1));end%帧操作for i=1:numFrame %加窗&&补零 shift=(i-1)*250; for j=1:512 if shift+j > size_wave break; end if j <= 400 addwin(j)=hammwin(j)*spreemp(shift+j); else addwin(j)=0; end end if i==12 figure; plot(1:512,addwin); title('加窗'); end %fft&&功率谱 FFT=fft(addwin);%这个函数有自带补零,不过我们还是自己手动补零了 if i==12 figure; plot(1:512,abs(FFT)); title('FFT'); end FFT_power=abs(FFT).*abs(FFT); FFT_power(1:256)=FFT_power(256+1:512); FFT_power(257:512)=0; if i==12 figure; plot(FFT_power); title('功率谱'); end %mel谱 fg=16000/2; %最大的语音频率 maxmelFreq=1125*log(1+fg/700);%最大的mel频率 sideWidth=maxmelFreq/(40+1);%Mel滤波器宽度 for k=1:40+2 tmp=700*(exp((k-1)*sideWidth/1125)-1); melFilter(k)=ceil((256+1)*tmp/16000); end%得到mel三角滤波器% disp(i);% disp(melFilter); mel=zeros(1,40); for k=1:40 for j=1:256 if j>= melFilter(k) && j <= melFilter(k+1) mel(k)=mel(k)+(j-melFilter(k))/(melFilter(k+1)-melFilter(k))*FFT_power(j); elseif j> melFilter(k+1) && j <= melFilter(k+2) mel(k)=mel(k)+(melFilter(k+2)-j)/(melFilter(k+2)-melFilter(k+1))*FFT_power(j); end end end%通过三角滤波器后的输出 if i==12 figure; plot(mel); title('梅尔谱'); end if i==12 figure; plot(log(mel)); title('对数梅尔谱'); end %DCT melRec=zeros(1,13); for k=1:13 for j=1:40 melRec(k)=melRec(k)+log(mel(j))*cos(pi*k*(j-0.5)/40); end end if i==12 figure; stem(melRec); title('倒梅尔谱'); end %将所有帧的倒谱向量保存起来 melRec=abs(melRec); z1=[z1;melRec];end figure imagesc(z1'); colorbar; title('倒梅尔谱(未归一化)'); %归一化 avg=mean(z1,1);%每一维的均值 devia=std(z1,1,2);%每一维的标准差 for i=1:13 z(:,i)=(z1(:,i)-avg(i))/devia(i); end figure; imagesc(z'); colorbar; title('倒梅尔谱(归一化)'); %axis([0 600 0 13]);
0 0
- mfcc
- MFCC
- MFCC
- MFCC
- MFCC可视化
- 初学MFCC
- 浅谈MFCC
- MFCC整理
- MFCC & PLP
- 关于mfcc系数提取
- HMM MFCC 文件
- MFCC梅尔倒谱系数
- mfcc学习记录
- 什么是MFCC参数
- MFCC说明及参数
- 语音识别之MFCC
- 语音识别(MFCC)
- MFCC特征值详解
- Ubuntu 16.04 安装QQ解决方案
- 解决PLSQL 显示中文乱码问题
- Perl中简体字转换为繁体字(GBK转换成big5)
- LeetCode Super Pow详解
- YII做项目问题汇总<一>
- MFCC
- mybatis+spring3实战3 - sqlSessionTemplate 方式
- Spark Stage 的划分
- android图表库MPAndroidChart(三)
- 基于用户协同过滤python源码
- nodejs对mongodb数据库的增删改查操作
- onConfigurationChanged 未调用不执行的问题
- plsql developer小结
- Jquery前端验证学习