语音信号的读取,分析,低通滤波和输出

  • 实验目标:
  1. 掌握matlab的程序设计方法
  2. 熟悉windows环境下语音信号采集的方法
  3. 学会使用FDATool设计低通滤波器
  4. 学会使用matlab对信号进行处理和分析

  • 实验过程:

代码分析

原始音频的处理:

[y0,fs1] = audioread('原始音频.wav'); %读取原始音频信息

n1=length(y0);%计算y0的长度

t1=(0:n1-1)/fs1;%设置波形图横坐标

f1=0.5*fs1*(0:n1-1)/n1;%频域x轴  

y1=fft(y0,2*n1); %对y0进行快速傅里叶变换

figure %画图

subplot(2,3,1); 

plot(t1,y0) %时域图x,y轴

grid on;   

title('原始音频信号时域');%标题  

xlabel('时间/s');%时域x轴

ylabel('幅度');%时域y轴

subplot(2,3,4); 

plot(f1,abs(y1(1:n1))); %频域图x,y轴

grid on;  

title('原始音频信号频谱');%标题

xlabel('频率/Hz');%频域x轴

ylabel('幅度'); %频域y轴

含噪音频的处理:

[y2,fs2] = audioread('含噪音频.wav');%读取含噪音频信息

n2=length(y2);%计算y2的长度

t2=(0:n2-1)/fs2;%设置波形图横坐标

f2=0.5*fs2*(0:n2-1)/n2;%频域x轴    

y3=fft(y2,2*n2); %对y2进行快速傅里叶变换

subplot(2,3,2); 

plot(t2,y2) %时域图x,y轴

grid on;   

title('含噪音频信号时域');  

xlabel('时间/s'); 

ylabel('幅度'); %画语音信号频域图  

subplot(2,3,5); 

plot(f2,abs(y3(1:n2)));%频域图x,y轴   

grid on;  

title('含噪音频信号频谱');  

xlabel('频率/Hz');   

ylabel('幅度');

低通滤波处理:

Hd = lowpass2;

y4=filter(Hd,y2);%对y2进行低通滤波

n3=length(y4);%计算y4的长度

subplot(2,3,3);

plot(t2,y4);%时域图x,y轴

grid on;

title('低通后信号波形');%标题

xlabel('时间/s');%时域x轴

ylabel('幅度');%时域y轴

y5=fft(y4,2*n3);%对y4进行快速傅里叶变换

subplot(2,3,6)

plot(f2,abs(y5(1:n3))); %频域图x,y轴

grid on;

title('低通后信号频谱');%标题

xlabel('频率/Hz');%频域x轴

ylabel('幅度');%频域y轴

audiowrite('输出音频.wav',y4,fs2) %存储.wav音频文件

滤波器代码:

function Hd = lowpass2

%LOWPASS2 Returns a discrete-time filter object.

% MATLAB Code

% Generated by MATLAB(R) 8.3 and the Signal Processing Toolbox 6.21.

% Generated on: 02-Jul-2021 09:27:51

% Equiripple Lowpass filter designed using the FIRPM function.

% All frequency values are in Hz.

Fs = 48000;  % Sampling Frequency

N     = 10;    % Order

Fpass = 8000;  % Passband Frequency

Fstop = 12000;  % Stopband Frequency

Wpass = 1;     % Passband Weight

Wstop = 1;     % Stopband Weight

dens  = 20;    % Density Factor

% Calculate the coefficients using the FIRPM function.

b  = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop], ...

           {dens});

Hd = dfilt.dffir(b);

% [EOF]

通过原始音频信号频谱和含噪音频信号频谱的比较,可以发现含噪音频在频谱上比原始音频频谱多了14kHz以上的高频部分,故采用FIR低通滤波器,将14kHz以上的高频部分过滤。

  • 实验结果:

含噪音频通过低通滤波器,成功将14kHz以上的高频噪声去除,而14kHZ一下的低频信号保留,达到预期目的。

  • 小结分析:

   本设计实现了语音信号的基本处理功能,完成了对语音信号的读取与打开,通过fft得到了语音信号的频谱图,较好的完成了对语音信号的频谱分析,在滤波方面,采用FIR低通滤波器,实现了滤波效果,效果达到预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与fpga斗智斗勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值