电网络理论课程设计与报告题目:语音信号的噪声分析及滤波的过程研究一、语音信号的噪声分析及滤除一般过程选择一个语音信号作为分析的对象,或录制一段格式为 *.wav各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号。
其流程图如下所示:二、音频信号、噪声的分析(一)、音频信号分析音频信号的频率范围在20Hz-20000Hz,是人耳可以听到的频率范围,超过这个范围的音频信号没有意义。
语音的频率范围在30-1000Hz之间。
(二)、噪声的产生噪声的来源一般有环境设备噪声和电气噪声。
环境噪声一般指在录音时外界环境中的声音,设备噪声指麦克风、声卡等硬件产生的噪声,电气噪声有直流电中包含的交流声,三极管和集成电路中的无规则电子运动产生的噪声,滤波不良产生的噪声等。
这些噪声虽然音量不大(因为在设备设计中已经尽可能减少噪声),但参杂在我们的语音中却感到很不悦耳,尤其中在我们语音的间断时间中,噪声更为明显。
三、A/D转换A/D转换可分为4个阶段:即采样、保持、量化和编码。
采样就是将一个时间上连续变化的信号转换成时间上离散的信号,根据奈奎斯特采样定理fsZZfh,如果采样信号频率大于或等于2倍的最高频率成分,则可以从采样后的信号无失真地重建恢复原始信号。
考虑到模数转换器件的非线性失真、量化噪声及接收机噪声等因素的影响,采样频率一般取2.5~3倍的最高频率成分。
要把一个采样信号准确地数字化,就需要将采样所得的瞬时模拟信号保持一段时间,这就是保持过程。
保持是将时间离散、数值连续的信号变成时间连续、数值离散信号,虽然逻辑上保持器是一个独立的单元,但是,实际上保持器总是与采样器做在一起,两者合称采样保持器。
图给出了A/D采样电路的采样时序图,采样输出的信号在保持期间即可进行量化和编码。
量化是将时间连续、数值离散的信号转换成时间离散、幅度离散的信号;编码是将量化后的信号编码成二进制代码输出。
到此,也就完成了A/D转换,这些过程通常是合并进行的。
例如,采样和保持就经常利用一个电路连续完成,量化和编码也是在保持过程中实现的。
四、通用串行总线(一)、USB总线的分析USB标准采用NRZI方式(翻转不归零制)对数据进行编码。
翻转不归零制(non-return to zero,inverted),电平保持时传送逻辑1,电平翻转时传送逻辑0。
USB 接头提供一组5伏特的电压,可作为相连接USB设备的电源。
实际上,设备接收到的电源可能会低于5V,只略高于4V。
USB规范要求在任何情形下,电压均不能超过5.25V;在最坏情形下(经由USB供电HUB所连接的LOW POWER 设备)电压均不能低于4.375V,一般情形电压会接近5V。
(二)、PCI总线PCI是由Intel公司1991年推出的一种局部总线。
从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。
管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能,它为显卡,声卡,网卡,MODEM等设备提供了连接接口,它的工作频率为33MHz/66MHz。
五、语音信号杂音滤除的具体实现(一)、语音信号的采集利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。
将话筒输入计算机的语音输入插口上,启动录音机。
按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。
点击放音按钮,可以实现所录音的重现。
以文件名“speech”保存入X:\ MATLAB \ work 中。
可以看到,文件存储器的后缀默认为*.wav ,这是WINDOWS 操作系统规定的声音文件存的标准。
(二)、语音信号的时频分析利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。
再对其进行采样,记住采样频率和采样点数。
其格式是:y=wavread(file)功能是读取file所规定的wav文件,返回采样值放在向量y中。
接下来,对语音信号OriSound.wav进行采样。
其程序是[y,fs,nbits]=wavered (‘OriSound’); 把语音信号加载入Matlab 仿真软件平台中。
然后,画出语音信号的时域波形,再对语音信号进行频谱分析。
MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式是Xk=fft(xn,N)。
参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。
,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
其程序如下:fs=22050;[y,fs,nbits]=wavread ('OriSound.wav');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('原始信号频谱')程序结果如下图:图1 原始信号波形及频谱(三)、语音信号加噪与频谱分析MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数。
我们可以直接应用两个函数:一个是WGN,另一个是AWGN。
WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
也可直接用randn函数产生高斯分布序列。
在本次课程设计中,用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。
Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。
在这里,用Randn(m,n)函数。
语音信号添加噪声及其频谱分析的主要程序如下:[y,fs,nbits]=wavread ('OriSound.wav');N = length (y) ; %求出语音信号的长度Noise=0.01*randn(n,2); %随机函数产生噪声Si=y+Noise; %语音信号加入噪声sound(Si);subplot(2,1,1);plot(Si);title('加噪语音信号的时域波形');S=fft(Si); %傅里叶变换subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形');程序结果如下图:图2 加噪后的波形及频谱分析六、数字滤波器设计滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。
其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H (s)按某种方法转换成数字滤波器的系统函数H(z)。
间接法,常用的方法有窗函数法、频率采样等。
具体设计步骤如下:(1)确定所需类型数字滤波器的技术指标。
(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。
(4)设计模拟低通滤波器。
(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。
(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。
脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。
原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。
(1)构造希望逼近的频率响应函数。
(2)计算h(n)。
(3)加窗得到设计结果。
接下来,我们根据语音信号的特点给出有关滤波器的技术指标:①低通滤波器的性能指标:fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB②高通滤波器的性能指标:fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;③带通滤波器的性能指标:fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB数字滤波器的主要程序:1、低通滤波器:wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数[num11,den11]=bilinear(b11,a11,0.5); %双线性变换实现S域到Z域的变换[h,w]=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h));legend('用butter设计');图3 低通滤波器2、带通wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.^2)/(bw*w);[n12,wn12]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率[b12,a12]=butter(n12,wn12,'s'); %求S域的频率响应参数[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将S域低通参数转为带通的[num12,den12]=bilinear(num2,den2,0.5);%双线性变换实现S域到Z域的转换[h,w]=freqz(num12,den12); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h));axis([0 4000 0 1.5]);legend('用butter设计');图4 带通滤波器七、用滤波器对加噪语音信号进行滤波(一)、滤波用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR 滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。