语音信号处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音信号处理
The Standardization Office was revised on the afternoon of December 13, 2020
实验四 减谱法语音增强技术研究
一、实验目的
本实验要求掌握减谱法语音增强的原理,会利用已学的相关语音特征,构建语音特征矢量,然后自己设计减谱法语音增强程序(也可参考相关文献),能显示干净语音和加噪语音信号及处理后的结果语音信号波形,分析实验结果,写出报告。
二、实验原理
谱减法的基本原理
谱相减方法是基于人的感觉特性,即语音信号的短时幅度比短时相位更容易对人的听觉系统产生影响,从而对语音短时幅度谱进行估计,适用于受加性噪声污染的语音。
由于语音是短时平稳的,所以在短时谱幅度估计中认为它是平稳随机信号,假设)(m s 、)(m n 和)(m y 分别代表语音、噪声和带噪语音,)(ωs S 、)(ωn S 和)(ωy S 分别表示其短时谱。假设噪声)(m n 是与语音)(m s 不相关的加性噪声。于是得到信号的加性模型:)()()(m n m s m y += (4-1)
对功率谱有 )()()()(|)(||)(||)(|**222ωωωωωωωw w w w w w w N S N S N S Y +++= (4-4) 原始语音的估值为 ]|)([||)(||)(|222ωωωw w w N E Y S -=∧ (4-5)
只要在频域用(4-5)式得到纯净语音的谱估计,就可以根据(4-6)式得到增强后的语音。
[])()(ˆ)(ˆωϕωj w e s IFFT m s =
(4-6)
根据前面分析,我们可以给出谱相减算法的整个算法流程,如图4-1所示:
图4-1 谱减法的算法流程
三、实验程序
1、噪声叠加到信号上的比较
%在噪声环境下语音信号的增强
%语音信号为读入的声音文件
%噪声为正态随机噪声
clear;
input=wavread('C:\Users\Administrator\Desktop\yuyinxinhao\'); count=length(input);
noise1=*randn(1,count);
signal=input;
for i=1:count
voice1(i)=signal(i)+noise1(i);
end
noise2=*randn(1,count);
for i=1:count
voice2(i)=signal(i)+noise2(i);
end
noise3=randn(1,count);
signal=input;
for i=1:count
voice3(i)=signal(i)+noise3(i);
end
n=1:count;
figure %对比纯净语音信号,噪音信号和带噪语音信号
subplot(3,1,1);
plot(n,signal);
title('纯净信号')
subplot(3,1,2);
plot(n,noise1);
title('噪音信号')
subplot(3,1,3);
plot(n,voice1);
title('带噪信号')
figure %对比纯净语音信号频谱,噪音信号和带噪信号频谱Fss=fft(signal);
subplot(3,1,1);
plot(n,abs(Fss));
title('纯净信号频谱')
Fss1=fft(noise1);
subplot(3,1,2);
plot(n,abs(Fss1));
title('噪音信号频谱')
Fv1=fft(voice1);
subplot(3,1,3)
plot(n,abs(Fv1));
title('带噪信号的频谱')
figure %对比纯净语音信号,噪音信号和带噪语音信号subplot(3,1,1);
plot(n,signal);
title('纯净信号')
subplot(3,1,2);
plot(n,noise2);
title('噪音信号')
subplot(3,1,3);
plot(n,voice2);
title('带噪信号')
figure %对比纯净语音信号频谱,噪音信号和带噪信号频谱Fss=fft(signal);
subplot(3,1,1);
plot(n,abs(Fss));
title('纯净信号频谱')
Fss2=fft(noise2);
subplot(3,1,2);
plot(n,abs(Fss2));
title('噪音信号频谱')
Fv2=fft(voice2);
subplot(3,1,3)
plot(n,abs(Fv2));
title('带噪信号的频谱')
figure %对比纯净语音信号,噪音信号和带噪语音信号subplot(3,1,1);
plot(n,signal);
title('纯净信号')
subplot(3,1,2);
plot(n,noise3);
title('噪音信号')
subplot(3,1,3);
plot(n,voice3);
title('带噪信号')
figure %对比纯净语音信号频谱,噪音信号和带噪信号频谱
Fss=fft(signal);
subplot(3,1,1);
plot(n,abs(Fss));
title('纯净信号频谱')
Fss3=fft(noise3);
subplot(3,1,2);
plot(n,abs(Fss3));
title('噪音信号频谱')
Fv3=fft(voice3);
subplot(3,1,3)
plot(n,abs(Fv3));
title('带噪信号的频谱')
2、利用减谱法的基本原理给语音信号降噪
噪声为*randn(1,coun) 纯净信号为输入信号
%在噪声环境下语音信号的增强
%语音信号为读入的声音文件
%噪声为正态随机噪声
clear;
input=wavread('C:\Users\Administrator\Desktop\yuyinxinhao\'); count=length(input);
noise=1*randn(1,count);
signal=input';
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(j*anglev);
sound=ifft(Fs);
n=1:count;