%倒谱法端点检测M1_009.wav,enframe.m放在当前路径
clear all;
[x,fs,bits]=wavread('M1_009.wav');
x=filter([1 -0.95],1,x);%对语音进行预加重,x[n]=y[n]-0.95y[n-1]
L=320; %窗长
FrameLen=320;
FrameInc=160;
%[f]=enframe(x,hamming(320,'periodic'),FrameInc);%加汉明窗
[framenum,f]=enframe(x,FrameLen,FrameInc);
%[framenum,L]=size(f);%显示帧数
P=framenum;%总帧数
%求每帧的倒谱系数,MCep是倒谱矩阵,P行,320列,第一行是第一帧的320个倒谱系数
for ii=1:P
x0(ii,:)=x((ii-1)*L/2+1:(ii-1)*L/2+320);
MCep(ii,:)=ifft(log(abs(fft(x0(ii,:)))));
MCep(ii,:)=fftshift(MCep(ii,:));
end
for ii=3:P-2
MCep(ii,:)=0.3*MCep(ii,:)+0.2*MCep(ii-1,:)+0.2*MCep(ii+1,:)+0.15*MCep(ii-2,:)+0.15*MCep(ii+2,:);
end
MCepn=mean(MCep(1:5,:));% 取1-5帧做背景噪声的倒谱系数帧,MCepn认为是噪声帧的平均倒谱系数,320个样值
%计算倒谱距离dst是1行P列,其第i个值为第i帧与噪声平均帧的倒谱距离(是个具体数值)
for i=1:P
s=0;
for j=2:L
s=s+(MCep(i,j)-MCepn(j)).^2;%计算倒谱距离
end
s=2*s+(MCep(i,1)-MCepn(1))^2;
dst(i)=4.3429*sqrt(s);
end
frameTime=(((1:P)-1)*FrameInc+FrameLen/2)/fs;%
%frameTime是数组,长度为帧长,第i个元素值是第i帧中间那个样值对应的时间
figure
subplot(2,1,1)
plot((0:length(x)-1)/fs,x);
xlabel('时间/s');ylabel('幅度');title('语音信号');
subplot(2,1,2)
plot(frameTime,dst);%画出各帧的倒谱距离值,从而预估起点和终点的帧序号及alpha1,alpha2大小
xlabel('时间/s');ylabel('幅度');title('倒谱距离');
cx1=0;%检测出的起点帧号
cx2=0;%检测出的终点帧号
alpha1=3.5;%根据实验修改
alpha2=4.5;%根据实验修改
flag1=0;
flag2=0;
for i=1:P-3
if (dst(i)>alpha1)&&(dst(i+1)>alpha1)&&(dst(i+2)>alpha1)&&(dst(i+3)>alpha1)&&(flag1==0)
cx1=i;
flag1=1;
end
end
for i=cx1+1:P-3
if (dst(i)<alpha2)&&(dst(i+1)<alpha2)&&(dst(i+2)<alpha2)&&(dst(i+3)<alpha2)&&(flag2==0)
cx2=i-1;
flag2=1;
end
end
cx1
cx2
frameTime(cx1)
frameTime(cx2)
figure%显示图形
subplot(211),plot((0:length(x)-1)/fs,x);
title('语音波形');
%axis tight
%ylim=get(gca,'ylim');
%line([frameTime(cx1),frameTime(cx1)],ylim,'color','r');
%line([frameTime(cx2),frameTime(cx2)],ylim,'color','r');
xlabel({'时间/s' ; '(a)'});
ylabel('幅度');
line([frameTime(cx1),frameTime(cx1)],[min(x),max(x)],'color','r');
line([frameTime(cx2),frameTime(cx2)],[min(x),max(x)],'color','r');
subplot(212),plot(frameTime,dst);
title('倒谱距离');
%axis tight
%ylim=get(gca,'ylim');
%line([frameTime(cx1),frameTime(cx1)],ylim,'color','r');
%line([frameTime(cx2),frameTime(cx2)],ylim,'color','r');
xlabel({'时间/s' ; '(b)'});
ylabel('倒谱距离');
line([frameTime(cx1),frameTime(cx1)],[min(dst),max(dst)],'color','r');
line([frameTime(cx2),frameTime(cx2)],[min(dst),max(dst)],'color','r');
%%%%%%思考1:实现基于对数频谱距离的端点检测,并于倒谱距离端点检测对比
%%%%%%思考2:实现基于MFCC倒谱距离的端点检测,并于倒谱距离端点检测对比
%%%%%%思考3:实现基于LPCC倒谱距离的端点检测,并于倒谱距离端点检测对比
没有合适的资源?快使用搜索试试~ 我知道了~
特征提取基于matlab倒谱距离端点检测【含Matlab源码 1767期】.zip
共6个文件
m:2个
jpg:2个
docx:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 74 浏览量
2022-03-08
21:15:30
上传
评论
收藏 91KB ZIP 举报
温馨提示
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main13.m; 调用函数:其他m文件; 语音信号,其格式为MP4; 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开main13.m文件;(若有其他m文件,无需运行) 步骤三:点击运行,等程序运行完得到结果; 4、语音处理系列仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等;
资源推荐
资源详情
资源评论
收起资源包目录
【特征提取】基于matlab倒谱距离端点检测【含Matlab源码 1767期】.zip (6个子文件)
【特征提取】基于matlab倒谱距离端点检测【含Matlab源码 1767期】
enframe.m 2KB
main13.m 3KB
倒谱距离端点检测.docx 26KB
M1_009.wav 28KB
运行结果1.jpg 26KB
运行结果2.jpg 28KB
共 6 条
- 1
资源评论
海神之光
- 粉丝: 3w+
- 资源: 2092
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功