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范围之内

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值