📄 f7_5.m
字号:
%读入语音文件
fin=fopen('DR4_MLJH0_SX334.ADC','r');
x=fread(fin,'short');
fclose(fin);
%窗长
l=300;
step=100;
e_x=frame(x,'energy');
figure(1);
plot(e_x,'LineWidth',2);
xlabel('时间 t');
ylabel('帧输出');
s=sort(e_x);
min_e=s(ceil(5*step/64));
max_e=s(length(s)-ceil(5*step/64));
%设置阈值
threshold=min_e+0.2*(max_e-min_e);
a=e_x>threshold;
%门限检验
if ((length(a) < 15*64/step) | (max_e/min_e < 1.3)),
disp('No speech found');
else
figure(2);
plot(a,'LineWidth',2);
xlabel('时间 t');
ylabel('端点');
set(gca,'ylim',[0 1.5]);
end
%frame.m
function [yy] = frame(x,func,SAMP_FREQ,l,step)
[m,n]=size(x);
if m>n
n=m;
else
n=n;
x=x';
end
if nargin < 3, SAMP_FREQ=8000; end;
if nargin < 4, l=SAMP_FREQ/40; end;
if nargin < 5, step=l/2; end;
%帧的数目
num_frames=ceil(n/step);
%补零
x(n+1:n+2*l)=zeros(2*l,1);
i=[0:step:num_frames*step]';
j=i*ones(1,l);
i=j+ones(num_frames+1,1)*[1:l];
y=reshape(x(i),num_frames+1,l)';
y=(hanning(l)*ones(1,num_frames+1)).*y;
for i=1:num_frames
cmd=sprintf('yy(:,i)=%s(y(:,i));',func);
eval(cmd);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -