【语音增强】iir带阻滤波器语音增强【含Matlab源码 613期】

本文介绍了如何通过Matlab实现语音增强技术,包括获取代码的两种方式、语音增强的基本概念,以及使用带阻滤波器去除噪声的过程。内容涉及噪声类型、增强目标和几种常见的语音增强算法。
摘要由CSDN通过智能技术生成

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【语音增强】基于matlab iir带阻滤波器语音增强【含Matlab源码 613期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab语音处理(初级版)

备注:
点击上面蓝色字体付费专栏Matlab语音处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab语音处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、语音增强简介

语音增强是指当语音信号被各种各样的噪声干扰、甚至淹没后,从噪声背景中提取有用的语音信号,抑制、降低噪声干扰的技术。一句话,从含噪语音中提取尽可能纯净的原始语音。
实际语音遇到的干扰可以分以下几类:①周期性噪声,例如电气干扰,发动机旋转部分引起的干扰等,这类干扰表现为一些离散的窄频峰;②冲激噪声,例如-些电火花、放电产生的噪声干扰;③宽带噪声,这是指高斯噪声或白噪声一类的噪声,它们的特点是频带宽,几乎覆盖整个语音频带;④语音干扰,例如话筒中拾入其它人的说话,或者传输时遇到串音引起的语音。对付上述各种不同类型的噪声,增强技术亦是不一样的。
语音增强的一个主要目标是从带噪语音信号中提取尽可能纯净的原始语音。然而,由于干扰通常都是随机的,从带噪语音中提取完全纯净的语音几乎不可能。在这种情况下,语音增强的目的主要有两个:一是改进语音质量,消除背景噪音,使听者乐于接受,不感觉疲劳,这是一种主观度量;二是,这是一种客观度量。这两个目的往往不能兼得。目前有一些对低信噪比带噪语音进行语音增强的方法,可以显著地降低背景噪声,改进语音质量,但并不能提高语音的可懂度,甚至略有下降。
语音增强不但与语音信号数字处理理论有关,而且涉及到人的听觉感知和语音学范畴。再者,噪声的来源众多,因应用场合而异,它们的特性也各不相同。所以必须针对不同噪声,采用不同的语音增强对策。某些语音增强算法在实际应用中己经证明是有效的,它们大体上可分为四类:噪声对消法、谐波增强法、基于参数估计的语音再合成法和基于语音短时谱估计的增强算法。

⛄三、部分源代码

%% P2_2_1 语音信号采样,画出时域和频域的图

[y,fs] = audioread(‘myname.wav’);% y为采样数据;fs为采样频率
sound(y,fs); % 播放语言信号myname
N = length(y); % 信号的长度
t = (0:N-1)/fs; % 时域范围
figure(1);subplot(211);plot(t,y); title(‘音频时域图’);%音频信号时域图
xlabel(‘Time’);ylabel(‘Amplitude’);
Y = fft(y,N); % FFT分析频谱
df = fs/length(Y); % 计算谱线间隔
f = 0:df:(fs/2-df); % 频谱范围,截取前半段(抽样频率高于最大频率的2倍)
Yf = abs(Y); % 幅度响应
Yf = Yf(1:length(Yf)/2);% 由于幅度响应是偶函数,所以截取一半

% 画图
figure(1);
subplot(212);axis([0,fs/5,0,5000]);plot(f,Yf);title(‘音频频谱图’);

%% P2_2_2 加入噪声之后的时域和频域图

y = y(:,1); y = y’;
nt = randn(1,length(y)); % 生成高斯噪声
%设计BPF得到4KHZ到5KHZ的噪音
fp1 = 4000;fp2 = 5000; % BPF指标
WP1 = 2pifp1/fs;WP2 = 2pifp2/fs;% 将模拟指标转换为数字指标
wn1 = [WP1 WP2];
b = fir1(34,wn1,‘bandpass’);
yn = filter(b,1,nt); % 噪声的信号
s = y+yn; % 将带限噪音和原来的音频混合
%sound(s,fs);
S = fft(s,N);
Sf = abs(S); % 幅度
DF = fs/length(S); % 计算谱线间隔
f = 0:DF:(fs/2-DF); % 频谱范围,截取前半段(抽样频率高于最大频率的2倍)
Sf = Sf(1:length(Sf)/2); % 由于幅度响应是偶函数,所以截取一半

% 画图
figure(2);
subplot(211);plot(t,s); title(‘加入噪声的音频时域图’);
xlabel(‘Time’);ylabel(‘Amplitude’);grid on;
subplot(212);axis([0,fs/5,0,10000]);plot(f,Sf);title(‘加入噪声的音频频谱图’);
xlabel(‘Frequency’);ylabel(‘Amplitude’);grid on;

%% P2_2_3 设计滤波器,并滤波

%设计带阻滤波器滤除噪声
FP1 = 3500;FS1 = 3600;FP2 = 5600;FS2 = 5500;
rp2 = 1;rs2 = 40;
FP = [FP1 FP2];FS = [FS1 FS2];
wp = 2piFP/fs; % 将模拟指标转换为数字指标
ws = 2piFS/fs; % 用切比雪夫IIR滤波器
[n,wn] = cheb1ord(wp,ws,rp2,rs2); % 滤波器的最小阶数为n,wn为系统频带
[bz,az] = cheby1(n,rp2,wp,‘stop’);

sound(yfilt,fs); % 播放滤波后的语音信号
Yfil = abs(fft(yfilt,N));
Yf = Yfil(1:length(Yfil)/2);

⛄四、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab领域

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

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

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

打赏作者

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

抵扣说明:

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

余额充值