实验一语音信号的时域特性和频域特性.docx
- 文档编号:15196332
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:16
- 大小:141.32KB
实验一语音信号的时域特性和频域特性.docx
《实验一语音信号的时域特性和频域特性.docx》由会员分享,可在线阅读,更多相关《实验一语音信号的时域特性和频域特性.docx(16页珍藏版)》请在冰点文库上搜索。
实验一语音信号的时域特性和频域特性
实验一、语音信号的时域特性和频域特性
学院:
信息与通信工程学院
专业:
通信工程
班级:
104
学号:
2010026410
姓名:
黄余芳
指导教师:
崔艳秋
1.实验名称
语音信号的时域特性和频域特性
2.实验类型
验证性实验
3.实验目的
观察并验证语音信号的时域特性和频域特性,理解并掌握典型的语音信号时域分析方法和频域分析方法,为深入学习数字语音信号处理的相关理论奠定基础。
4.实验设备
安装有MATLAB的计算机
5.实验内容
1.输入并运行MATLAB代码。
2.观察语音信号的时域特性
(1)发一个清音和一个浊音,由麦克风采集语音数据,参考实验内容1中的程序将这些数据分别存成两个“.wav”文件(例如[a]的语音存为“a.wav”,要求采样率为8000),存在本人的文件夹中。
(2)读取WAV文件,显示语音波形,观察清音和浊音波形的差异。
(3)读取WAV文件,计算并显示语音的短时能量(要求分帧加窗的帧长为256,帧移为128),观察并分析清音和浊音短时能量的差异。
(4)读取WAV文件,计算并显示语音的短时过零率(要求分帧加窗是的帧长为256,帧移为128),观察并分析清音和浊音短时过零率的差异。
3.观察语音信号的频域特性
(1)读取WAV文件,计算并显示一帧语音的原始信号、加窗信号、短时频谱(要求分帧加窗的窗函数为汉明窗、帧长为256,帧移为128),观察并分析清音和浊音短时频谱的差异。
(2)读取WAV文件,计算并显示不同窗函数情况下一帧语音的加窗信号、短时频谱(要求分帧加窗的窗函数分别为矩形窗和汉明窗、帧长为256,帧移为128),观察并分析不同的窗函数对短时谱分析的影响。
6.相关函数
wavread、plot、fft
7.MATLAB程序代码
1.输入并运行以下MATLAB代码。
(1)短时能量
clear;
closeall;
Fs=11025;
y=wavrecord(5*Fs,Fs,'double');
wavwrite(y,'f:
\\a');
soundview(y,Fs);
x=wavread('f:
\\a.wav');
x=double(x);
x=filter([1-0.9375],1,x);%预加重
FrameLen=256;
FrameInc=128;
s=enframe(x,FrameLen,FrameInc);
energy=sum(abs(s),2);
figure;
subplot(2,1,1);
plot(x);
title('语音信号时域波形');
xlabel('样点数');
ylabel('幅度');
subplot(2,1,2);
plot(energy);
title('语音信号的短时能量');
xlabel('帧数');
ylabel('短时能量');
legend('帧长FrameLen=240');
(2)短时过零率
clear;
closeall;
x=wavread('f:
\\a.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
tmp1=enframe(x(1:
end-1),FrameLen,FrameInc);
tmp2=enframe(x(2:
end),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
figure;
subplot(2,1,1);
plot(x);
title('语音信号时域波形');
xlabel('样点数');
ylabel('幅度');
subplot(2,1,2);
plot(zcr);
xlabel('帧数');
ylabel('短时过零率');
title('语音信号的短时过零率');
(3)短时傅里叶变换
clear;
closeall;
x=wavread('f:
\\a.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
s=enframe(x,FrameLen,FrameInc);
ss=s(50,:
);%选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)
f=ss'.*hamming(length(ss));
r=fft(f,512);
r1=abs(r);
r1=r1/max(r1);
yuanlai=20*log10(r1);
signal(1:
256)=yuanlai(1:
256);
pinlv=(0:
1:
255)*11025/512;
figure;
subplot(3,1,1);
plot(ss);
axis([0,256,-1,1])
title('截取的语音段');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,2);
plot(f);
axis([0,256,-1,1])
title('窗选语音信号');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,3);
plot(pinlv,signal);
xlabel('频率/Hz');
ylabel('对数幅度/dB');
title('加Hamming窗时语音频谱');
(4)显示清音短时过零率
clear;
closeall;
x=wavread('f:
\\k.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
tmp1=enframe(x(1:
end-1),FrameLen,FrameInc);
tmp2=enframe(x(2:
end),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
figure;
subplot(2,1,1);
plot(x);
title('语音信号时域波形');
xlabel('样点数');
ylabel('幅度');
subplot(2,1,2);
plot(zcr);
xlabel('帧数');
ylabel('短时过零率');
title('语音信号的短时过零率');
2:
语音信号的频域分析
1.加汉明窗的浊音
clear;
closeall;
x=wavread('f:
\\a.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
s=enframe(x,FrameLen,FrameInc);
ss=s(125,:
);%选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)
f=ss'.*hamming(length(ss));
r=fft(f,512);
r1=abs(r);
r1=r1/max(r1);
yuanlai=20*log10(r1);
signal(1:
256)=yuanlai(1:
256);
pinlv=(0:
1:
255)*11025/512;
figure;
subplot(3,1,1);
plot(ss);
axis([0,256,-1,1])
title('截取的语音段');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,2);
plot(f);
axis([0,256,-1,1])
title('窗选语音信号');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,3);
plot(pinlv,signal);
xlabel('频率/Hz');
ylabel('对数幅度/dB');
title('加Hamming窗时语音频谱
2.加汉明窗的清音
clear;
closeall;
x=wavread('f:
\\k.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
s=enframe(x,FrameLen,FrameInc);
ss=s(90,:
);%选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)
f=ss'.*hamming(length(ss));
r=fft(f,512);
r1=abs(r);
r1=r1/max(r1);
yuanlai=20*log10(r1);
signal(1:
256)=yuanlai(1:
256);
pinlv=(0:
1:
255)*11025/512;
figure;
subplot(3,1,1);
plot(ss);
axis([0,256,-1,1])
title('截取的语音段');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,2);
plot(f);
axis([0,256,-1,1])
title('窗选语音信号');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,3);
plot(pinlv,signal);
xlabel('频率/Hz');
ylabel('对数幅度/dB');
title('加Hamming窗时语音频谱
3.加矩形窗的浊音
clear;
closeall;
x=wavread('f:
\\a.wav');
x=double(x);
FrameLen=256;
FrameInc=128;
s=enframe(x,FrameLen,FrameInc);
ss=s(125,:
);%选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)
f=ss'.*rectwin(length(ss));
r=fft(f,512);
r1=abs(r);
r1=r1/max(r1);
yuanlai=20*log10(r1);
signal(1:
256)=yuanlai(1:
256);
pinlv=(0:
1:
255)*11025/512;
figure;
subplot(3,1,1);
plot(ss);
axis([0,256,-1,1])
title('截取的语音段');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,2);
plot(f);
axis([0,256,-1,1])
title('窗选语音信号');
xlabel('样点数');
ylabel('幅度');
subplot(3,1,3);
plot(pinlv,signal);
xlabel('频率/Hz');
ylabel('对数幅度/dB');
title('加矩形窗时语音频谱)
8.实验结果及其分析
浊音
(1)短时能量
(2)短时过零率
(3)短时傅里叶变换
清音
(1)短时能量
(2)短时过零率
(3)短时傅里叶变换
(4)显示清音短时过零率
加窗
(1)加汉明窗的浊音
(2)加汉明窗的清音
(3)加矩形窗的浊音
分析:
(1)对于浊音与清音,浊音的幅值比较明显,有一个的波动,能清楚的看清楚它的周期;而清音类似于白噪声,没有明显的幅值,很平缓。
(2)浊音的短时能量高,轻音的短时能量低;浊音的短时过零率低,而清音的短时过零率高。
(3)总而言之,浊音对于分析语音信号是很有用的语音信号。
9.收获与体会
从这次实验中,收获不少。
能更进一步的了解浊音与清音的区别以及他们的相同点,他们的用途以及相关函数的表示方式与差别,例如:
短时过零率、短时能量等。
对MATLAB的使用方法与相关函数又有了新的认识与了解。
这次实验让我学到了不少。
更加掌握了知识,从某种程度上,也增加了我学习MATLAB的兴趣。
也为我自己以后从事相关的事务做了一定的铺垫基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 语音 信号 时域 特性