基本谱减法降噪

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

  • 设计目的和设计要求

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

具体设计要求为通过读入“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日
    浏览(48)
  • 语音降噪系统 FPGA 实现及算法详解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月11日
    浏览(40)
  • 等级保护基本要求

    一:等级保护基本概念: 信息系统安全等级保护是指对信息安全实行等级化保护和等级化管理 根据信息系统应用业务重要程度及其实际安全需求,实行分级、分类、分阶段实施保护,保障信息安全和系统安全正常运行,维护国家利益、公共利益和社会稳定。 等级保护的核心

    2024年02月12日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包