声音信号分析与处理

一、实验目的:

利用声音信号的特殊频带,通过加入噪声,设计滤波器对噪声进行处理,达到对声音信号分析与处理的目的。

二、实验要求:

利用计算机的“录音机”功能,采集一段小于10s的音频信号(“语音信号采集及处理”),存于文件.wav,利用MATLAB的audioread函数,读取采集数据,提取其数据采集频率等参数;对该信号加入多种噪声,如随机噪声、有色噪声等,送至播放器播放;根据加噪音信号的频谱特征,设计数字滤波器对该音频信号进行处理,并给出设计指标;将滤波后的语音信号,送至播放器播放,分析滤波效果,并进一步优化滤波器设计方案。

三、技术方案:

设计滤波器并滤波的主要步骤有八步,首先写出,注意需要将模拟频率对采样率归一化,然后计算出过度带宽度,根据阻带最小衰减选择窗函数,再求窗长度,求截止频率,计算滤波器系数向量,绘制滤波器频率特性波特图,完成滤波。

对于本实验,首先利用计算机的录音机功能,采集一段小于10s的音频信号,再利用MATLABaudioread函数,读取采集数据,得到原始信号的频率,利用sound函数听原始信号,注意使用pause函数,防止多段录音混在一起,画出原始信号时域图形并作出频谱分析,然后对该信号加入12000Hz噪声,利用sound函数听加噪声后的信号,画出该信号时域图形并作出频谱分析,最后根据已知条件设计滤波器,这里我采用\omega _{s}=0.36\pi,\omega _{p}=0.98\pi,使用汉宁窗,完成滤波,利用sound函数听滤波后的信号,画出该信号时域图形并作出频谱分析,观察比较三张时域图、三张频谱图之间的区别。

四、实验程序:

clc;
clear;
close all;

[Y,Fs]=audioread('F:\bin\win64\信号实习\录音.m4a');
Y1=Y(:,1);
Y2=Y(:,2);
N=length(Y);
subplot(3,2,1),plot(Y,'c'),title('原声音信号');

fs=25000;ts=1/fs;
y1=fft(Y)*ts;
z1=abs(y1);
if mod(N,2)==0
    k=-N/2:(N/2-1);
else
    k=-(N-1)/2:(N-1)/2;
end;
f1=k*fs/N;
subplot(3,2,2),plot(f1,fftshift(z1),'y'),title('初始信号频谱');

f=1.2E4;
t=0:ts:(N-1)*ts;
n=0.1*sin(2*pi*f*t);
X1=Y1+n';
X2=Y2+n';
X=[X1,X2];
subplot(3,2,3),plot(X,'m'),title('加噪声后声音信号');

y2=fft(X)*ts;
z2=abs(y2);
f2=k*fs/N;
subplot(3,2,4),plot(f2,fftshift(z2),'g'),ylim([0,0.08]),title('加噪声后声音信号频谱');

ws=0.98*pi;wp=0.36*pi;
Bt=ws-wp;
N0=ceil(6.2*pi/Bt);
N1=N0+mod(N0+1,2);
wc=(wp+ws)/2;
hn=fir1(N1-1,wc/pi,'low',hanning(N1));
y=filter(hn,1,X);
subplot(3,2,5),plot(y,'r'),title('滤波后声音信号');

y3=fft(y)*ts;
z3=abs(y3);
f3=k*fs/N;
subplot(3,2,6),plot(f3,fftshift(z3),'b'),title('滤波后声音信号频谱');


五、实验结果:

 该图中依次为初始信号及其频谱分析,加噪声后的信号及其频谱分析,滤波后的信号及其频谱分析。可见滤波效果较好,原声音信号和滤波后声音信号的时域图形、频谱图都基本重合,通过sound函数听滤波后的声音,还原较为清晰,通过改变\omega _{p},\omega _{s}参数后设计出了滤波效果较好的滤波器。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB是一种非常强大的声音信号分析处理工具。基于MATLAB,我们可以利用其丰富的信号处理函数和工具箱来实现声音信号分析处理。 首先,声音信号的强度可以通过MATLAB中的音频采样数据来计算得出。我们可以使用MATLAB提供的函数,如audioread()来读取声音信号的音频数据,并利用这些数据来计算声音信号的能量或强度。 其次,声音信号的响度可以通过MATLAB中的音频信号处理工具箱来计算得出。具体来说,我们可以使用MATLAB中的声音测量函数,如loudness()来计算声音信号的平均响度。 除了基本的声音信号分析MATLAB还提供了丰富的声音信号处理功能。例如,我们可以利用MATLAB中的滤波器设计函数和滤波器库来进行声音信号的滤波处理。还可以利用MATLAB中的时频分析工具来进行声音信号的时频分析,比如短时傅里叶变换(STFT)和连续小波变换(CWT)等。 此外,MATLAB还提供了各种音频信号处理算法的实现,比如噪音消除、语音增强、音频编解码等。我们可以利用这些算法和函数来对声音信号进行处理和增强,以满足特定应用的需求。 综上所述,基于MATLAB可以实现声音信号分析处理。通过利用MATLAB丰富的信号处理函数和工具箱,我们可以计算声音信号的强度和响度,并进行各种声音信号处理操作,从而满足不同应用场景的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值