(基于matlab自写代码)语音信号增强

您所在的位置:网站首页 基于matlab音频信号处理设计 (基于matlab自写代码)语音信号增强

(基于matlab自写代码)语音信号增强

2024-07-12 19:56| 来源: 网络整理| 查看: 265

利用双线性变换法,小波法,简谱法。 双线性变换法是使数字信号滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。 小波指的是一种能量在时域非常集中的波,小波直接把傅里叶变换的基给换了,将无限长的三角函数基换为有限长的会衰减的小波基。不仅能够获取频率,还可以定位时间。 谱相减方法是基于人的感觉特性,即语音信号的短时幅度比短时相位更容易对人的听觉系统产生影响,从而对语音短时幅度谱进行估计,适用于受加性噪声污染的语音。 对语音,人为加入加性高斯白噪声,分别采用双线性变换法、小波变换法、简谱法对其进行增强 matlab程序代码

y=audioread(’ E:\matlab\yuyin1.m4a ‘); n = length (y) ; %求出信号的长度 t=[0:1/8000:0.25]’; noise=awgn(t,5); %产生高斯白噪声 m = length (noise) ; y = resample(y,m,n); s=y+noise; %语音信号加入高斯白噪声 subplot(2,1,1);plot(s); title (‘给yuyin1加噪后的时域波形’); S=fft(s); %进行傅里叶变换 subplot(2,1,2);plot(abs(S)); title(‘给yuyin1加噪后的频域波形’)

在这里插入图片描述

Ft=8000; Fp=1000; Fs=1200; wp=2piFp/Ft; ws=2piFs/Ft; fp=2Fttan(wp/2); fs=2Fstan(wp/2); [n11,wn11]=buttord(wp,ws,1,50,‘s’); %求低通滤波器的阶数和截止频率 [b11,a11]=butter(n11,wn11,‘s’); %求S域的频率响应的参数 [num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 y=audioread(’ E:\matlab\yuyin1.m4a ‘); n = length (y) ; %求信号的长度 t=[0:1/8000:0.25]’; noise=awgn(t,5); %产生高斯白噪声 m = length (noise) ; y = resample(y,m,n); s=y+noise; %信号加入高斯白噪声 z11=filter(num11,den11,s); sound(z11); m11=fft(z11); %求滤波后的信号 subplot(2,1,1);plot(z11);title(‘滤波后yuyin1的信号波形’); subplot(2,1,2);plot(abs(m11),‘r’);title(‘滤波后yuyin1的信号的频谱’);

在这里插入图片描述

小波法 [y,fs]=audioread(’ E:\matlab\yuyin1.m4a ‘); [y,bits]=audioread(’ E:\matlab\yuyin1.m4a ‘); count=length(y); noise=0.1*randn(1,count); signal=y’; for i=1:count X(i)=signal(i)+noise(i); end wname=‘sym6’; lev=7; [c,l]=wavedec(X,lev,wname); sigma=wnoisest(c,l,1); alpha=3; thr=wbmpen(c,l,sigma,alpha) keepapp=1 xd=wdencmp(‘gbl’,c,l,wname,lev,thr,‘s’,keepapp); max_v=max(X); %对带噪信号抽样值点进行归一化处理 revoice=X/max_v; %对输出信号抽样点值进行归一化处理 max_s=max(xd); resound=xd/max_s;

Fs=fft(xd); n=1:count; figure %对比纯净信号带噪信号和输出信号 subplot(3,1,1); plot(n,signal); title(‘纯净信号’) subplot(3,1,2); plot(n,X); title(‘带噪信号’) subplot(3,1,3) plot(n,xd); title(‘输出信号’)

figure %对比纯净信号频谱带噪信号频谱和输出信号频谱 Fss=fft(signal); Fv=fft(X); subplot(3,1,1); plot(n,abs(Fss)); title(‘纯净信号频谱’) subplot(3,1,2) plot(n,abs(Fv)); title(‘带噪信号的频谱’) subplot(3,1,3) plot(n,abs(Fs)); title(‘输出信号频谱’)

在这里插入图片描述

[y,fs]=audioread(‘E:\matlab\yuyin1.m4a '); [y,bits]=audioread(‘E:\matlab\yuyin1.m4a ‘); count=length(y); noise=0.04*randn(1,count); signal=y’; for i=1:count voice(i)=signal(i)+noise(i); end

Fv=fft(voice); anglev=angle(Fv); Fn=fft(noise); power1=(abs(Fv)).^2; power2=(abs(Fn)).^2; power3=power1-power2; power4=sqrt(power3); Fs=power4.exp(janglev); u=ifft(Fs); max_v=max(voice); %对带噪信号抽样值点进行归一化处理 re_voice=voice/max_v; %对输出信号抽样点值进行归一化处理 max_s=max(u); re_sound=u/max_s;

n=1:count; figure %对比纯净信号带噪信号和输出信号 subplot(3,1,1); plot(n,signal); title(‘纯净信号’) subplot(3,1,2); plot(n,voice); title(‘带噪信号’) subplot(3,1,3) plot(n,u); title(‘输出信号’) figure %对比纯净信号频谱带噪信号频谱和输出信号频谱 Fss=fft(signal); subplot(3,1,1); plot(n,abs(Fss)); title(‘纯净信号频谱’) subplot(3,1,2) plot(n,abs(Fv)); title(‘带噪信号的频谱’) subplot(3,1,3) plot(n,abs(Fs)); title(‘输出信号频谱’)

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3