2.2. 语音信号的采集
利用windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8.000KHz,8位,单声道),录制一段自己的话音“信号”, 时间控制在1秒左右,然后将音频文件保存为“login.wav”文件。在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。 其中y=wavread(file)是读取file所规定的wav文件,返回采样值放在向量y中。[y,fs,bits]=wavread(file) 是采样值放在向量y中,fs表示采样频率(hz),bits表示采样位数。y=wavread(file,N)是读取前N点的采样值放在向量y中。y=wavread(file,[N1,N2])是读取从N1到N2点的采样值放在向量y中。
2.3. 程序流程图图2-2 程序流程图
这个流程图主要是介绍本文设计过程和顺序,让大家快速,清晰地了解全过程。我们首先用wavread读取语音信号,并进行采样,建立数据文件,并用plot画出数据文件时域波形图和频谱图;然后利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;再运用数字信号处理理论设计FIR和IIR数字滤波器, 并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域;最后回放语音信号得出所设计滤波器在语音处理中的优劣并设计一个信号处理系统界面。过程结束。
2.4. 原始语音信号的时域与频域分析
MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性[3]。程序详见附录(I-1)。
程序结果如下图:
图2-3 原始信号采集波形图
2.5. 语音信号加噪与频谱分析
在MATLAB中产生高斯白噪声非常方便,我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。
在本次设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用Randn(m,n)函数。原始语音信号加噪程序代码详见附录(I-2)。本文中所得到的带噪声的语音信号时域及频谱图如下:
图 2-4 信号加噪时域波形图与频谱图
3. 数字滤波器的设计
3.1. IIR数字滤波器
IIR(Infinite Impulse Response)数字滤波器,又名“无限脉冲响应数字滤波器”,或“递归滤波器”。IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式[2]。
IIR滤波器的设计步骤如下:
(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减、阻带截止频率、阻带最小衰减。 MATLAB的带噪声语音信号处理+滤波器设计(4):http://www.751com.cn/tongxin/lunwen_2230.html