语音信号处理试验
实验一:语音信号时域分析
实验目的:
(1)录制两段语音信号,内容是“语音信号处理”,分男女声。
(2)对语音信号进行采样,观察采样后语音信号的时域波形。
实验步骤:
1、使用window自带录音工具录制声音片段
使用windows自带录音机录制语音文件,进行数字信号的采集。
启动录音机。
录制一段录音,录音停止后,文件存储器的后缀默认为.Wav。
将录制好文件保存,记录保存路径。
男生女生各录一段保存为test1.wav和test2.wav。
图1基于PC机语音信号采集过程。
2、读取语音信号
在MATLAB软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。
通过使用wavread函数,理解采样、采样频率、采样位数等概念!
Wavread函数调用格式:
y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1到N2点的采样值放在向量y中。
3、编程获取语音信号的抽样频率和采样位数。
语音信号为test1.wav和test2.wav,内容为“语音信号处理”,两端语音保存到工作空间work文件夹下。
在M文件中分别输入以下程序,可以分两次输入便于观察。
[y1,fs1,nbits1]=wavread('test1.wav')
[y2,fs2,nbits2]=wavread('test2.wav')
结果如下图所示
根据结果可知:两端语音信号的采样频率为44100HZ,采样位数为16。
4、语音信号的时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。
进行语音分析时,最先接触到并且夜市最直观的是它的时域波形。
语音信
号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。
时域分析通常用于最基本的参数分析及应用,比如语音的分割、预处理、大分类。
这种分析方法的特点是:①表示语音信号比较直观、物理意义明确。
②实现起来比较简单、运算且少。
③可以得到语音的一些重要的参数。
④只使用示波器等通用设备,使用较为简单。
[y1,fs1,nbits1]=wavread('test1.wav');
sound(y1,fs1,nbits1);%回放语音信号
[y2,fs2,nbits2]=wavread('test2.wav');
sound(y2,fs2,nbits2);%回放语音信号
subplot(2,1,1);
plot(y1);title('原始信号1时域波形');
subplot(2,1,2);
plot(y2);title('原始信号2时域波形');
试验结果如下所示:
[y1,fs1,nbits1]=wavread('ah01.wav'); sound(y1,fs1,nbits1);%回放语音信号[y2,fs2,nbits2]=wavread('ah02.wav'); sound(y2,fs2,nbits2);%回放语音信号subplot(2,1,1);
plot(y1);title('原始信号1时域波形'); subplot(2,1,2);
plot(y2);title('原始信号2时域波形');计算频谱:
[y,fs,nbits]=wavread('rs');
sound(y,fs,nbits);%回放语音信号
N=length(y);%求出语音信号的长度
Y=fft(y,N);%傅里叶变换
subplot(2,1,1);
plot(y);title('原始信号时域波形');
subplot(2,1,2);
plot(abs(Y));
title('原始信号频谱')
函数说明:
Plot函数:
plot是最基本的二维绘图命令,在二维绘图中只要输入plot(a,b)这个命令,就可以画出一个以a为x轴,b为y轴的图形。
Subplot函数
使用方法:subplot(m,n,p)或者subplot(m n p)。
subplot是将多个图画到一个平面上的工具。
其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。
p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。
Wavread函数:
y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1到N2点的采样值放在向量y中。
Sound函数:
sound
Convert vector into sound Syntax
sound(y,Fs)
sound(y)
sound(y,Fs,bits)
Descriptionsound(y,Fs)sends the signal in vector y(with sample frequency Fs)to the speaker on PC and most UNIX platforms.Values in y are assumed to be in the range.Values outside that range are clipped. Stereo sound is played on platforms that support it when y is an n-by-2 matrix.。