• CRUSE: Convolutional Recurrent U-net for Speech Enhancement


    CRUSE: Convolutional Recurrent U-net for Speech Enhancement

    本文是关于TOWARDS EFFICIENT MODELS FOR REAL-TIME DEEP NOISE SUPPRESSION的介绍,作者是Microsoft Research的Sebastian Braun等。相关工作的上下文可以参看博文

    概述

    本文设计的是基于深度学习的语音增强模型,工作的贡献点有二:

    • 基于深度学习语音增强模型在实录数据的性能
    • 一套用于语音增强的数据增强方法
    • 模型计算复杂度和语音质量(主要是MOS)的折衷的消融实验结果

    动机

    • 本文要解决的核心问题是:目前语音增强模型普遍为了获得更好的性能,不断增加模型的计算量。而更需要关心的问题是:如何在给定最大计算量要求下设计出最有效的模型(How to obtain the best speech quality given a maximum computational budget?),因为这在边缘设备(edge devices)和低功耗设备上是重要的

    系统与模型

    系统框图如下

    要说明如下几点:

    • 选择频域模型的原因:时域模型在带混响数据和实录数据上的泛化性能没有被验证
    • 特征采用的是对数功率谱,网络估计目标是IRM,损失则是利用SA方法
    • IRM作用在带噪STFT谱后(这里为避免混淆,将其称为重构谱)进行STFT一致性约束,即先将谱iSTFT后再STFT(将STFT后的谱成为约束谱),之后对约束谱进行信号量级归一化后计算压缩复谱的MSE损失,这里直接给出合并了信号量级归一化和压缩复谱MSE损失的公式,所以比论文中的损失公式多了一个归一化因子项:L=1σcS(λk,n|ScˆSc|2+(1λ)(k,n||S|c|ˆS|c|2)),其中σS是纯净语音有声段的能量,压缩谱的操作定义为Xcprs=X(k,n)|X(k,n)||X(k,n)|ccλ作者推荐都为0.3。
    • 验证阶段按Q=PESQ+0.2SISDRCD选择最优的模型,其中PESQ,SI-SDR和倒谱距离分别是三个语音质量评估指标
    • 训练的batch size=10,句子长度10 s,AdamW优化器,学习率(learning rate)为8e-5,权重衰减(weight decay)为0.1
      模型CRUSE架构如下图,整体上沿用了谭可的GCRN:
    • 主要组成部分有三部分:编码器、解码器、时序建模。其中编解码器是一个U-Net结构,即L层卷积编码层和L层卷积解码层。卷积编码层就是卷积层+BN+leakyReLU,解码层就是转置卷积+BN+leakyReLU,不过最后一个解码层的激活函数为sigmoid以保证输出为IRM。卷积或转置卷积层的kernel size是2×3,stride是1×2 (均为时间帧维×频点维),即时间维上通过编码器补零和解码器截断完成因果卷积,频率维则每层尺度减半。时序建模采用的是分组GRU,因为GRU比LSTM计算复杂度更低,分组策略则与GCRN中的分组LSTM一致。编解码器对应层之间用跳转连接联系,这里的跳转连接使用1×1卷积和加法连接实现的,从而降低GCRN中拼接连接带来解码层巨大的输入维度导致的过高的计算量,加法拼接如下图

    算法参数

    16 kHz的采样率,20 ms帧长,10 ms帧移以及320点FFT。输入特征是Batchsize×1×numframes×numbins,卷积层通道数从16开始,依次加倍,直到倒数第二层,最后一层输出通道数则为CL,比如L=4层且CL=120,则卷积层的输出通道数依次为163264120,转置卷积层的输出通道数依次为6432161,最后一层始终为1以保证输出是幅度掩蔽。分组GRU的层数为N分组数为P。网络命名规则为CRUSELCLN×RNNP

    数据集的增广

    数据集的增广方法可以参考博文
    评估指标是用于评价语音质量的DNSMOS(P.808)和用于评估计算量的MACs,需要注意的是这里的DNSMOS(P.808)应该是与目前(2022/04/24)可用的DNSMOS(P.808&P.835)中的P.808的分数有差异了

    实验结果


    (图中横轴是MACs,纵轴是ΔMOS,因此在图中偏左上的方法更优)
    分析结论:

    • CRUSE5中的2层LSTM换成2层GRU甚至1层GRU会在性能下降极小的情况下大幅度降低计算复杂度
    • GRU分组后性能少量下降但是会带来计算复杂度下降
    • 编解码器卷积层中的kernel时间维从2降到1(图中的1D模型),性能下降严重,推测是混响的原因,因为GCRN在降噪任务上评估时没有明显的性能下降
    • 编解码器尤其是时间维度进行卷积对性能提升帮助很大
    • MOS和MACs大体呈线性相关的趋势
    • 使用分组为4的GRU并结合add conv1×1 skip的CRUSE4是本文的最佳折衷方案

      RNN的宽度引起的MOS和MACs的关系可以指导我们在给定的计算资源下设计最优的模型

    最后是一个消融实验证明设计的跳转连接的有效性

  • 相关阅读:
    从月薪10k到30k的必走之路:自动化测试
    利用人工智能做射击游戏辅助(一)AlphaPose简介
    Ant Design入门、Ant Design Pro入门
    把JS中的map方法玩出花来
    UE4 Sequence添加基础动画效果 (01-物体移动)
    GitHub:30%的新增代码出自AI工具Copilot之手
    NoSQL:非关系型数据库分类
    无量深度学习系统在推荐类业务中的应用
    关于控件的句柄随笔
    jvm 内存结构 ^_^
  • 原文地址:https://www.cnblogs.com/VincentLau-blog/p/se_cruse.html