精华内容
下载资源
问答
  • 使用幅度平方频谱的新型频域估计器进行快速分布式多通道语音增强
  • 针对冲击噪声环境下的语音增强问题提出了一种不依赖任何语音信号模型、适用于冲击噪声的基于信号子空间分解的多通道语音增强算法。该算法把阵列信号处理中的协变异应用到语音增强中,对带噪语音信号的协变异系数矩阵...
  • #资源达人分享计划#
  • matlab声音信号相位差代码语音分离和增强 说明 该程序包含几种流行的方法及其变体,用于语音分离和增强。 该程序的目的是快速实现,测试和比较方法。 麦克风阵列的默认模型是6 + 1(外围+中央)圆形阵列。 测试数据...
  • 论文一:基于注意机制的神经网络单通道语音增强方法 核心工作:提出基于注意机制的单通道语音增强方法,关注音频流的重要语音成分并适当降低对噪声、干扰的注意力。 注意力机制(attention-based): 1. 注意力机制...

    论文一:基于注意机制的神经网络单通道语音增强方法
    核心工作:提出基于注意机制的单通道语音增强方法,关注音频流的重要语音成分并适当降低对噪声、干扰的注意力。
    注意力机制(attention-based):
    1. 注意力机制需要决定整段输入的哪个部分需要更加关注;
    2. 从关键的部分进行特征提取,得到重要的信息。
    3. RNN模型在预测增强帧时隐式地学习过去输入特征的权重,而注意机制计算过去帧与要增强的当前帧之间的相关性,并且明确地给过去的帧赋予权重;
    算法分类:
    1. 统计算法:谱减法、维纳滤波、最小均方差对数谱法等
    2. 数据驱动算法:非负矩阵分解、神经网络
    神经网络结构:分为编码器(堆叠和扩展)、注意机制、生成器。
    在这里插入图片描述
    实验结果:
    1. 基于注意力机制的LSTM始终优于最佳修正对数谱(OM-LSA)和LSTM,堆叠编码器略好于扩展编码器
    2. 因果局部注意力模型具有比因果动态注意力模型更好的性能或甚至更好的性能,证明语音增强不需要考虑太长的历史信息

    论文二:基于BLSTM的语音增强的师生学习
    核心工作:本文提出了一种单通道语音增强的学生教师学习模式。将多通道增强后的波束信号作为输入输入到教师网络中,获得软掩码;再将含有软掩模目标的附加交叉熵损失项与初始损失项相结合,训练单通道输入的学生网络通过波束形成模拟多通道输入的软掩模。
    在这里插入图片描述
    学生教师模型:
    1. 教师模型:由于波束形成的信号已经被很好地去噪,因此上述教师网络提供了一个高质量的语音掩码,然而,根据一个给定的纯净语音信号去评估语音掩码太繁琐了,并且训练网络还不能很好适应复杂环境。
    2. 学生模型:学生模型用损失函数进行训练,预计在单通道框架内学习多通道语音增强的能力。
    3. 学生模型处理真实数据:只需要对真实数据进行多通道语音增强,就可以得到最终的损失函数:

    实验设置:
    1. 基本ASR系统、BLSTM、教师模型的比较实验
    2. 不同参数 λ 的学生模型比较试验
    3. 几种模型的四大指标比较
    实验结果:
    1. 教师模型的性能优于原BLSTM掩码,但均降低了非增强噪声语音的性能
    2. Epoch=3的效果更好,可能基于发展数据的时序选择似乎比基于增强驱动的时序选择更好
    3. 教师模型获得的软目标比监督目标对性能的影响更大
    4. 用最好的学生模型对数据增强时效果更好
    5. 教师学生模型在四个指标中都效果良好.

    展开全文
  • 基于F范数的信号子空间维度估计的多通道语音增强算法.
  • 通道语音增强

    2020-10-19 18:05:36
    通道语音增强技术 单通道语音增强算法主要可以分为两大类: 基于数字信号处理的传统增强算法和基于数据驱动的学习类增强算法。 一、传统语音增强 基本是基于时域分析或频域分析。频域主要是基于增益函数设计,但...

    单通道语音增强技术

    概念:语音增强是指当语音信号被各种各样的噪声干扰、甚至淹没后,从噪声背景中提取有用的语音信号,抑制、降低噪声干扰的技术。一句话,从含噪语音中提取尽可能纯净的原始语音。

    单通道语音增强算法主要可以分为两大类:
    基于数字信号处理的传统增强算法和基于数据驱动的学习类增强算法。

    一、传统语音增强
    基本是基于时域分析或频域分析。频域主要是基于增益函数设计,但不同算法在计算增壹函数时采用的策略不同,主要分为三类:谱减法,基于统计模型,子空间算法。
    在这里插入图片描述1.谱减法(基于信号处理)
    1970年发展起来,比较老。该类算法需要己知较为精确的噪声谱,但这并不容易被估计获取,尤其是对于非平稳噪声,所以往往需要VAD算法的配合。谱减法仍不可避免地会引入一些“音乐噪声”造成语音失真,并且在非平稳噪声存在的情况下增强效果会显著下降。

    2.基于统计模型(统计估计理论)
    将语音增强问题定义为基于一些最优准则和统计假设的统计估计问题。在众多的最优准则之中MMSE是较为常用的准则,基于MMSE准则发展而来的估计器有两大类:一类是线性估计器,如维纳滤波器;一类是非线性估计器,比较经典的是MMSE-STSA算法和MMSE-LSA算法。

    3。子空间算法(基于线性代数)
    基本的假设是尤维的干净语音信号并不会张成一个完整的L维的欧式空间,相反可以压缩成一个低秩的I维空间,I<L。并假设语音信号是平稳随机的。

    传统方法缺点:
    1.都需要基于一定的假设,如噪声具有一定的平稳性,干净语音和噪声不相关,语音和噪声的STFT变换系数在时频域上相互独立等等。(虽简化了求解模型,但丢失了一些真实特性,限制了算法性能上限)
    2.需要一些先验信息。

    因此传统算法在非平稳噪声,低信噪比等复杂情况下性能显著降低。

    二、基于数据驱动的学习类增强算法
    将问题看作有监督学习问题。将语音增强的估计器建模成一个带参数的数学模型,利用已有的训练数据求解定义的优化问题来得到模型的参数。
    目前有很多模型,如复高斯混合模型GMMs,SVM,稀疏表示模型等。

    1.稀疏表示模型
    基于压缩表示理论框架发展而来,用语音信号的稀疏性将信号近似表示为少数字典原子的线性组合,因此在稀疏表示前还需要通过字典学习来学习包含信号特性的字典。

    缺点:
    1.这类基于生成模型的增强算法的前提假设是认为信号可以近似表示为一些字典原子或基向量的加权线性组合,这种线性的假设始终限制着这类增强算法的性能。
    2.要依赖于说话人和噪声种类,也就是说所训练的字典与说话人和噪声种类属于一一对应关系,一旦出现不匹配情况则会造成降噪效果变差,引起较大的语音失真。

    2.基于深度学习
    基于时频掩蔽,基于特征映射的

    展开全文
  • 摘要 环境噪声会影响语音质量,严重的情况下语音将完全淹没到噪声中,无法分辨。语音增强就是从带噪语音信号中提取尽...针对这些问题,本文在总结传统单通道语音增强方法的基础上,进一步研究和总结基于机器学习的语音增

    摘要
    环境噪声会影响语音质量,严重的情况下语音将完全淹没到噪声中,无法分辨。语音增强就是从带噪语音信号中提取尽可能纯净的原始语音。但是由于环境的多样化,噪声的不稳定性和随机性,并且基本不可能得到所有样本数据,在实际应用中,这些方法很难取得较好的效果。另外,传统的增强方法会对语音信号进行一些分布性的假设,不准确的假设会使增强后的语音与纯净语音信号差别比较大,语音的失真度相对比较高,结果就导致语音的可懂度不高,质量下降。针对这些问题,本文在总结传统单通道语音增强方法的基础上,进一步研究和总结基于机器学习的语音增强方法,特别是基于深度神经网络和生成对抗神经网络的方法。本文的主要工作包括以下两个方面:
    (1)本文对在单通道语音增强领域涉及的技术背景、研究意义等进行了阐述,对在实验与结果评估过程中所涉及到的常用数据集、常见特征、学习目标与评估指标等进行了整理与介绍,以及对传统的与基于机器学习的单声道语音增强方法的已有研究工作进行了回顾和梳理分类,并简要介绍了这些方法的原理和研究思路。
    (2)本文对对传统的与基于机器学习的单声道语音增强方法进行复现,并对得出的实验结果进行了综合比较,分析了各种方法的优缺点。在实际应用时,要根据具体的噪声情况和特定环境,选用不同的语音增强方法或语音增强方法的组合,来达到最好的语音增强的效果。最后对目前单声道语音增强仍然面临的主要问题与挑战进行了总结以及进一步的展望。

    关键词: 单通道语音增强,机器学习,深度神经网络,生成对抗神经网络

    目 录
    第一章 绪论 6
    1.1 语音增强技术定义 6
    1.2 语音增强技术的研究背景和意义 6
    1.3 单通道语音增强算法的分类 7
    1.4 单声道语音增强技术的研究历史与现状 8
    1.4.1 传统单声道语音增强技术 8
    1.4.2 基于机器学习的单声道语音增强技术 10
    1.5 本文主要研究内容与拟解决的问题 12
    1.6 论文组织结构 13
    第二章 单通道语音增强的基本理论 14
    2.1 语音信号及噪声的特点 14
    2.1.1 语音信号的特征 14
    2.1.2 噪声的特性及其对语音信号的干扰原理 15
    2.1.3 语音的听觉机理和感知特性 15
    2.2 语音增强评价指标 16
    2.2.1 语音质量的感知评价方法PESQ 18
    2.2.2 分段信噪比segSNR 18
    2.2.3 短时客观可懂度STOI 19
    2.2.4 对数似然比测度LLR 19
    2.3 数据集和实验环境 20
    3.1.1 实验数据集 20
    3.1.2 实验环境 22
    第三章 传统单声道语音增强技术 23
    3.1 传统单声道语音增强技术中噪声功率谱的估计算法 23
    3.1.1 基于语音活动性检测的噪声估计算法 23
    3.1.2 最小统计递归平均的噪声估计算法 25
    3.1.3 最小值控制递归平均算法 27
    3.2 谱减法 28
    3.1.4 原理 28
    3.1.5 谱减法建立的假设 30
    3.1.6 谱减法存在的音乐噪声 30
    3.1.7 算法实施流程 31
    3.1.8 实验结果及讨论 32
    3.3 维纳滤波法 33
    3.2.1 原理 33
    3.2.2 算法实施流程 35
    3.2.3 实验结果及讨论 35
    3.4 最小均方误差估计法 37
    3.3.1 原理 37
    3.3.2 算法实施流程 38
    3.3.3 实验结果及讨论 39
    第四章 基于机器学习的单声道语音增强技术 41
    4.1 基于非负矩阵分解的语音增强算法 41
    4.1.1 原理 41
    4.1.2 实验结果及讨论 42
    4.2 基于卷积神经网络的单通道语音增强 44
    4.2.1 卷积神经网络 44
    4.2.2 基于卷积神经网络的单通道语音增强实现方法 46
    4.2.3 实验结果及讨论 48
    4.3 基于具有梯度惩罚的相对论生成对抗网络的语音增强 50
    4.3.1 生成对抗网络 50
    4.3.2 基于具有梯度惩罚的相对论生成对抗网络的语音增强实现方法 52
    4.3.3 实验结果及讨论 53
    第五章 实验结果与综合分析 56
    5.1 不同噪声、不同信噪比下各方法的效果与分析 56
    5.2 综合分析 59
    第六章 总结与展望 60
    6.1 研究与工作总结 60
    6.2 数字语音处理课程总结 60
    6.3 进一步展望 60
    参考文献 61

    传统单通道语音增强算法:

    1. 谱减法实现结果
      谱减法实验中,采用来自TIMIT语料库的纯音信号,女声,时长0.027s,采样率为 8kHz,采样精度16bits。噪声信号为来自Niosex92的白噪声。合成的带噪语音的初始信噪比分别为0dB、5dB、10dB。帧长为256,帧间重叠为50%。此小节为在时域上对谱减法时域波形、语谱图去噪效果的单独讨论,客观评价结果及综合方法对比结果于本文第五章进行讨论。
      在这里插入图片描述

    2. 维纳滤波法实现结构
      在这里插入图片描述

    3. 最小均方误差估计法

    基于机器学习的单声道语音增强技术
    在这里插入图片描述

    1. 非负矩阵结果:
      在这里插入图片描述

    2. 基于卷积神经网络的单通道语音增强

    3. 基于具有梯度惩罚的相对论生成对抗网络的语音增强

    在这里插入图片描述

    在这里插入图片描述

    综合分析

    5.1 不同噪声、不同信噪比下各方法的效果与分析
    在本小节中将选择PESQ、segSNR、STOI和LLR评估语音增强算法的性能。
    如表5-1所示,对平稳高斯白噪声进行评估。在所有PESQ等性能指标中,SERGAN均优于其他基准算法。此外,大部分情况下,CNN是性能第二好的方法,说明具有编解码器架构的深度网络CNN优于浅层的NMF。与CNN和SERGAN相比,NMF的性能指标提升在低 SNR条件下比高SNR的提升更大,该提升是指经过模型处理后的语音指标与原始带噪语音指标之差。例如,在-0dB的SNR时,PESQ,segSNR,STOI,LLR 的改进分别为 0.45、0.55、-0.23、,而在10dB SNR 时,改进分别为 0.25、0.03、0.37。这表明 RNSE 更加适用于低 SNR 下的语音增强。
    在这里插入图片描述
    在这里插入图片描述
    实现代码(如基于具有梯度惩罚的相对论生成对抗网络的语音增强)
    model.py

    生成器代码:

    def generator(opts):
        kwidth=opts['filterlength']
        strides= opts['strides']
        pool = strides
        g_enc_numkernels = opts ['g_enc_numkernels']
        g_dec_numkernels = opts ['g_dec_numkernels']
        window_length = opts['window_length']
        featdim = opts ['featdim']
        batch_size = opts['batch_size']
                
        use_bias = True
        skips = []
        #kernel_init = keras.initializers.TruncatedNormal(stddev=0.02)
        kernel_init = 'glorot_uniform'
     
        wav_in = Input(shape=(window_length, featdim)) 
        enc_out = wav_in
    
        # Defining the Encoder
        for layernum, numkernels in enumerate(g_enc_numkernels):
            enc_out = Conv1D(numkernels, kwidth, strides=pool,
                                   kernel_initializer=kernel_init, padding="same", 
                                       use_bias=use_bias)(enc_out)
          
            # for skip connections
            if layernum < len(g_enc_numkernels) - 1:
                skips.append(enc_out)
            if opts['applyprelu']:
                enc_out = PReLU(alpha_initializer='zero', weights=None)(enc_out)
            else:
                enc_out = LeakyReLU(alpha=opts['leakyrelualpha'])(enc_out)
    
        num_enc_layers = len(g_enc_numkernels)
        z_rows = int(window_length/ (pool ** num_enc_layers))
        z_cols = g_enc_numkernels[-1]
    
        # Adding the intermediate noise layer
        if not opts['z_off']:
            z = Input(shape=(z_rows,z_cols), name='noise_input')
            dec_out = keras.layers.concatenate([enc_out, z])
        else :
            dec_out = enc_out
    
        # Now to the decoder part
        nrows = z_rows
        ncols = dec_out.get_shape().as_list()[-1]
        for declayernum, decnumkernels in enumerate(g_dec_numkernels):
            # reshape for the conv2dtranspose layer as it needs 3D input
            indim = dec_out.get_shape().as_list()
            newshape = (indim[1], 1 , indim[2])
            dec_out = Reshape(newshape)(dec_out)
            # add the conv2dtranspose layer
            dec_out = Conv2DTranspose(decnumkernels, [kwidth,1], strides=[strides, 1],
                         kernel_initializer=kernel_init, padding="same", use_bias=use_bias)(dec_out)
            # Reshape back to 2D
            nrows *= strides # number of rows get multiplied by strides
            ncols = decnumkernels # number of cols is the same as number of kernels
            dec_out.set_shape([None, nrows, 1 , ncols]) # for correcting shape issue with conv2dtranspose
            newshape = (nrows, ncols)
            if declayernum == len(g_dec_numkernels) -1:
                dec_out = Reshape(newshape, name="g_output")(dec_out) # name the final output as  g_output
            else:
                dec_out = Reshape(newshape)(dec_out)
    
           # add skip and prelu until the second-last layer
            if declayernum < len(g_dec_numkernels) -1 :
                if opts['applyprelu']:
                    dec_out = PReLU(alpha_initializer='zero', weights=None)(dec_out)
                else:
                    dec_out = LeakyReLU(alpha=opts['leakyrelualpha'])(dec_out)
                # Now add the skip connection
                skip_ = skips[-(declayernum + 1)]
                dec_out = keras.layers.concatenate([dec_out, skip_])
     
        # Create the model graph
        if opts ['z_off']:
            G = Model(inputs=[wav_in], outputs=[dec_out])
        else :
            G = Model(inputs=[wav_in, z], outputs=[dec_out])
         
        if opts ['show_summary'] :
            G.summary()
    
        return G
    

    判别器代码:

    def discriminator(opts):
        print('*** Building Discriminator ***')
        window_length = opts['window_length']
        featdim = opts ['featdim']
        batch_size = opts['batch_size']
        d_fmaps = opts ['d_fmaps']
        strides = opts['strides']
        activation = opts['d_activation']
        kwidth = opts['filterlength']
            
        wav_in_clean = Input(shape=(window_length, featdim), name='disc_inputclean')
        wav_in_noisy = Input(shape=(window_length, featdim), name='disc_inputnoisy')
    
        use_bias= True
        #kernel_init = keras.initializers.TruncatedNormal(stddev=0.02)
        kernel_init = 'glorot_uniform'
        
        d_out = keras.layers.concatenate([wav_in_clean, wav_in_noisy])
    
        for layer_num, numkernels in enumerate(d_fmaps):
            d_out = Conv1D(numkernels, kwidth, strides=strides, kernel_initializer=kernel_init, 
                            use_bias=use_bias, padding="same")(d_out)
    
            if opts['applybn']:
                d_out = BatchNormalization()(d_out)
            elif opts['applyinstancenorm'] :
                d_out = InstanceNormalization(axis=2)(d_out)
    
            if activation == 'leakyrelu':
                d_out = LeakyReLU(alpha=opts['leakyrelualpha'])(d_out)
            elif activation == 'relu':
                d_out = tf.nn.relu(d_out)
    
        d_out = Conv1D(1, 1, padding="same", use_bias=use_bias, kernel_initializer=kernel_init, 
                        name='logits_conv')(d_out)
        d_out = Flatten()(d_out)
        d_out = Dense(1, activation='linear', name='d_output')(d_out)
        D = Model([wav_in_clean, wav_in_noisy], d_out)
      
        if opts ['show_summary']:
            D.summary()
        return D
    

    完整的代码实现如下:
    https://download.csdn.net/download/weixin_39589455/18660959
    包含

    1. 传统方法:NMSE、SS、WF
    2. 基于机器学习:CNN、NMF、serGAN
    3. 加噪处理代码
    4. 评价指标代码:LLR、PESQ_STOI、segSNR
    5. 时域图、语谱图绘制的MATLAB代码
      在这里插入图片描述

    详细的论文设计报告如下:
    https://download.csdn.net/download/weixin_39589455/18660991

    word格式,可编辑,标准论文形式3w+字数论述和实验结果

    在这里插入图片描述

    展开全文
  • 来自于脸书实验室的一篇文章,将图神经网络用在了多通道语音增强上面,思路比较新奇,下面可以通篇看一下翻译的中文,有哪些值得我们去借鉴的思想

    MULTI-CHANNEL SPEECH ENHANCEMENT USING GRAPH NEURAL NETWORKS 文献翻译

    来自于脸书实验室的一篇文章,将图神经网络用在了多通道语音增强上面,思路比较新奇,下面可以通篇看一下翻译的中文,有哪些值得我们去借鉴的思想。

    摘要

    多通道语音增强旨在使用从多个麦克风捕获的信号从有噪声的混合信号中提取干净的语音。最近提出的方法通过将深度神经网络模型与空间滤波技术(例如最小方差无失真响应(MVDR)波束形成器)相结合来解决这个问题。在本文中,我们通过将每个音频通道视为位于非欧几里得空间中的节点,特别是图,来介绍不同的研究方向。这个公式允许我们应用图神经网络(GNN)来寻找不同通道(节点)之间的空间相关性。我们通过将图卷积网络(GCN)合并到U-Net架构的嵌入空间中来利用它们。我们使用LibriSpeech数据集和模拟房间声学数据,使用不同的阵列类型和麦克风数量来广泛实验我们的方法。结果表明,与现有的最先进的方法相比,我们的方法具有优越性。

    1 引言

    人类可以自然地将他们的听觉系统集中在一个单一的声源上,而在认知上忽略其他声音。大脑在困难的嘈杂场景中执行这种任务的确切机制,通常被称为鸡尾酒会问题[1],但这种机制仍然没有完全被理解。然而,研究表明双耳处理可以帮助缓解这个问题[2]。空间信息有助于听觉系统将来自特定方向的声音分组,并将它们与其他方向的干扰声音分开。(说问题,引出多通道是有效解决方案)

    多通道语音增强是使用多个麦克风增强被背景干扰破坏的目标语音的过程。它对许多应用非常重要,包括但不限于人机界面[3]、移动通信[4]和助听器[5,6]。(应用场景丰富)

    虽然这个问题已经研究了很长时间,但它仍然是一个具有挑战性的问题。目标的语音信号不仅会被其他声源破坏,还会被表面反射的混响破坏。传统方法包括空间滤波方法[7,8],这些方法通常利用声音场景的空间信息,例如目标语音的角度位置和麦克风阵列配置。这些方法通常被称为波束成形,这是一种线性处理模型,它在时间-频率域中加权(“屏蔽”)不同的麦克风通道,以便抑制不是目标声源的源信号分量。在最小方差无失真响应(MVDR) [9]波束形成器的情况下,首先重新估计期望的源传递函数和噪声协方差矩阵,通常是功率谱密度(PSD)矩阵,然后计算波束形成权重并将其应用于信号。虽然这些方法可以很好地执行,但是它们的性能依赖于空间信息的可靠估计,这对于在噪声条件下精确估计是有挑战性的。(传统方法的不足)

    深度神经网络(DNN)已广泛应用于各种音频任务,如情感识别[10]、自动语音识别[11]和语音增强与分离[12]。对于多通道处理,它们已经与传统的空间滤波方法结合在一起,例如传统的滤波器和波束形成器。这主要通过两种方式实现,两种方式都应用于频域。在一种方法中,使用DNN直接预测波束成形权重[13]。在第二种方法中,使用DNN估计应用于信号的短时傅立叶变换(STFT)的掩模,从而计算PSD矩阵[14]。然后,应用波束形成方法,例如MVDR,其使用PSD矩阵[15,16,14]计算滤波器系数。这些方法以不同的方式使用DNN方法,但是,每种方法的最终目标都是相同的,即预测滤波器系数。然而,最近,音频社区出现了一种转变,将注意力机制纳入深度神经网络架构[17],以隐式执行空间滤波。(简述DNN用在多通道处理的方法)

    本文提出了一种新的多通道语音增强和去混响方法,而不是使用带有DNN或注意机制的传统波束形成方法。具体来说,我们将每个音频通道视为位于非欧几里得空间中,更具体地说,是一个从观察中获得的图形。以这种方式表述问题允许我们利用图神经网络(GNN)领域的方法[18],并以端到端的方式执行我们的训练。此外,学习图形结构允许网络根据动态声音场景调整其结构。据我们所知,这是第一种通过图来表示多通道语音增强和去混响并使用图神经网络来解决它的方法。 (第一篇使用图神经网络来处理多通道语音增强问题)

    我们的方法依赖于短时傅里叶变换(STFT)域中的复数混合的实部和虚部,并估计参考麦克风的复数比率掩模(CRM)。然后将CRM应用于混合STFT,以获得干净的语音。我们将我们提出的方法应用于同步语音增强和去混响任务。为此,我们利用LibriSpeech [19]数据集模拟数据。特别是,我们模拟不同麦克风阵列配置的数据-线性、圆形和分布式,同时改变麦克风的数量。我们在实验中使用短时客观可懂度(STOI) [20]、语音质量感知评估(PESQ) [21]和信号失真比(SDR) [22]作为评估指标。我们还表明,我们的方法优于最近提出的基于神经网络的多通道语音增强方法。

    image-20210719095753564

    Fig.1. 提出了一种基于图神经网络的多通道语音增强模型。计算每个麦克风信号的复频谱图,并将其传递给编码器。每个通道的提取表示被传递到图卷积网络,用于空间特征学习。每个通道的提取特征被传递到解码器,并且执行解码器输出的加权和。输出(复数)乘以参考麦克风复频谱图,以产生干净的频谱图。

    2 图神经网络

    图神经网络(GNN) [18]是传统神经网络的推广,旨在以图的形式对非欧几里德数据进行操作。图表在如何表示和构造数据方面提供了相当大的灵活性,而神经网络允许人们操作和推广神经网络方法来绘制结构化数据。GNN的一种特殊类型是图卷积神经网络,它基于通过共享权重学习的原理,类似于卷积神经网络[23]。广义而言,有两种方法可以构建图卷积神经网络,即谱图神经网络和空间图神经网络[24,25,26]。谱图神经网络是基于谱图理论。更具体地说,图处理基于图拉普拉斯的特征分解,用于计算图信号的傅立叶变换,通过该变换定义图滤波操作。空间图卷积网络直接在图数据上定义卷积,并试图通过共享权重从相邻节点聚集信息来捕获信息。空间图卷积网络的计算复杂度较低,并且可以更好地推广到不同的图。而谱图卷积网络在固定图上运行,空间图神经网络具有在每个节点上局部工作的灵活性,而不考虑整个固定图。然而,它们需要节点排序。

    我们提出的方法的一个关键方面是我们根据手头的任务动态地构建图。这种动态图构建方法使这个框架能够以特定于样本的方式获取每个音频的多声道信息。

    3 多通道图处理

    我们提出的框架示意性地显示在图1中。来自每个通道的音频信号被转换成时间-频率(T-F)表示,该表示被送到神经网络框架。输入首先通过编码器网络,该网络试图从输入中学习更高级别的特征(第3.1节)。然后,音频通道的这些特征表示被用于构建一个图,该图通过其节点和边缘捕获多通道信息。此时,我们使用GCNs(第3.3节)来聚合来自每个麦克风的信息。图中每个节点的输出表示作为输入传递给解码器,然后解码器将信号转换回原始尺寸。最后,计算解码器输出的加权和,并将其(复数)乘以参考麦克风的STFT,以计算干净的STFT。

    3.1 音频表示学习

    我们提出的框架的第一个主要步骤是学习来自每个麦克风的音频信号的表示。为此,首先通过短时傅立叶变换(STFT)将音频信号转换为时频表示。这个复数的实部和虚部叠加在一起,得到大小为2 × T × F的2通道张量,其中T代表时间段的总数,F代表频率仓的总数。考虑到所有M个通道,它导致框架的M × 2 × T × F维输入。

    我们利用一个U-Net架构[27]来学习输入的表示。基于U-Net的体系结构已被证明对语音增强效果良好[28]。每个通道的复数图被传递到编码器。由编码器产生的表示用于获得多通道图。解码器输出与输入相同维数的M个张量。我们使用注意层将这些张量组合成统一的表示,即它们的加权和。

    3.2 图结构

    传统上,基于信号处理的方法已经用于从由多个麦克风捕获的音频信号中提取信息。在这里,我们提出了一种通过图形处理提取多通道信息的新方法。该过程的第一步是使用在前一步中获得的不同通道的音频表示来构建图表

    我们构造一个无向图 $ G = (V,E) , 其 中 ,其中 ,V 表 示 图 的 节 点 集 , 比 如 麦 克 风 , 表示图的节点集,比如麦克风, E$ 表示两个节点之间的图的边 ( v i , v j ) (v_i,v_j) (vi,vj)。在图论中,图的特征是邻接矩阵 A = R ∣ V ∣ ∣ V ∣ ) A = \mathbb{R}^{|V||V|}) A=RVV) ,其中 ∣ . ∣ |.| . 表示基数和一个度矩阵$ D . 我 们 考 虑 加 权 邻 接 矩 阵 , 其 中 .我们考虑加权邻接矩阵,其中 .A 的 内 容 对 应 着 图 的 两 个 节 点 之 间 的 加 权 边 的内容对应着图的两个节点之间的加权边 (v_i,v_j)\in E . 直 观 地 , 每 个 权 重 表 示 图 中 两 个 节 点 的 特 征 向 量 之 间 的 相 似 性 。 在 我 们 的 方 法 中 , 邻 接 矩 阵 A 的 这 些 权 重 .直观地,每个权重表示图中两个节点的特征向量之间的相似性。在我们的方法中,邻接矩阵A的这些权重 .Aw_{ij},{i,j \in |V|}$ ,是在训练过程中学习的。对于 v i v_i vi v j v_j vj 两个节点,我们首先连接它们的表示 f v i f_{v_i} fvi,$f_{v_j} \in \mathbb{R}^N 作 为 作为 |f_{v_i}||f_{v_j}| , 然 后 通 过 非 线 性 函 数 F ( ) 传 递 他 们 。 我 们 通 过 归 一 化 每 个 节 点 的 权 重 来 构 造 邻 接 矩 阵 , 使 其 和 为 1. 节 点 度 矩 阵 D 是 对 角 矩 阵 ,然后通过非线性函数F()传递他们。我们通过归一化每个节点的权重来构造邻接矩阵,使其和为1.节点度矩阵D是对角矩阵 线F()使1.DD_{ii} = \sum_jA_{ij}$.

    3.3 图卷积网络

    在上一节构造的G图提供了一种结构化的方式来捕获来自所有麦克风的信息。我们可以利用GCN从这个图中学习空间关系。我们应用GCN通过学习每个节点相对于其邻居的表示来学习节点特征的更高抽象级别。给定一个图$ G = (V,E) , G C N 对 具 有 N 个 特 征 的 输 入 特 征 矩 阵 ,GCN对具有N个特征的输入特征矩阵 GCNNx\in\mathbb{R}^{|V|*N}$,进行非线性变换。在数学上,GCN可以表示如下

    image-20210719110940480

    其中 H ( l ) ∈ R ∣ V ∣ ∗ K H^{(l)}\in\mathbb{R}^{|V|*K} H(l)RVK是具有K个特征的 l t h l^{th} lth层, H ( 0 ) = X H^{(0)}=X H(0)=X. D是对角点度矩阵, W ( l − 1 ) W^{(l-1)} W(l1)是第一层的可训练权矩阵,g是激活函数。

    3.4 激活函数

    为了训练整体框架,我们考虑不同形式的损失计算。我们通过幅度谱图、复谱图和原始信号域来考虑损耗计算。更具体地说,考虑以下四种损失

    image-20210719111327475

    ∣ ∣ ∗ ∣ ∣ 1 ||*||_1 1表示L1范数,M,S和s分别表示幅度谱图,复数谱图和干净信号,^ 表示相应的预测实体。

    4 实验

    4.1 数据集

    我们使用LibriSpeech数据集,这是一个大约1000小时的英语语音语料库,在消声室中以16千赫的采样率捕获。出于我们的目的,我们使用数据集的句子来模拟三种阵列类型的房间声学数据:线性、圆形和分布式。使用分布式阵列,我们在房间中随机放置麦克风。此外,我们还对阵列中的 M ∈ { 2 , 4 } M\in {\{2,4\}} M{2,4}麦克风进行了实验。模拟观察包括一个混合了m-1噪声信号的语音信号,从音频集中随机选择[30],并随机放置在房间内。混合信号的信噪比水平为{ -7.5,-5,0,5,7.5 }分贝。训练集由3个房间组成(宽×深×高),尺寸从{3 × 3 × 2,5 × 4 × 6,8×9×10 }米,开发集由2个房间组成,尺寸从{5 × 8 × 3,4×7×8 }米,测试集由2个房间组成,尺寸从{4×5×3,6×8×5 }米。所有房间的RT60 = 0.5秒。训练集由6小时组成,开发和测试集由5小时组成。

    4.2 实验步骤

    我们使用Adam优化算法[31]以10-5的固定学习率和20帧的小批量训练模型。输入表示是用长度为1024的汉宁窗和跳跃大小为512的频率仓513计算的复STFT。编码器中卷积层的通道数分别为64、128、128、256、256、256。解码器的通道数与编码器的顺序相反。编码器(解码器)的所有(去)卷积都使用3 × 3内核大小,步长为2 × 2,没有填充。编码器(解码器)层由(去)卷积、批量归一化和SELU激活函数组成。对于我们的GCN,我们使用两层,隐藏单元的数量与嵌入空间的维度相同。

    4.3 增强结果

    我们将我们的方法与查克拉巴蒂等人(CRNNC) [14]的方法进行了比较,这是一种最近提出的基于多通道深度学习的增强模型。他们的方法使用每个通道的原始信号的相位和幅度作为输入,并在通道之间执行卷积,以预测理想的比率掩码(IRM)来计算干净的幅度。我们还展示了不利用空间信息的U-Net体系结构的结果,即使用单通道进行增强。表1显示了不同阵列配置的结果

    image-20210719112309389

    image-20210719112320184

    image-20210719112409737

    我们的方法优于单通道方法,在所有指标上都有很高的提升。此外,我们的模型也优于CRNN-C方法。令人惊讶的是,我们观察到CRNN-C方法的性能最差,其值略高于噪声信号,即使与单通道方法相比也是如此。此外,与传统方法相比,我们的方法对不同的麦克风几何形状具有鲁棒性,在传统方法中,人类先验知识对于实现高性能模型至关重要。最后,在表2和图2中,我们分析了不同信噪比下的结果。图中显示了具有4个麦克风的线性阵列在5种不同信噪比水平下的结果,[-7.5,5,0,5,7.5] (分贝)。一般来说,与正信噪比值相比,负信噪比值可以获得更高的性能增益。对于-7.5分贝的输入信噪比,我们看到所提出的基于GCN的方法比噪声情况下的SDR提高了9分贝以上。对于最高的输入信噪比,我们观察到SDR只有2.98分贝的提高。此外,我们观察到我们的模型在所有信噪比值上都优于CRNN-C。在非常低的信噪比值下,例如7.5分贝,我们的模型在STOI、PESQ和SDR上分别有0.5、0.39和4.92的提高。

    消融实验

    我们使用4麦克风线性阵列进行消融研究,以找到合适的损耗函数,并验证GCN改进模型的性能。本节中的实验使用了一个8麦克风圆形阵列,结果用STOI、PESQ和SDR显示。表3显示了我们模拟数据集开发集的结果。结果表明,结合幅度和原始信号的损失函数具有整体最佳性能。为了验证GCN在U-Net嵌入空间中的效用,我们进行了两个实验,其中我们:(1)从U-Net的嵌入空间中丢弃GCN,以及(2)包括GCN。表4描述了结果。包括GCNS在内,模型在所有指标上的表现都优于不使用GCN的模型。我们应该注意到,当我们不使用GCN时,我们仍然使用所有的通道,因为我们将提取的U-Net表示与关注层相结合。

    结论

    本文提出利用图神经网络来挖掘多通道语音增强问题中的空间相关性。我们使用一个U-Net类型的架构,其中编码器分别学习每个通道的表示,并使用这些表示构建一个图。图形卷积网络用于在图形中传播信息,从而学习空间特征。每个节点的特征被传递给解码器,以重建每个通道的频谱图。我们使用注意力权重对这些进行组合,用于参考麦克风的最终预测。针对混响和噪声环境中不同的阵列几何形状和麦克风数量,对所提出的方法进行了分析。这是第一项利用GCN进行语音增强的研究。结果表明,与现有技术方法相比,该方法具有优越性。未来的工作可以着眼于通过检查图中最重要的节点和边来对训练好的模型进行定量评估。此外,通过使用原始波形(即,端到端方法)而不是复杂频谱图来执行语音增强是另一个可能的方向。

    自己的理解

    这篇论文依托于U-net语音增强网络框架,将图卷积网络应用在模型中,其起到的作用是以另一种形式去学习空间特征。对比着其他领域图卷积网络的应用,我发现,在这篇文章中,图卷积中所有的公式都是可学习的参数,也就是说,只是用了图卷积网络样子,借用了理论,所有系数都使用可学习参数。不过作者也为我们提供了一个新的思路,尤其是对于多通道语音增强这个研究比较少的领域,非常感谢。

    卷积中所有的公式都是可学习的参数,也就是说,只是用了图卷积网络样子,借用了理论,所有系数都使用可学习参数。不过作者也为我们提供了一个新的思路,尤其是对于多通道语音增强这个研究比较少的领域,非常感谢。

    展开全文
  • 该库的思想是提供一种简单的方法,将用于源分离和/或语音增强的波束成形直接应用于存储为numpy数组的多通道麦克风录音。 对于大多数波束形成器而言,唯一需要的信息是混合物的麦克风录音(或嘈杂的语音)以及单独...
  • DNN单通道语音增强(附Demo代码)

    千次阅读 热门讨论 2020-05-10 10:43:47
    目录 1. 基于映射的语音增强 ...由于单通道使用场景较,本文就以单通道语音增强为例。目前基于DNN单通道大致可以分为两种方法,第一种寻求噪声语音谱与纯净语音谱的映射(Map),另一种则是基于掩蔽(Mask)的方
  • 基于深度学习的单通道语音增强

    千次阅读 2020-12-16 16:13:00
    本文代码请见:... ...如果你觉得写得还不错,点赞????,关注是对我最大的支持,谢谢???... 传统的语音增强方法基于一些设定好的先验假设,但是这些先验假设存在一定的不合理之处。此外传统语音...
  • 麦克风阵列语音增强(一)

    万次阅读 多人点赞 2018-07-26 11:05:10
      对于语音增强的研究,基本上可以划分成两大分支:单通道语音增强算法和麦克风阵列的语音增强算法。麦克风阵列的语音增强方法的优势在于考虑了声源的位置信息,可以实现空间滤波,所以对具有方向性的噪声具有较...
  • 语音增强—matlab

    2015-07-22 09:47:34
    基于人耳听觉掩蔽的维纳滤波子空间算法结合了维纳滤波与子空间语音增强各种的优点,达到了很好的语音增强效果
  • 由于兼顾了两者在降低噪音方面的优势,子空间语音增强技术与稳定维纳过滤技术的特点,建议多通道语音增强方法有更好的强大地消除噪声中的有色噪声的性能语音信号。仿真实例证实了在不同情况下有色噪声,建议多通道...
  • 通道语音增强之维纳滤波(三)

    千次阅读 2017-12-17 19:20:21
    3.1 非迭代维纳滤波算法简介  上一节中主要介绍了一些利用迭代的方法去近似求解非因果解的维纳滤波增益函数的算法,并且实验结果也表明,利用迭代方法实现的非因果解维纳滤波...其中,和 分别表示估计的纯净语音
  • 通道语音增强之维纳滤波(四)

    千次阅读 2017-12-19 11:35:21
    4.1 维纳滤波算法在工程中的应用  维纳滤波的思想,除了被应用在语音增强领域,还在其他工程领域,比如图像增强、飞机盲着陆、地震数据处理、抗址干扰盲检测等领域都有所应用。维纳滤波这种以最小均方误差的准则...
  • 通道语音增强之维纳滤波(一)

    千次阅读 2017-12-06 16:31:44
      经过了几十年的发展,维纳滤波算法的种类和变体很,其中比较实用,且应用较广的,算是频域的维纳滤波算法,而频域的维纳滤波算法中的变体、优化形式又十分丰富,也使得维纳滤波算法在语音增强的学术和工程领域...
  • 如果按照录音的通道数来划分,语音增强又分为单声道语音增强和麦克风阵列语音增强。单声道语音增强只利用了时域和频域的信息,而麦克风阵列语音增强不仅利用了时域和频域的信息,还利用了空域的信息。 而如果...
  • 语音增强基本概念

    2020-11-26 21:08:52
    语音增强是指当语音信号被不同噪声干扰、甚至淹没 后,从噪声背景中提取有用的...单通道语音增强 谱减法(原理简单,算法计算复杂度低) 将含噪语音信号和VAD判别(Voice Activity Detection (语音激活检测))得到.
  • 语音增强

    万次阅读 多人点赞 2017-12-03 18:25:31
    1.1 语音增强概况  语音增强,英文名:Speech Enhancement,其本质就是语音降噪,换句话说,日常生活中,麦克风采集的语音通常是带有不同噪声的“污染”语音,语音增强的主要目的就是从这些被“污染”的带噪语音中...
  • TAC端到端麦克风排列和数目不变的多通道语音分离 uPIT进行语音分离:使用发声级PIT进行语音分离 LSTM_PIT_Speech_Separation 深度集群 小行星:面向研究人员的基于PyTorch的音频源分离工具套件 声音分离...
  • 基于有监督的语音增强算法,例如浅层人工神经网络的语音增强,受自身规模和数据量的限制,对于不匹配噪声泛化性差。HMM和非负矩阵分解的方法,架设了噪声和语音之间的独立性,限制了语音增强的性能。 近年来基于深度...
  • 当在有限的声学空间内使用远距离麦克风捕捉语音信号时,录音往往会因混响而退化。这会对语音的质量和可理解性产生有害影响,尤其是当与噪声混合时。近几年来,在免提电话或听音器技术等应用中,人们越来越需要有效的...
  • 深度学习语音增强

    千次阅读 2020-05-02 15:44:02
    深度学习语音增强 我的书: 购买链接: 京东购买链接 淘宝购买链接 当当购买链接 在我的这本书里,详述了基于信号处理的语音降噪(NS)和回声消除(AEC)算法,并对基于监督深度学习降噪介绍了例子;这里对...
  • 语音增强技术

    千次阅读 热门讨论 2017-07-23 11:42:22
    这一过程称为降噪或者语音增强;从麦克风数量上分为单麦克降噪,多麦克降噪,算法层次上,主要分为滤波法(时域,频域,空域),谱分辨法,基于模型的方法。 噪声将改变采集到的人声特性,噪声/干扰分为四类:加性...
  • 语音增强简介

    千次阅读 2019-04-21 17:17:01
    语音增强简介
  • 卷积神经网络的单通道语音增强[ ] SEGAN:语音增强生成对抗网络[ ] 用于语音增强和强噪声说话者验证的条件生成对抗网络[] 用于语音增强的全卷积神经网络[] 全卷积网络基于原始波形的语音增强[ ] 2016年 使用深度...
  • 语音增强及相关算法

    万次阅读 多人点赞 2018-07-11 15:56:43
    一、概况及现状1、语音增强的目标:受体是机器,目标是提高语音的可懂度(intelligibility)受体是人,目标是提高语音的质量(quality)2、语音增强的任务:语音降噪、语音分离、语音解混响,增强技术很情况下并不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,984
精华内容 3,193
关键字:

多通道语音增强