实验一语音信号的时域特性和频域特性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一、语音信号的时域特性和频域特性

学院:信息与通信工程学院

专业:通信工程

班级:104

学号:2010026410

姓名:黄余芳

指导教师:崔艳秋

1.实验名称

语音信号的时域特性和频域特性

2.实验类型

验证性实验

3.实验目的

观察并验证语音信号的时域特性和频域特性,理解并掌握典型的语音信号时域分析方法和频域分析方法,为深入学习数字语音信号处理的相关理论奠定基础。

4.实验设备

安装有MATLAB的计算机

5.实验内容

1.输入并运行MATLAB代码。

2.观察语音信号的时域特性

(1)发一个清音和一个浊音,由麦克风采集语音数据,参考实验内容1中的程

序将这些数据分别存成两个“.wav”文件(例如[a]的语音存为“a.wav”,要求

采样率为8000),存在本人的文件夹中。

(2)读取WA V文件,显示语音波形,观察清音和浊音波形的差异。

(3)读取WA V文件,计算并显示语音的短时能量(要求分帧加窗的帧长为256,

帧移为128),观察并分析清音和浊音短时能量的差异。

(4)读取WA V文件,计算并显示语音的短时过零率(要求分帧加窗是的帧长

为256,帧移为128),观察并分析清音和浊音短时过零率的差异。

3. 观察语音信号的频域特性

(1)读取WA V文件,计算并显示一帧语音的原始信号、加窗信号、短时频谱(要求分帧加窗的窗函数为汉明窗、帧长为256,帧移为128),观察并分析清音和浊音短时频谱的差异。

(2)读取WA V文件,计算并显示不同窗函数情况下一帧语音的加窗信号、短

时频谱(要求分帧加窗的窗函数分别为矩形窗和汉明窗、帧长为256,帧移为

128),观察并分析不同的窗函数对短时谱分析的影响。

6.相关函数

wavread、plot、fft

7.MATLAB程序代码

1. 输入并运行以下MATLAB代码。

(1) 短时能量

clear;

close all;

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;

close all;

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;

close all;

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);

相关文档
最新文档