- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模块 预处理 使用cooledit转换格式/声道,或用Matlab处理 特征提取 训练数据的特征提取 测试数据的特征提取 不同的特征提取可以分开或合在一起设计 分类算法设计 GMM,HMM,SVM,KNN,ANN... 测试和决策 特征提取 %读取声音文件 wav= wavread(data.filenames{i_files},[1 307712]); eg. 200个文件 i_files= 1:200 307712是提取的样本数(限制读取的长度,约28s) % 要提取的MFCC系数个数 num_ceps_coeffs = 20; c.fs = 11025; %采样频率 % 设置每帧大小(包含样本数) c.seg_size = 1024; c.hop_size = 512; %% c.seg_size-交叠部分=c.hop_size 特征提取(MFCC) % 帧数计算 num_segments = floor((length(wav)-c.seg_size)/c.hop_size)+1; % 初始化功率谱矩阵 P = zeros(c.seg_size/2+1,num_segments); % 设置窗函数 c.w = 0.5*(1-cos(2*pi*(0:c.seg_size-1)/(c.seg_size-1)));%汉宁窗函数 % 逐帧做FFT for i_p = 1:num_segments, idx = (1:c.seg_size)+(i_p-1)*c.hop_size; x = abs(fft(wav(idx).*c.w)/sum(c.w)*2).^2; P(:,i_p) = x(1:end/2+1);%工程实际中经常只用单边功率谱 end c.num_filt = 36; %% Mel频带数 f = linspace(0,c.fs/2,c.seg_size/2+1);%初始平均划分f mel = log(1+f/700)*1127.01048; %1127.01048=2595/log10 ,Matlab中log=ln mel_idx = linspace(0,mel(end),c.num_filt+2);%初始平均划分mel(38个点) f_idx = zeros(c.num_filt+2,1); for i=1:c.num_filt+2, %% f_idx(i)存的是mel中与mel_idx(i)最近的元素的地址 [tmp f_idx(i)] = min(abs(mel - mel_idx(i)));%近似的平均划分 end freqs = f(f_idx); h = 2./(freqs(3:c.num_filt+2)-freqs(1:c.num_filt));%%三角的高度 c.mel_filter = zeros(c.num_filt,c.seg_size/2+1); for i=1:c.num_filt, c.mel_filter(i,:) =(f freqs(i) f = freqs(i+1)).* ... h(i).*(f-freqs(i))/(freqs(i+1)-freqs(i)) + ... (f freqs(i+1) f freqs(i+2)).* ... h(i).*(freqs(i+2)-f)/(freqs(i+2)-freqs(i+1)); end 特征提取 M = zeros(c.num_filt,num_segments); %初始化 for i_m = 1:num_segments, M(:,i_m) = c.mel_filter*P(:,i_m);% 通过三角滤波器 end % 做对数变换 M(M1)=1; M = 10*log10(M); %DCT函数 c.DCT = 1/sqrt(c.num_filt/2) * ... cos((0:num_ceps_coeffs-1)*(0.5:c.num_filt)*pi/c.num_filt); c.DCT(1,:) = c.DCT(1,:)*sqrt(2)/2; %%离散余弦变换 mfcc= c.DCT * M; 分类算法设计(GMM示例) ncentres = 16;% 高斯分量个数 input_dim = 16; %特征维数 % 设置混合模型 mix = gmm(input_dim, ncentres, diag); % 特征数
文档评论(0)