基于MATLAB的有噪声的语音信号处理
一、课程设计题目:
基于MATLAB的有噪声的语音信号处理。
二、课程设计的目的:
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,再利用MATLAB做为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
三、课程设计的要求:
(1)熟悉离散信号和系统的时域特性。
(2)掌握序列快速傅里叶变换FFT方法。
(3)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(4)利用MATLAB对语音信号进行频谱分析。
(5)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。
四、课程设计的内容:
录制一段语音信号,对语音信号进行频谱分析,利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR数字滤波器,并对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。
五、课程设计的步骤:
(1) 语音信号的采集及分析
通过录音软件录制一段语音“数字信号处理”,命名为“120”,时长大约1到2秒,在 Matlab软件平台下可以利用函数wavread对语音信号进行采样:
[y,fs,nbits]=wavread('120'); %语音信号的采集 采样值放在向量y中,采样频率为fs,采样位数为nbits。
(2) 语音信号的频谱分析
画出语音信号的时域波形,然后对语音信号进行频谱分析,在MATLAB中,通过使用fft函数对信号进行快速傅里叶变换,得到信号的频谱特性。
因此采集语音并绘出波形和频谱的模块程序如下:
[y,fs,nbits] =wavread(' ') ;
n=length(y); %求出声音长度
t=0:1/fs:(n-1)/fs; %时间t 从0到n-1
sound(y,fs) ; %对加载的语音信号进行回放
subplot(2,1,1);
plot(y); %做原始语音信号的时域图形
title('原始语音信号时域波形');
grid;
%傅里叶变换
y1=fft(y,n); %做原始语音信号的傅里叶变换
%对原始信号频域分析
%y2=fftshift(y1);
subplot(2,1,2);
plot(abs(y1)); %原始信号的频谱图像
title('原始信号的频谱图像');
grid;
结果如下:
可以看到,语音信号的频率集中在低频部分。
(3)给原始信号加上一个随机噪声
在MATLAB中,通过使用randn函数产生随机噪声信号在,把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。
产生随机噪声: Noise=*randn(n,2);
,便于对语音信号进行处理并比较效果。
将原语音信号与noise叠加,调用的形式为:
s=y+noise;
其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。
(4) 噪声频谱分析
产生噪声并绘出波形
基于matlab的声音信号处理 来自淘豆网www.taodocs.com转载请标明出处.