用MATLAB实现语音信号的时域分析

发布时间 : 星期四 文章用MATLAB实现语音信号的时域分析更新完毕开始阅读

实验一、用MATLAB实现语音信号的时域分析

1. 实验目的

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

2. MATLAB程序代码

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

clear; close all; Fs=8000;

y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'f:\\\\a');

soundview(y,Fs,'name')

(2)读取WAV文件,显示语音信号的波形。所用程序代码为: x = wavread('f:\\\\a.wav'); figure; plot(x);

axis([0,size(x,1),-0.35,0.3]); %坐标轴范围

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

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

x = wavread('f:\\\\a.wav'); x = double(x);

f = enframe(x,20, 100); energy = sum(abs(f), 2);

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

title('语音信号时域波形');xlabel('样点数'); ylabel('幅度'); subplot(2,2,2);plot(energy); title('语音信号的短时能量'); legend('帧长LEN = 20'); f = enframe(x,20, 200);

energy = sum(abs(f), 2);

subplot(2,2,3);plot(energy); title('语音信号的短时能量'); legend('帧长LEN = 100'); f = enframe(x,20, 400);

energy = sum(abs(f), 2);

subplot(2,2,4);plot(energy); title('语音信号的短时能量'); legend('帧长LEN = 200');

1

(4)读取WAV文件,计算并显示语音的短时过零率(窗函数为矩形窗,帧长为256,帧移为128),所用程序代码为:

x = wavread('f:\\\\a.wav'); x = double(x); LEN =100; INC=100;

f = enframe(x, LEN, INC); %分帧 % 计算短时过零率 z = zeros(size(f,1),1);

difs =0.01; 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),-0.35,0.3]);

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

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

(5)读取WAV文件,当窗函数为矩形窗、帧长为20时,计算一帧浊音的短时自相关函数所用的程序代码为:

x = wavread('f:\\\\a.wav');

x = double(x); LEN = 100; INC= 100;

f = enframe(x, LEN, INC);

ff=f(72,:); %选取一帧浊音信号 ff=ff'.*rectwin(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

2

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

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

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

3. 实验结果及其分析

(1)本实验利用8000Hz的采样频率对输入的语音信号进行采样,采样点数为40000个,持续时间为4秒,存储格式为double。之后将数字语音数据写入F盘的a.wav文件,这段波形是读音为’ke’的波形,并通过放音设备进行回放。回放的GUI界面如图1所示,通过该界面可以观察采集的语音信号。

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

(2)本实验将L盘的a.wav文件读取出来,并显示文件中的语音信号波形,显示的波形如图2所示。该波形是汉语拼音“ke”的时域波形。从图2可以看出,[K]是清音,它的波形峰值较低;[e]是浊音,它的波形峰值较高。

3

联系合同范文客服:xxxxx#qq.com(#替换为@)