資源簡介
該程序實現了對一段語音信號的分幀,預加重,并求了短時能量,過零率
代碼片段和文件信息
%?對一個語音信號進行分幀,并研究分幀后的短時能量和過零率特性
%讀音頻文件
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課程設計_密碼鎖
- 下一篇:數據庫課設:圖書管理系統報告
評論
共有 條評論