- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于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('120.wav ') ;
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=0.05*randn(n,2);
其中用0.05倍乘噪声用来适当削减噪声的作用,便于对语音信号进行处理并比较效果。
将原语音信号与noise叠加,调用的形式为:
s=y+noise;
其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。
(4) 噪声频谱分析
产生噪声并绘出波形和频谱的模块程序如下:
noise=0.05*randn(n,2);
subplot(2,1,1);
plot(noise); %噪声信号
title('噪声信号');
grid;
%噪声信号傅里叶变换
sound(noise,fs) ; %对噪声信号进行回放
noifft=fft(noise);
%对噪声信号频域分析
noifftsh=fftshift(noifft);
subplot(2,1,2);
plot(abs(noifftsh)); %做噪声信号频谱分析
title('噪声信号频域分析');
axis([0,30000,0,200]);
grid;
结果如下:
可以看到,随机噪声均匀的分布在整个频谱范围内。
(5)污染信号频谱分析
对被污染的加噪信号进行时域和频域分析。??
加噪声并分析信号波形频谱的模块程序及说明如下:
n2=length(noise);
s=noise+y; %噪声叠加
sound(s,fs);
subplot(2,1,1);
plot(s);
文档评论(0)