当前位置:首页 > 数字语音处理大作业
《数字语音处理》大作业
语音去噪算法研究
学院:信息与通信工程学院 专业:通信工程 班级: 学号: 姓名:
1 研究意义
在语音的录制、传输过程中.引入各种各样的噪声是不可避免的。噪声的干扰不仅会降低语音通信的质量,而且会使基于特征参数提取的语音处理系统性能急剧下降。为抑制噪声,提高语音的质量,需要对含噪语音信号进行语音增强。
近些年。在语音增强研究领域出现了一些诸如小波变换、子空间分解等一些新方法。但是基于语音幅度谱(功率谱)估计的增强算法一直是研究热点,主要有频谱减法、维纳滤波方法等。相对于其它方法,频谱减法是一种发展较早且应用比较成熟的语音去噪方法。它引入的约束条件最少,物理意义最直接,运算量小。本研究采用频谱减法有效地去除了噪声,能够起到很好的语音增强效果,在不损伤语音信号的前提下能够大幅度提高信噪比。
2 研究现状
频谱减法算法是在假设噪声是统计平稳且与语音不相关的前提下,利用短时傅里叶变换在频域将带噪语音的功率谱减去估计噪声的功率谱,得到语音功率谱估计值。根据离散傅里叶变换的线性性质。将语音信号的离散傅里叶变换与噪声的离散傅里叶变换相减,即可得到语音信号的离散傅里叶变化,再进行离散傅里叶反变换即可得到去噪后的语音信号。利用MATLAB 的wavread 函数读取PCM 编码格式的WAV 音频文件数据。
频谱减法基本原理如下: 假设带噪语音信号为: y(i)=s(i)+n(i) 其中,s(i)为纯净语音,n(i)为噪声信号。
经FFT变换后,相应的频域表示为:Y=S+N
kkk由此可得:|Y ??k||Sk||Nk|SNSN??**kkkk222因为纯净语音信号与噪声信号是相互独立的,所以Sk与Nk也是相互独立的。 所以:E
????|Yk|2????= E
????|Sk|2????+ E
????|Nk|2????其中,E
????可以通过先验知识或者通过无语音|Nk|???2?时的统计平均得到,设为?n(K)。 对于一个分帧内的短时平稳过程则有:由此可得到原是语音的谱估计值:
|Yk||Sk|??(K)
?n?2)???122|SK|=|Yk|E|Nk|????2?2?21???=
????|Yk|??(Kn2
其中,
SK是增强后的语音幅度。
1
由于人耳对语音的感知是通过语音信号中各频谱分量的幅度获取的。对各分量的相位则不敏感,因此直接用带噪语音的相位作为增强以后的语音相位。就可得到原始语音的估计值。
具体做法如下,录制一段自己的话音和一段背景噪音,采样频率为32kHz 的文件,然后在Matlab 软件平台下,利用函数wavread 对语音信号进行采样。分别画出语音信号和背景噪音信号的的时域波形;然后音频信号进行快速傅里叶变换,得到信号的频谱特性。将两信号的频谱相减,得到去噪后的频谱。
3 仿真实验及分析
(1)由麦克风采集语音数据,将采集的数据存成WAV文件(要求采样率为32000Hz),存在G盘中。 clear; close all; Fs=32000;
y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'G:\\\\a'); soundview(y,Fs);
图1用soundview函数显示的语音信号
(2)由麦克风采集噪音数据,将采集的数据存成WAV文件(要求采样率为32000Hz),存在G盘中。 clear; close all; Fs=32000;
y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'G:\\\\x'); soundview(y,Fs);
2
图2用soundview函数显示的噪音信号
(3)MATLAB 代码如下:
clear;clc;%录音后用音频格式转换软件转为wav 格式fs=32kHz 的文件 x1=wavread('G:\\a.wav'); x2=wavread('G:\\x.wav'); N=size(x1,1);
x1=x1(1:N,1);%因录音时是立体声故去其中的第一通道的音频数据 x2=x2(1:N,1); n=1:N;
fs=32000;%语音信号采用频率为32000 赫兹 Y1=fft(x1,N);%对信号做N 点的FFT 变换 Y2=fft(x2,N);
magx1=abs(Y1(1:1:N/2+1));k1=[0:1:N/2];w1=fs/N*k1; magx2=abs(Y2(1:1:N/2+1));k2=[0:1:N/2];w2=fs/N*k1; figure(3);%作图3
subplot(2,1,1);stem(n,x1,'.k');title(' 处理前音频信号signal x(t)');grid; subplot(2,1,2);plot(w1,magx1,'k');title(' 处理前音频信号的频谱');grid; figure(4);%作图4
subplot(2,1,1);stem(n,x2,'.k');title(' 噪音信号n(t)');grid;
subplot(2,1,2);plot(w2,magx2,'k');title(' 噪音信号的频谱');grid; magx3=magx1-magx2; Y=Y1-Y2;%频谱相减
x3=ifft(Y);%离散傅里叶反变换 figure(5);%作图5
subplot(2,1,1);stem(n,x3,'.k');title(' 去噪后音频信号n(t)');grid;
subplot(2,1,2);plot(w1,magx3,'k');title(' 谱相减后音频信号频谱');grid; 得到波形如下:
3
共分享92篇相关文档