语音信号处理.docx

上传人:b****8 文档编号:10743710 上传时间:2023-02-22 格式:DOCX 页数:19 大小:196.15KB
下载 相关 举报
语音信号处理.docx_第1页
第1页 / 共19页
语音信号处理.docx_第2页
第2页 / 共19页
语音信号处理.docx_第3页
第3页 / 共19页
语音信号处理.docx_第4页
第4页 / 共19页
语音信号处理.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

语音信号处理.docx

《语音信号处理.docx》由会员分享,可在线阅读,更多相关《语音信号处理.docx(19页珍藏版)》请在冰豆网上搜索。

语音信号处理.docx

语音信号处理

实验四减谱法语音增强技术研究

一、实验目的

本实验要求掌握减谱法语音增强的原理,会利用已学的相关语音特征,构建语音特征矢量,然后自己设计减谱法语音增强程序(也可参考相关文献),能显示干净语音和加噪语音信号及处理后的结果语音信号波形,分析实验结果,写出报告。

二、实验原理

谱减法的基本原理

谱相减方法是基于人的感觉特性,即语音信号的短时幅度比短时相位更容易对人的听觉系统产生影响,从而对语音短时幅度谱进行估计,适用于受加性噪声污染的语音。

由于语音是短时平稳的,所以在短时谱幅度估计中认为它是平稳随机信号,假设

分别代表语音、噪声和带噪语音,

分别表示其短时谱。

假设噪声

是与语音

不相关的加性噪声。

于是得到信号的加性模型:

(4-1)

对功率谱有

(4-4)

原始语音的估值为

(4-5)

只要在频域用(4-5)式得到纯净语音的谱估计,就可以根据(4-6)式得到增强后的语音。

(4-6)

根据前面分析,我们可以给出谱相减算法的整个算法流程,如图4-1所示:

带噪语音啊

图4-1谱减法的算法流程

三、实验程序

1、噪声叠加到信号上的比较

%在噪声环境下语音信号的增强

%语音信号为读入的声音文件

%噪声为正态随机噪声

clear;

input=wavread('C:

\Users\Administrator\Desktop\yuyinxinhao\b1.wav');

count=length(input);

noise1=0.1*randn(1,count);

signal=input;

fori=1:

count

voice1(i)=signal(i)+noise1(i);

end

noise2=0.01*randn(1,count);

fori=1:

count

voice2(i)=signal(i)+noise2(i);

end

noise3=randn(1,count);

signal=input;

fori=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、利用减谱法的基本原理给语音信号降噪

噪声为0.1*randn(1,coun)纯净信号为输入信号

%在噪声环境下语音信号的增强

%语音信号为读入的声音文件

%噪声为正态随机噪声

clear;

input=wavread('C:

\Users\Administrator\Desktop\yuyinxinhao\b1.wav');

count=length(input);

noise=1*randn(1,count);

signal=input';

fori=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;

%纯净语音信号频谱

Fss=fft(signal);

figure%对比纯净语音信号和输出信号

subplot(2,1,1)

plot(n,signal);

title('纯净信号')

subplot(2,1,2)

plot(n,sound);

title('输出信号')

figure%对比纯净语音信号频谱和输出语音信号频谱

subplot(2,1,1)

plot(n,abs(Fss));

title('纯净信号频谱')

subplot(2,1,2)

plot(n,abs(Fs));

title('输出信号频谱')

max_v=max(voice);%对带噪信号抽样值点进行归一化处理

re_voice=voice/max_v;

%对输出信号抽样点值进行归一化处理

max_s=max(sound);

re_sound=sound/max_s;

%读出带噪语音信号,存为'1001.wav'

wavwrite(re_voice,5500,16,'1001');

%读出处理后语音信号,存为'1002.wav'

wavwrite(re_sound,5500,16,'1002')

3、利用改进的减谱法给语音信号降噪

噪声为0.1*randn(1,coun)纯净信号为输入信号

%在噪声环境下语音信号的增强

%语音信号为读入的声音文件

%噪声为正态随机噪声

clear;

input=wavread('C:

\Users\Administrator\Desktop\yuyinxinhao\b1.wav');

count=length(input);

noise=0.1*randn(1,count);

signal=input';

fori=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;

fori=1:

count

if(power1(i)>=3*power2(i))

power3(i)=power1(i)-3*power2(i);

else

power3(i)=0.01*power2(i);

end

end

power4=sqrt(power3);

Fs=power4.*exp(j*anglev);

sound=ifft(Fs);

n=1:

count;

%纯净语音信号频谱

Fss=fft(signal);

figure%对比纯净语音信号和输出信号

subplot(2,1,1)

plot(n,signal);

title('纯净信号')

subplot(2,1,2)

plot(n,sound);

title('输出信号')

figure%对比纯净语音信号频谱和输出语音信号频谱

subplot(2,1,1)

plot(n,abs(Fss));

title('纯净信号频谱')

subplot(2,1,2)

plot(n,abs(Fs));

title('输出信号频谱')

四、实验结果

1、噪声叠加到信号上的比较

(1)噪声为0.1*randn(1,count)

(2)噪声为0.01*randn(1,count)

(3)噪声为randn(1,count)

2、利用减谱法的基本原理给语音信号降噪

噪声为0.1*randn(1,coun)纯净信号为输入信号

3、利用改进的减谱法给语音信号降噪

噪声为0.1*randn(1,coun)纯净信号为输入信号

(1)参数取a=3,b=0.01

(2)参数取a=10,b=0.01

(3)参数取a=0.8,b=0.01

(4)参数取a=3,b=0.0001

(5)参数取a=3,b=0.1

五、实验分析

1、噪声叠加到信号上时,噪声会对信号产生较大影响,噪声加强会使信号被噪声淹没;噪声减弱,对信号的影响减小;

2、用减谱法的基本原理対带噪信号进行处理后,信号质量明显提升,从而得到较纯净的语音信号;

3、用改进的减谱法対带噪信号进行处理后,信号质量更好,语音信号更纯净。

合理选择参数a、b很重要,由于实验所用的是辅音,去a=3,b=0.01左右较合适。

a太大或太小,不能取得较好的降噪效果,b太小,不能抑制纯音噪声,b太大会造成噪声,必须b<<1。

六、实验总结

通过本次实验,我知道了:

减谱法作为语音增强技术的有效方法之一,能够有效地降低包含在语音中的加性噪声,但是由于减谱法针对的是宽带噪声较为传统和有效的方法,它是在假定加性噪声与短时平稳的语音信号相互独立的条件下,从带噪语音的功率谱中减去噪声功率谱,从而得到较为纯净的语音频谱,可见存在一定的局限性。

如何寻求一种较通用的语音增强方法有待进一步探讨。

看似简单的问题,自己动手亲自写一下程序,才知道自己的不足,才会真正得到提高,为将来更深层次的学习打下良好的基础。

 

(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1