您的当前位置:首页正文

数字语音处理实验报告

2022-06-15 来源:帮我找美食网


学院:信息与通信工程学院 专业:通信工程 班级:通信144 学号:10 姓名:刘新雨 指导教师:崔艳秋

1. 实验目的

观察并验证语音信号的时域特性,理解并掌握典型的语音信号时域分析方法和时域特征,为深入学习语音信号处理的各种应用奠定基础。

2. MATLAB程序代码

(1)由麦克风采集语音数据,将采集的数据存成WAV文件(采样率为8000Hz),存在本人的文件夹中。所用程序代码为:

clear; close all; Fs=11025;

y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'D:\\\\lxy'); soundview(y,Fs);

(2)读取WAV文件,显示语音信号的波形。所用程序代码为:

clear; close all;

x = wavread('D:\\\\'); figure; plot(x);

axis([0,size(x,1),,]);

title('语音信号时域波形');xlabel('样点数'); ylabel('幅度');

(3)读取WAV文件,计算并显示语音的短时能量(窗函数为矩形窗,帧长为50,200,400,600)。所用程序代码为:

clear; close all;

x = wavread('d:\\\\'); x = double(x);

f1= enframe(x,50, 50); energy1 = sum(abs(f1), 2);

subplot(2,2,1);plot(energy1); title('语音信号的短时能量'); legend('帧长LEN =50'); f2= enframe(x,200, 200); energy2 = sum(abs(f2), 2);

subplot(2,2,2);plot(energy2); title('语音信号的短时能量'); legend('帧长LEN = 200'); f3= enframe(x,400, 400); energy3 = sum(abs(f3), 2);

subplot(2,2,3);plot(energy3); title('语音信号的短时能量'); legend('帧长LEN = 400');

f4= enframe(x,600,600); energy4 = sum(abs(f4), 2);

subplot(2,2,4);plot(energy4); title('语音信号的短时能量'); legend('帧长LEN = 600'); (4)读取WAV文件,计算并显示语音的短时过零率(窗函数为矩形窗,帧长为256,帧移为128),所用程序代码为:

clear;

close all;

x = wavread('D:\\\\'); x = double(x); LEN = 300; INC= 150;

f = enframe(x, LEN, INC); % 计算短时过零率

z = zeros(size(f,1),1); difs =; for i=1:size(f,1)

s=f(i,:); for j=1:(length(s)-1)

if s(j)* s(j+1)<0&abs(s(j)-s(j+1))>difs; z(i)= z(i)+1; end end end

subplot(2,1,1); plot(x); axis([0,size(x,1),,]);

title('语音信号时域波形'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2);plot(z);

title('语音信号的短时过零率');xlabel('帧数'); ylabel('短时过零率');

(5)读取WAV文件,计算浊音与清音的短时自相关函数所用的程序代码为: clear; close all;

x = wavread('D:\\\\'); x = double(x); LEN = 256; INC= 128;

f = enframe(x, LEN, INC);

ff=f(15,:); N=LEN; R=zeros(1,N); for k=1:N

R(k)= sum(ff(k:N).*ff(1:N-k+1));

end

for k=1:N

R1(k)= R(k)/R(1); end

subplot(2,1,1);plot(ff); axis([0,N,,])

title('加矩形窗的语音帧'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2); plot(R1); axis([0,N,-1,1])

title('加矩形窗的短时自相关函数'); xlabel('k'); ylabel('R(k)');

clear; close all;

x = wavread('d:\\\\'); x = double(x); LEN = 256; INC= 128;

f = enframe(x, LEN, INC); ff=f(124,:);

ff=ff'.*hamming(length(ff)); N=LEN; R=zeros(1,N); for k=1:N

R(k)= sum(ff(k:N).*ff(1:N-k+1)); end

for k=1:N

R1(k)= R(k)/R(1); end

subplot(2,1,1);plot(ff); axis([0,N,,])

title('加汉明窗的语音帧'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2); plot(R1); axis([0,N,-1,1])

title('加汉明窗的短时自相关函数'); xlabel('k'); ylabel('R(k)');

clear; close all;

x = wavread('D:\\\\'); x = double(x); LEN = 10; INC= 10;

f = enframe(x, LEN, INC);

ff=f(500,:);

N=LEN; R=zeros(1,N); for k=1:N

R(k)= sum(ff(k:N).*ff(1:N-k+1)); end

for k=1:N

R1(k)= R(k)/R(1); end

subplot(2,1,1);plot(ff); axis([0,N,,])

title('加矩形窗的语音帧'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2); plot(R1); axis([0,N,,])

title('加矩形窗的短时自相关函数'); xlabel('k'); ylabel('R(k)');

clear; close all;

x = wavread('D:\\'); x = double(x); LEN = 256; INC= 128;

f = enframe(x, LEN, INC);

ff=f(25,:); N=LEN; R=zeros(1,N); for k=1:N

R(k)= sum(ff(k:N).*ff(1:N-k+1)); end

for k=1:N

R1(k)= R(k)/R(1); end

subplot(2,1,1);plot(ff); axis([0,N,,])

title('加矩形窗的语音帧'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2); plot(R1); axis([0,N,,])

title('加矩形窗的短时自相关函数'); xlabel('k'); ylabel('R(k)');

3. 实验结果及其分析

(1)本实验利用11025Hz的采样频率对输入的语音信号进行采样,采样点数为55125个,持续时间为5秒,存储格式为double。之后将数字语音数据写入D盘的文件,

并通过放音设备进行回放。回放的GUI界面如图1所示,通过该界面可以观察采集的语音信号。

图1 用soundview函数显示的语音信号

(2)本实验将D盘的文件读取出来,并显示文件中的语音信号波形,显示的波形如图2所示。该波形是汉语拼音“Xu”的时域波形。从图2可以看出,[X]是清音,它的波形幅值较小,且没有周期性;[u]是浊音,它的波形幅值较大且有明显的周期性起伏结构。

图2 语音“Xu”的时域波形

(3)本实验将D盘的文件读取出来,当帧长取不同值时计算语音信号的短时能量,如图3所示。从图3可以看出,浊音短时能量大,短时平均幅度大,短时过零率低,浊音具有较强的能量值,音段内隐藏信息的能力高。轻音短时能量小,短时平均幅度小,能量值较低,音段内隐藏信息的能力较低。

图3 不同帧长对应的短时能量

(4)本实验首先读取中的语音数据,之后计算每一帧的短时过零率,最后将原始语音信号和短时过零率显示出来,如图4所示。从图4可以看出,清音的过零率较高,浊音的过零率较低。

图4 短时过零率

(5)本实验首先读取中的语音数据,之后对数据进行分帧加窗处理,帧长为256,帧移为128。选取其中的一帧浊音(第15帧)并计算这帧的短时自相关函数。当窗函数分别为矩形窗和汉明窗时,截取的语音信号和短时自相关函数如图5和图6所示。从图5和图6可以看出,矩形窗能够比汉明窗更明显的显示出第一个峰值。当窗函数为矩形窗,不同帧长(帧移=帧长)的一帧浊音对应的短时自相关函数如图7和图8所示。从图7和图8可以看出,帧长越长,越容易区分其最大值。当窗函数为矩形窗,帧长为256,帧移为128,选取一帧清音,获得的短时自相关函数如图9所示。从图5和图9可以看出,浊音具有明显的周期性,清音无明显周期。

图5 加矩形窗的短时自相关函数

图6 加汉明窗的短时自相关函数

图7 帧长为10时的短时自相关函数

图8 帧长为100时的短时自相关函数

图9 清音的短时自相关函数

4. 思考题

短时能量的主要用途有哪些?

答:可以区分清音段与浊音段,可以用来区分,有声与无声的分界,生母和韵母的分界等,也可以用于语音识别中。

因篇幅问题不能全部显示,请点此查看更多更全内容