语音信号处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档