资源简介
该程序实现了对一段语音信号的分帧,预加重,并求了短时能量,过零率
代码片段和文件信息
% 对一个语音信号进行分帧,并研究分帧后的短时能量和过零率特性
%读音频文件
clc;
clear all;
[filenamepathname]=uigetfile(‘*.wav‘‘请选择语音文件:‘);
[soundfs]=wavread([pathnamefilename]); %sound里面放的是采样的数值。fs是采样频率;
a=size(sound(:2));
Tn=(a(1)-1)/fs; %Tn是总采样时间;
t=0:1/fs:Tn; %t是用来追踪每次的采样的时间;
figure(1)
subplot(411)plot(tsound(:2))xlabel(‘t(s)‘)ylabel(‘sound‘)
%预加重处理
k=0.97;
tmp(1)=sound(12);
for i=2:a
tmp(i)=sound(i2)-k*sound(i-12);
end
for i=1:a
sound(i2)=tmp(i);
end
%分帧
N=fs*20*10.^(-3); %分帧的点数(窗函数的点数);
frame_shift=N/1.5 %frame_shift是帧移;
frame_array=enframe(sound(:2)hamming(N)frame_shift);
subplot(412)plot(frame_array)xlabel(‘帧‘)ylabel(‘分帧加窗后矩阵‘)
%求短时能量
n=size(frame_array);
for i=1:n(1)
frame_energy(i)=frame_array(i:)*frame_array(i:)‘;
end
subplot(413)plot(frame_energy)xlabel(‘帧‘)ylabel(‘短时能量‘)
%求过零率
a=sign(frame_array);
b=zeros(1n(1));
c=[b‘ a];
d=[a b‘];
zeropass_density=d-c;
zeropass_density=(0.5*sum(abs(zeropass_density)2))/(n(2)-1);
%zeropass_density=0.5*sum(abs(zeropass_density)2);
subplot(414)plot(zeropass_density)xlabel(‘帧‘)ylabel(‘过零率‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 162564 2007-11-30 14:58 语音分帧,短时能量,过零率\FJ1.wav
文件 1377 2010-11-04 11:02 语音分帧,短时能量,过零率\fr
文件 65846 2010-10-29 14:26 语音分帧,短时能量,过零率\silent2.wav
文件 78896 2010-11-02 14:13 语音分帧,短时能量,过零率\FJ1改.wav
文件 1262 2010-11-04 10:53 语音分帧,短时能量,过零率\fr
目录 0 2008-08-25 21:50 语音分帧,短时能量,过零率
----------- --------- ---------- ----- ----
309945 6
- 上一篇:EDA课程设计_密码锁
- 下一篇:数据库课设:图书管理系统报告
评论
共有 条评论