资源简介
包含静音检测的matlab程序,通过短时能量与过零率判断
代码片段和文件信息
%静音检测
clear all;
clc;
[samplefsbits]=wavread(‘sp04.wav‘);
sample=sample(:1);
voiceseq=filter([1 -0.9375]1sample);
len=length(sample);
framelen=240;
frameinc=80;
delta=0.02;
ampu=10;
ampl=3;
zcru=10;
zcrl=5;
maxsilence=6;
minlen=15;
status=0;
count=0;
silence=0;
voice=enframe(voiceseqframelenframeinc);
voice=double(voice);
voice=voice/max(max(abs(voice)));
framenum=size(voice1);
amp=sum(sqrt(abs(voice)));
zcr=zeros(framenum1);
%for i=1:framenum
% x=voice(:i)
% x=x/max(abs(x));
% for j=1:length(x)-1
% if x(j)*x(j+1)<0 & abs(x(j)-x(j+1))>delta
% zcr(i)=zcr(i)+1;
% end
% end
%end
%计算短时过零率
tmp1=enframe(voiceseq(1:len-1)framelenframeinc);
tmp2=enframe(voiceseq(2:len)framelenframeinc);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>delta;
zcr=sum(signs.*diffs2);
%计算短时能量
amp=sum(abs(voice)2);
%调整能量门限
ampu=min(ampumax(amp)/4);
ampl=min(amplmax(amp)/8);
%开始端点检测
vobegin=0;
voend=0;
k=1;
vobegink=[1];
voendk=[framenum];
for n=1:framenum
goto=0;
switch status
case{01}
if amp(n)>ampu|zcr(n)>zcru
vobegin=max(n-count1);
silence=0;
count=count+1;
status=2;
elseif amp(n)>ampl | zcr(n)>zcrl
status=1;
count=count+1;
if(count==3)
status=2;
vobegin=n;
end
else
status=0;
count=0;
end
相关资源
- stft和逆stft变换的Matlab代码
- 语音信号处理实验matlab程序
- 语音信号处理实验素材 wav语音文件
-
matlab 语音信号处理 enfr
ame.m - 基于MATLAB的语音信号处理课程设计
- 语音信号处理matlab GUI
- Voicebox语音处理包
- matlab语音信号处理工具箱
- MATLAB语音信号处理
-
enfr
ame语音信号处理分帧matlab分帧函 - 数字信号处理课程设计--基于MATLAB有噪
- 不同矩形窗长度的修正短时自相关函
- 不同矩形窗长度的修正短时自相关函
- 生物医学信号处理大作业语音信号处
- 语音处理课设:语音信号处理系统
- 基于Matlab的语音信号处理
- 语音信号处理实验报告基于MATLAB的语
- matlab的GUI实现的语音信号处理程序
- 语音分帧与加窗.rar
评论
共有 条评论