Mel滤波器组的设计.docx
《Mel滤波器组的设计.docx》由会员分享,可在线阅读,更多相关《Mel滤波器组的设计.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、Mel滤波器组的设计我们设置采样率fs=8000Hzfs=8000Hz ,滤波器频率范围的最低频率fl=Ofl=O ,滤波器频率范 围的最高频率 fh=fs/2=8000/2=4000fh=fs/2=8000/2=4000 ;设置滤波器个数 M=24M=24, FFT 的长度N=256N=256。根据每个带通滤波器的传递函数可以计算出每个Mel滤波器的值,再 由设置的滤波器个数可以形成一个Mel滤波器组。注意每个带通滤波器的传递函数值是在 Mel频率域上计算的,计算完后再转到频率域上。二、MATLAB 实现fs=8000;fl=O; fh=fs/2;bl=1125*log(l+fl/700
2、);%将频率转换为 Mel 频率bh=1125*log(l+fh/700);p=24;%滤波器个数nfft=256;%FFT 点数B=bh-bl;y=linspace(0,B,p+2);%产生 0 到 B 之间 p+2 个数Fb=700*(exp(y/1125)-l);%将 Mel 频率转换为频率W2=nfft/2+l;%fs/2 内对应的 FFT 点数df=fs/nfft;freq=(0:W2-l)*df;% 采样频率值bank二zeros(24,W2);%生成一个24行W2列的全零数组for k=2:p+l%why 从 2 开始?因为 k-1fl=Fb(k-l); f2=Fb(k+l);
3、fO=Fb(k);nl二floor(fl/df)+l;%f(m.l)在频域中的谱线索引号n2=floor(f2/df)+l;%f(m+l)在频域中的谱线索引号nO=floor(fO/df)+l;%f(m)在频域中的谱线索引号。f(m)是从0开始,而在MATLAB中数组 的索引是从1开始,所以要加L否则会出现index=0的错误for i=l: W2if i=nl & inO & i=nl and in0 and i=n2:bankk-lJ=(n2-i)/(n2-nO) # print(k) # print(bankk-l,:) (freq,bankk-l,:/r)set-up代码import
4、numpyimport .wavfilefrom ck import detsample rate, signal = . (0SR_us_000_0010_8k.wav)# File assumed to be in the samedirectorysignal = signal 0: int (3. 5 * sample_rate) # Keep the first 3. 5 seconds预加重emphasized_signal = d(signal0, signal1: - pre_emphasis * signalframing 代码frame_stride = 0. 01.fra
5、me_length, frame_step = frame_size * sample_rate, frame_stride * sample_rate # Convert from seconds to samplessignal_length = len (emphasized _signal)frame_length = int (round (frame_length)frame_step = int (round (frame_step)num_frames = int(float(signal_length - frame_length) / frame_step)# Make s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mel 滤波器 设计
限制150内