基本谱减法降噪

这篇具有很好参考价值的文章主要介绍了基本谱减法降噪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 设计目的和设计要求

在接收到的语音信号大多含有噪声,并且噪声有大有小。由于在处理语音信号(例如语音识别,语音编码)之前往往要对带噪的语音进行减噪。这实质上就是语音信号处理中的语音增强。本组在此选用基本谱减法进行语音降噪。一般来说,随着信噪比的减小,减噪方法处理的效果也随之变差,而且往往会使语音信号丢字或者波形失真。基本谱减法虽然简单易行,有一定效果,但要在信噪比很低的情况下进行降噪,还需寻找更有效的语音增强方法。

具体设计要求为通过读入“bluessky.wav”数据(内容为:蓝天,白云,碧绿的大海),叠加上5dB的白噪声,通过调用谱减法函数simplesubspec对带噪语音进行减噪。

  • 原理、结构和功能

设语音信号的时间序列为x(n),加窗分帧处理后得到第i。帧语音信号为xi(m),帧长为 N。任何一帧语音信号xi(m)做DFT后为

基本谱减法降噪

 

k=0,1,2...,N-1.

要对Xi求出每个分量的幅值和相角,幅值为|Xi(k)|,它的相角为:

基本谱减法降噪

 

在减谱中要把这两组数都给保存。

已知前导无话段(噪声段)时长为IS,对应的帧数为NIS,可以求出该噪声段的平均能量值为

基本谱减法降噪

 

谱减算法为

基本谱减法降噪

 

式中,a和b是两个常数,a称为过减因子;b称为增益补偿因子。

求出了谱减后幅值为丨Xi(k)丨,结合了保存的X’angle(k),就能经快速傅里叶逆变换(In-Werse Fast Fourier Tramsform,IFFT)求出谱减后的语音序列xi(m)。属中利用了谱最佳信号对相位不灵敏的特性,把谱减前的相位角信息直接用到谱减后的信号中。

基本谱减法的原理如图所示:

基本谱减法降噪

 

   

根据原理图可把减谱法的计算编写成一个函数,方便使用。

名称:simplesubspec

功能:用基本谱减法对带噪语音进行减噪

调用格式:output = simplesubspec(signal,wlen,inc,NIS,a,b)

说明:输入参数 signal 是带噪语音序列;wlen是帧长;inc是帧移;NIS是前导无话段的帧数;a是过减因子;b为增益补偿因子。输出参数output是谱减法减噪后的语音序列。

程序在Matlab章节具体说明。

通过读入“bluessky.wav”数据(内容为:蓝天,白云,碧绿的大海),叠加上5dB的白噪声,通过调用谱减法函数simplesubspec对带噪语音进行减噪。

  • MATLAB程序(包含注释)

simplesubspec函数

function output=simplesubspec(signal,wlen,inc,NIS,a,b)

wnd=hamming(wlen);                   % 设置窗函数

N=length(signal);                       % 计算信号长度

y=enframe(signal,wnd,inc)';              % 分帧

fn=size(y,2);                           % 求帧数

y_fft = fft(y);                           %  FFT

y_a = abs(y_fft);                        % 求取幅值

y_phase=angle(y_fft);                    % 求取相位角

y_a2=y_a.^2;                           %  求能量

Nt=mean(y_a2(:,1:NIS),2);            

 % 计算噪声段平均能量

nl2=wlen/2+1;                     % 求出正频率的区间

for i = 1:fn;                           % 进行谱减

    for k= 1:nl2

        if y_a2(k,i)>a*Nt(k)

            temp(k) = y_a2(k,i) - a*Nt(k);

        else

            temp(k)=b*y_a2(k,i);

        end

        U(k)=sqrt(temp(k));           

  % 把能量开方得幅值

    end

    X(:,i)=U;

end;

output=OverlapAdd2(X,y_phase(1:nl2,:),wlen,inc);   

% 合成谱减后的语音

Nout=length(output);                    

% 把谱减后的数据长度补足与输入等长

if Nout>N

    output=output(1:N);

elseif Nout<N

    output=[output; zeros(N-Nout,1)];

end

output=output/max(abs(output));         % 幅值归一

说明:程序中参数a和b按输入参数带入,可根据语音的具体情况进行改变。程序中调用到的函数OverlapAdd2是重叠相加法。

主函数

%

% pr7_2_1   

clear all; clc; close all;

filedir=[];                             % 指定文件路径

filename='bluesky1.wav';                % 指定文件名

fle=[filedir filename]                 

 % 构成路径和文件名的字符串

[xx,fs]=wavread(fle);                   % 读入数据文件

xx=xx-mean(xx);                         % 消除直流分量

x=xx/max(abs(xx));                      % 幅值归一化

IS=0.25;                               

 % 设置前导无话段长度

wlen=200;                               % 设置帧长为25ms

inc=80;                                 % 设置帧移为10ms

SNR=5;                                  % 设置信噪比SNR

N=length(x);                            % 信号长度

time=(0:N-1)/fs;                        % 设置时间

signal=Gnoisegen(x,SNR);                % 叠加噪声

snr1=SNR_singlech(x,signal);            % 计算初始信噪比

overlap=wlen-inc;                       % 求重叠区长度

NIS=fix((IS*fs-wlen)/inc +1);          

 % 求前导无话段帧数

a=4; b=0.001;                           % 设置参数a和b

output=simplesubspec(signal,wlen,inc,NIS,a,b);% 谱减

snr2=SNR_singlech(x,output);           

 % 计算谱减后的信噪比

snr=snr2-snr1;

fprintf('snr1=%5.4f   snr2=%5.4f    snr=%5.4f\n',snr1,snr2,snr);

wavplay(signal,fs);

pause(1)

wavplay(output,fs);

% 作图

subplot 311; plot(time,x,'k'); grid; axis tight;

title('纯语音波形'); ylabel('幅值')

subplot 312; plot(time,signal,'k'); grid; axis tight;

title(['带噪语音 信噪比=' num2str(SNR) 'dB']);

  ylabel('幅值')

subplot 313; plot(time,output,'k');grid;%hold on;

title('谱减后波形'); ylabel('幅值'); xlabel('时间/s');

     

  • 程序运行结果和解释说

纯语音波形

基本谱减法降噪

 

带噪语音 信噪比=5dB

基本谱减法降噪

 

谱减后波形

基本谱减法降噪

 

运行程序后得到消噪后的波形如上图所示。

调用Gnoisegen函数产生带躁语音,调用SNR_singlech函数计算信噪比。程序中调用函数simplesubspec,其中a和b参数分别为a=4,b=0.001

计算出信噪比的变化:初始信噪比为5 dB,谱减后的信噪比为11.3 dB,信噪比增加了6.3 dB。Snr1=5.0000  snr2=11.3051  snr=6.3051

  • 最终结果和结论

噪声是完全随机的,有可能在某个时段某条谱线的谱值会大于a×D(k),相滅后并没有把噪声完全消除,而把它的峰值保留下来了,称为噪声残留,在谱减后的合成语音中就造成了“音乐噪声”。

消噪后的语音有明显的“音乐噪声”,增加过减因子a的数值,有时能减少“音乐噪声”,但过大时也会使波形失真,因此同样要选用一个折中的值。又由于在语音信号上叠加随机噪声,每一次叠加上的随机噪声都是不相同的,所以计算减噪后信噪比的结果snr2都不完全一样,会有一些偏差。文章来源地址https://www.toymoban.com/news/detail-460245.html

到了这里,关于基本谱减法降噪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web系统设计安全性基本要求

    身份鉴别 独立的登录模块:为社会用户和平台运营管理用户提供独立的登录地址、登录界面和身份认证模块,通过防火墙等设备严格限制能够登录WEB应用的用户地址、身份; 双因素认证: 平台运营管理人员:采用用户名/口令+数字证书方式进行身份鉴别; 商户:采用用户名

    2024年01月24日
    浏览(51)
  • 语音降噪系统 FPGA 实现及算法详解

    语音降噪系统 FPGA 实现及算法详解 在日常的语音通信中,由于外部噪声等干扰因素的存在,会使得语音质量受到影响,甚至无法正常进行通信。为了解决这个问题,我们可以利用 SOPC 技术实现语音降噪系统,并在其中应用相应的算法。 在本文中,我们将探讨如何基于 FPGA 平

    2024年01月20日
    浏览(75)
  • MATLAB环境下基于深度学习的语音降噪方法

    之前简单的利用深层自编码器对语音信号进行降噪 基于自编码器的语音信号降噪 - 哥廷根数学学派的文章 - 知乎 基于自编码器的语音信号降噪 - 知乎 本篇讲一些稍微复杂的基于深度学习的语音降噪方法,并比较了应用于同一任务的两种的网络:全连接层网络和卷积网络。

    2024年02月04日
    浏览(45)
  • 嵌入式深度学习语音分离降噪C语言实现

        加我微信hezkz17进数字音频系统研究开发交流答疑 一 深度学习在语音分离中的具体应用? 深度学习在语音分离中有多种具体应用。其中最常见的是使用深度神经网络(DNN)或卷积神经网络(CNN)进行语音分离任务。 1 一种应用是源分离,它旨在从混合语音信号中分离出单

    2024年02月13日
    浏览(73)
  • 音频数据处理基本知识学习——降噪滤波基础知识

    滤波是一种信号处理方法,它可以通过消除或减弱信号中的某些频率分量,来实现信号的去噪、去除干扰、增强某些频率成分等目的。常见的滤波方法包括低通滤波、高通滤波、带通滤波等。 降噪是一种信号处理方法,它可以通过消除或减弱信号中的噪声成分,来提高信号的

    2024年02月15日
    浏览(52)
  • 科普向丨语音芯片烧录工艺的要求

    语音芯片烧录工艺要求烧录精度、速度、内存容量、电源稳定性、兼容性和数据安全性。这些要素需优化和控制以保证生产高效、稳定、安全并烧录出高质量的语音芯片。不同厂家生产的语音芯片在烧录工艺上存在差异,需相应设计和研发以实现兼容。 一、烧录精度 语音芯

    2024年02月07日
    浏览(33)
  • 设计模式的目的

    编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好的: 代码重用性 (即:相同功能的代码,不用多次编写)(代码重用性(即:相同功能的代码,不用多次编写) 可读性 (即:编程

    2024年02月19日
    浏览(39)
  • java设计模式-目的及思想

    某类问题的通用解决方案; 代码重用性 相同功能的代码,不用多次编写 可读性 编程规范,便于其他程序员阅读和理解 可扩展性 新增功能时,非常的方便 可靠性 新增功能时,对原功能无影响 高内聚、低耦合 使程序高内聚、低耦合 找出应用中可能变化之处,把他们独立出

    2024年02月08日
    浏览(44)
  • RDD基础概念特点以及设计RDD的目的

    Spark的RDD(弹性分布式数据集)是Spark提供的一种用于分布式计算的抽象数据类型。它是一个由分区数据组成的不可变分布式集合,可以在集群中进行并行操作。RDD具有以下几个重要特点: 可以容错:RDD可以自动对数据进行分区和备份,从而保证在集群中的任意节点出现故障

    2024年02月11日
    浏览(41)
  • 等保三级认证基本要求

    一、什么是等保测评? 企业单位委托经公安部认证的具有资质的测评机构,按照管理规范和技术标准,对相应的测评对象(信息系统)的状况进行测评。   1、安全技术测评:包括物理安全、网络安全、主机系统安全、应用安全和数据安全等五个层面上的安全控制测评。 2、

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包