基于Matlab的语音去噪处理


一、课题背景


1.1 研究的意义

语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。

语音信号是信息技术处理中最重要的一门科学,是人类社会几步的标志。那么什么是语音?语音是人类特有的功能,也是人类获取外界信息的重要工具,也是人与人交流必不可少的重要手段。那么什么又是信号?那信号是什么呢?信号是传递信息的函数。离散时间信号——序列——可以用图形来表示。

语音信号处理是一门用研究数字信号处理研究信号的科学。它是一新兴的信

息科学,同时又是综合多个学科领域的一门交叉科学。语音在我们的日常生

活中随时可见,也随处可见,语音很大程度上可以影响我们的生活。所以研究语音信号无论是在科学领域上还是日常生活中都有其广泛而重要的意义。

1.2 实现功能

本论文主要介绍的是的语音信号的简单处理。本论文针对以上问题,运用数字信号学基本原理实现语音信号的处理,在matlab7.0环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。我所做的工作就是在matlab7.0软件上编写一个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单语音信号处理的目的。

对语音信号的研究,本论文采用了设计两种滤波器的基本研究方法来达到研究语音信号去噪的目的,最终结合图像以及对语音信号的回放,通过对比,得出结论。

本课题的研究基本步骤如下:

1、语音信号的录制。

2、在MATLAB平台上读入语音信号。

3、绘制频谱图并回放原始语音信号。

4、利用MATLAB编程加入一段正弦波噪音,设计滤波器去噪。

5、利用MATLAB编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。

6 通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。


其大概流程框图可如下表示:(图1-1)


语音信号采集

效果显示、对比


图1-1 论文设计的流程


第二章 去噪及仿真的研究

2.1 语音文件在MATLAB平台上的录入与打开

单击自己的电脑开始程序,选择所有程序,接着选择附件,再选择娱乐,最后选择录音。自己录入“毕业设计”语音信号,然后保存在MATLAB文件夹里面,命名为“wangqingtian.wav”。

利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。

[y,fs,bits]=wavread(' [N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。

2.2 原始语音信号频谱分析及仿真

利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)都可以用 MATLAB画出。我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。选择设计此方案,是对数字信号处理的一次实践。在数字信号处理的课程学习过程中,我们过多的是理论学习,几乎没有进行实践方面的运用。这个课题正好是对数字语音处理的一次有利实践,而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。这个方案用到的软件也是在数字信号处理中非常通用的一个软件——MATLAB软件。所以这个课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。课题用到了较多的MATLAB语句,而由于课题研究范围所限,真正与数字信号有关的命令函数却并不多。sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

FFT的MATLAB实现:

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。下面介绍这些函数。

函数FFT用于序列快速傅立叶变换。

函数的一种调用格式为 y=fft(x)

其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。且和x相同长度。若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。

函数FFT的另一种调用格式为y=fft(x,N)

式中,x,y意义同前,N为正整数。函数执行N点的FFT。若x为向量且长度小于N,则函数将x补零至长度N。若向量x的长度大于N,则函数截短x使之长度为N。若x 为矩阵,按相同方法对x进行处理。

经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。MATLAB提供求复数的幅值和相位函数:abs,angle,这些函数一般和 FFT同时使用。

函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角,介于 和 之间,以弧度表示。函数unwrap(p)用于展开弧度相位角p ,当相位角绝对变化超过 时,函数把它扩展至 。

用MATLAB工具箱函数fft进行频谱分析时需注意:

(1)函数fft返回值y的数据结构对称性

一般而言,对于N点的x(n)序列的FFT是N点的复数序列,其点n=N/2+1对应Nyquist频率,作频谱分析时仅取序列X(k)的前一半,即前N/2点即可。X(k)的后一半序列和前一半序列时对称的。

(2)频率计算

若N点序列x(n)(n=0,1,…,N-1)是在采样频率 下获得的。它的FFT也是N点序列,即X(k)(k=0,1,2,…,N-1),则第k点所对应实际频率值为f=k*f /N.

(3)作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。

下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的读入打开,以及绘出了语音信号的波形频谱图。

[x,fs,bits]=wavread('yuyinwav’);

sound(x,fs,bits);

X=fft(x,4096);

magX=abs(X);

angX=angle(X);

subplot(221);plot(x);title('原始信号波形');

subplot(222);plot(X); title('原始语音信号采样后的频谱图‘)

subplot(223);plot(magX);title('原始信号幅值');

subplot(224);plot(angX);title('原始信号相位');

程序运行可以听到声音,得到的图形为:(图2-1、图2-2、图2-3、图2-4)

图2-1 原始信号波形

v2-4ff4626b3b88158c4a84960f928c8c28_b.jpg


v2-1dbb5e03b49d958bf1f61aabf7cea303_b.jpg



v2-6c2cda471d8ab06931d5bafe77d9ae34_b.jpg

图2-3 原始信号幅值










v2-3c95853f7809ec4abb93ca84cb25a81e_b.jpg

图2-4 原始信号相位




2.3 加噪语音信号频谱分析及仿真

(1)正弦波信号加入原始语音信号

前面已经介绍了MATLAB软件相关知识,那么我们怎么在NATLAB平台上实现对一段原始语音信号加入一个正弦波信号呢?

下面一段程序实现了在原始语音信号加入正弦波信号。程序见附录5

分析此段程序可知,此程序是先对原始语音信号做时域波形分析和频谱分析,然后再对加噪的语音信号做时域波形分析和频谱分析。

首先通过MATLAB中调用和回放语音信号命令来实现对原始语音信号的调用和回放,程序如下:

[y,fs,bits]=wavread('yuyin.wav');


sound(y,fs)


由于在MATLAB中,如要实现两个信号的相加减,那么两个信号的长度和维度都要一样才能相加减。程序中:n=length(y) 用于计算信号的长度和选取变换的点数。然后用傅里叶变换到频域:y_p=fft(y,n);通过函数 f=fs*(0:n/2-1)/n;计



v2-b2152e4c8908de17bdf847fb231494e6_b.jpg

图2—5 原始语音信号采样后时域波形和频谱图

上段程序中,函数noise是频率为3000Hz的正弦波信号噪音,语句y_z=y+noise实现了两个信号的相加,然后绘制加噪后的语音信号时域波形和频谱图并回放加噪后的语音信号。加噪后的时域波形和频谱图如下:(图4—6)



v2-d351c933f75cba0100d3f831e889f3ed_b.jpg

图2-6 加噪语音信号时域波形和频谱图

如上所示,通过对加噪前和加噪后语音信号的图像的对比和对语音信号回放的人耳感知可以知道,加入正弦波信号后频谱图和时域波形并没有什么明显的变化,而人耳听到的声音也几乎没有什么变化。

(2)随机噪音信号加入原始语音信号

matlab函数randn:产生正态分布的随机数或矩阵的函数

产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。
用法:
Y = randn(n)
返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。
Y = randn(m,n) 或 Y = randn([m n])
返回一个m*n的随机项矩阵。
Y = randn(m,n,p,...) 或 Y = randn([m n p...])
产生随机数组。
Y = randn(size(A))
返回一个和A有同样维数大小的随机数组。
randn
返回一个每次都变化的数量。

下面一段程序实现了利用randn函数把一段随机噪音信号加入原始语音信号的信号处理过程:见附录6



v2-23395154692f8565039fde2d0fd5d176_b.jpg

图2-7 加噪语音信号时域波形和频谱图

通过对两张图片的对比,很明显可以看加噪后的语音信号时域波形比原始语音信号浑浊了许多,在时间轴上可以明显看出0—0.5S的幅值增大了;通过对原始语音信号的频谱图与加噪后的语音信号频谱图的对比,也可以看出在频率5000Hz以后的频率幅值发生了明显的增加。

再通过对原始语音信号的回放效果与加噪后的语音信号回放的效果的对比,人耳可以明显辨别出两种语音信号不一样了,加噪后的语音信号在听觉上比原始语音信号要浑浊很多,而且还有吱吱嘎嘎的混杂音。

2.4 去噪及仿真

(1)FIR滤波器法去噪

通过对上一节中加噪语音信号和原始语音信号频谱图对比可以知道,噪音大部分是Hz大于5000的部分,故设计低通滤波器进行滤波处理。接下来我们要用设计的FIR低通滤波器对上一节中加噪语音信号进行滤波处理。


v2-548eb73395ce50b1a37dbb1af58b937d_b.jpg

图2-8 FIR滤波前和滤波后波形及频谱

分析:从以上四图可以很明显和直观的看出原始语音信号和加噪语音信号时域波形和频谱图的区别。加噪后的语音信号的时域波形比原始语音信号要模糊得多,频谱图则是在频率5000Hz以后出现了明显的变化。

再通过滤波前的信号波形和频谱图的对比,可以明显看出滤波后的波形开始变得清晰了,有点接近原始信号的波形图了。滤波后信号的频谱图也在5000Hz以后开始逐渐接近原始语音信号的频谱图。


v2-8af54ccd268acd29059eb2f3f78ea122_b.jpg

图2-9 IIR滤波前和滤波后波形及频谱


参考文献

[1] Boll S F.Suppression of Acoustic Noise in Speech Using Spectral Subtraction[J].IEEE Trans.on Acoustics,Speech,and Signal Processing,1979,27(2):113-120.

[2] Berouti M,Schwartz R,Makhoul J.Enhancement of SpeechCorrupted by Acoustic Noise[J].IEEE Trans.on Acoustics,Speech,and Signal Processing,1979,4:208-211.

[3] 胡航,语音信号处理,哈尔滨工业大学出版社,2000 年 5 月

[4]ThomsonDJ.SpectrumEstimationand armonicAnalysis[J].Proc.IEEE,1982,70(9):1 055-1 096.

[5]皇甫堪,陈建文,楼生强.现代数字信号处理[M].北京:电子工业出版社,2003.

[6]Hu Yi,Loizou P C.Speech Enhancement Based on WaveletThresholding the Multitaper Spectrum[J]. IEEE Trans.onSpeech and Audio Processing,2004,12(1):59-67.

[7]吴红卫,吴镇扬,赵力.基于多窗谱的心理声学语音增强[J].声学学 报,2007,32(3):275-281.

[8]潘欣裕,童兴法,赵鹤鸣,基于谱能比例加权的谱减法语音增强研究[J]. 中 国电子学会第十五届信息论学术年会暨第一届全国网络编码学术年会论文集

[9] 程正,赵鹤鸣. 基于多频带谱减法的语音增强算法的研究[J]. 002-8331(2007)36-0040-03.

[10] 曹瑜镠,方元,吕勇.基于最小统计及谱减法的语音增强[J]. 语音技术. 002-8684(2006)12-0043-04

[11]白文雅,黄健群,陈智伶.基于维纳滤波语音增强算法的改进实现[J].电声 技术,2007,31(1) :44-46.

[12]蔡斌.一种改进型 MMSE 语音增强方法[J].信号处理,2004,20(1) :70-74.

[13]陈俊,孙洪,董航.基于 MMSE 先验信噪比估计的语音增强[J].武汉大学学 理学版,2005,51(5) :638-642.

[14]樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社,2008.

[15]姚天任.数字语音处理[M].武汉:华中科技大学出版社,2005.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐