声音识别 声音分类 算法实现

上传人:kms****20 文档编号:53599468 上传时间:2018-09-03 格式:PPT 页数:9 大小:863.50KB
返回 下载 相关 举报
声音识别 声音分类 算法实现_第1页
第1页 / 共9页
声音识别 声音分类 算法实现_第2页
第2页 / 共9页
声音识别 声音分类 算法实现_第3页
第3页 / 共9页
声音识别 声音分类 算法实现_第4页
第4页 / 共9页
声音识别 声音分类 算法实现_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《声音识别 声音分类 算法实现》由会员分享,可在线阅读,更多相关《声音识别 声音分类 算法实现(9页珍藏版)》请在金锄头文库上搜索。

1、,模型框架,图1基 于 GMM 的 生 态 环 境 声 音 识 别 系 统,设计模块,预处理 使用cooledit转换格式/声道,或用Matlab处理 特征提取 训练数据的特征提取 测试数据的特征提取 不同的特征提取可以分开或合在一起设计 分类算法设计 GMM,HMM,SVM,KNN,ANN. 测试和决策,特征提取,%读取声音文件wav= wavread(data.filenamesi_files,1 307712);eg. 200个文件 i_files= 1:200307712是提取的样本数(限制读取的长度,约28s) % 要提取的MFCC系数个数 num_ceps_coeffs = 20;

2、 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);%汉宁窗函数

3、 % 逐帧做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=

4、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(

5、c.num_filt,c.seg_size/2+1); for i=1:c.num_filt,c.mel_filter(i,:) =(f freqs(i) 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)*(

6、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); % 特征数据输入 siz=600; features = zeros(siz,input_dim);for k=1:sizfor j=1:input_dimfeatures(k,j)=data.feat.mfcc(i_files,j,k);end end,% 初始化模型参数 mix = gmminit(mix, features, options); options(14) = 20;% 迭代次数. mix, options, errlog=gmmem(mix, features, options); Gmmdata(i_files)=mix;,分类算法设计(GMM示例),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号