2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab单频噪声 基于MATLAB有噪声语音信号处理

matlab单频噪声 基于MATLAB有噪声语音信号处理

时间:2019-05-18 22:33:45

相关推荐

matlab单频噪声 基于MATLAB有噪声语音信号处理

基于MATLAB有噪声语音信号处理

一设计内容

选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计FIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号。

二设计的具体实现

1语音信号的时频分析

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍wavread 函数几种调用格式。

(1)y=wavread(file)

功能说明:读取file所规定的wav文件,返回采样值放在向量y中。

(2)[y,fs,nbits]=wavread(file)

功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。

接下来,对语音信号kalong.wav进行采样。其程序如下:

[y,fs,nbits]=wavered (‘kalong’);把语音信号加载入Matlab 仿真软件平台中然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn 的长度时,fft函数自动在xn后面补零。当N小于xn的长度时,fft函数计算xn 的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下:

[x,fc,nbits]=wavread ('kalong.wav');

sound(x,fc,nbits); %回放语音信号

N=length(x); %求出语音信号的长度

t=0:1/fc:(size(x)-1)/fc;

X=abs(fft(x,N)); %傅里叶变换

X=X(1:N/2);

f=fc/N*(0:1:(N/2)-1);

figure(1)

subplot(2,1,1);

plot(t,x);

title('原始信号波形');xlabel('s');

subplot(2,1,2);

plot(f,abs(X));%可见声音信号频谱在0~4e3范围之内

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。