Loading [MathJax]/jax/output/SVG/jax.js
  • 中国精品科技期刊
  • CCF推荐A类中文期刊
  • 计算领域高质量科技期刊T1类
高级检索

基于跨维度协同注意力机制的单通道语音增强方法

康宏博, 冯雨佳, 台文鑫, 蓝天, 吴祖峰, 刘峤

康宏博, 冯雨佳, 台文鑫, 蓝天, 吴祖峰, 刘峤. 基于跨维度协同注意力机制的单通道语音增强方法[J]. 计算机研究与发展, 2023, 60(7): 1639-1648. DOI: 10.7544/issn1000-1239.202220129
引用本文: 康宏博, 冯雨佳, 台文鑫, 蓝天, 吴祖峰, 刘峤. 基于跨维度协同注意力机制的单通道语音增强方法[J]. 计算机研究与发展, 2023, 60(7): 1639-1648. DOI: 10.7544/issn1000-1239.202220129
Kang Hongbo, Feng Yujia, Tai Wenxin, Lan Tian, Wu Zufeng, Liu Qiao. Monaural Speech Enhancement Based on Cross-Dimensional Collaborative Attention Mechanism[J]. Journal of Computer Research and Development, 2023, 60(7): 1639-1648. DOI: 10.7544/issn1000-1239.202220129
Citation: Kang Hongbo, Feng Yujia, Tai Wenxin, Lan Tian, Wu Zufeng, Liu Qiao. Monaural Speech Enhancement Based on Cross-Dimensional Collaborative Attention Mechanism[J]. Journal of Computer Research and Development, 2023, 60(7): 1639-1648. DOI: 10.7544/issn1000-1239.202220129
康宏博, 冯雨佳, 台文鑫, 蓝天, 吴祖峰, 刘峤. 基于跨维度协同注意力机制的单通道语音增强方法[J]. 计算机研究与发展, 2023, 60(7): 1639-1648. CSTR: 32373.14.issn1000-1239.202220129
引用本文: 康宏博, 冯雨佳, 台文鑫, 蓝天, 吴祖峰, 刘峤. 基于跨维度协同注意力机制的单通道语音增强方法[J]. 计算机研究与发展, 2023, 60(7): 1639-1648. CSTR: 32373.14.issn1000-1239.202220129
Kang Hongbo, Feng Yujia, Tai Wenxin, Lan Tian, Wu Zufeng, Liu Qiao. Monaural Speech Enhancement Based on Cross-Dimensional Collaborative Attention Mechanism[J]. Journal of Computer Research and Development, 2023, 60(7): 1639-1648. CSTR: 32373.14.issn1000-1239.202220129
Citation: Kang Hongbo, Feng Yujia, Tai Wenxin, Lan Tian, Wu Zufeng, Liu Qiao. Monaural Speech Enhancement Based on Cross-Dimensional Collaborative Attention Mechanism[J]. Journal of Computer Research and Development, 2023, 60(7): 1639-1648. CSTR: 32373.14.issn1000-1239.202220129

基于跨维度协同注意力机制的单通道语音增强方法

基金项目: 国家自然科学基金项目(U19B2028);国家科技重大专项(2021YFC3330403);中国电子科技集团54所开放课题(201148) ;攀钢集团有限公司开放课题(211129)
详细信息
    作者简介:

    康宏博: 1997年生. 硕士. 主要研究方向为语音信号处理和机器学习

    冯雨佳: 1997年生. 硕士. 主要研究方向为语音信号处理和机器学习

    台文鑫: 1997年生. 博士研究生. 主要研究方向为语音信号处理和机器学习

    蓝天: 1977年生. 博士,研究员,硕士生导师. 主要研究方向为医学图像处理、语音增强和自然语言处理

    吴祖峰: 1978年生. 博士,副研究员,硕士生导师. 主要研究方向为医学语音信号处理和机器学习

    刘峤: 1974年生. 博士,教授,博士生导师. 主要研究方向为自然语言处理、机器学习和数据挖掘

    通讯作者:

    蓝天(lantian1029@uestc.edu.cn

  • 中图分类号: TP391

Monaural Speech Enhancement Based on Cross-Dimensional Collaborative Attention Mechanism

Funds: This work was supported by the National Natural Science Foundation of China (U19B2028), the National Science and Technology Major Project (2021YFC3330403), the Open Subject of the 54th Research Institute of China Electronics Technology Group Corporation (201148), and the Open Subject of the Pangang Group Company Limited (211129).
More Information
    Author Bio:

    Kang Hongbo: born in 1997. Master. Her main research interests include speech signal processing and machine learning

    Feng Yujia: born in 1997. Master. Her main research interests include speech signal processing and machine learning

    Tai Wenxin: born in 1997. PhD candidate. His main research interests include speech signal processing and machine learning

    Lan Tian: born in 1977. PhD, professor, master supervisor. His main research interests include medical image processing, speech enhancement, and natural language processing

    Wu Zufeng: born in 1978. PhD, associate professor, master supervisor. His main research interests include speech signal processing and machine learning

    Liu Qiao: born in 1974. PhD, professor, PhD supervisor. His main research interests include natural language processing, machine learning, and data mining

  • 摘要:

    近年来,卷积神经网络在语音增强任务中得到了广泛的应用.然而,目前广泛使用的跳跃连接机制在特征信息传输时会引入噪声成分,从而不可避免地降低了去噪性能;除此之外,普遍使用的固定形状的卷积核在处理各种声纹信息时效率低下,基于上述考虑,提出了一种跨维度协同注意力机制和形变卷积模块的端到端编-解码器网络CADNet. 具体来说,在跳跃连接中引入跨维度协同注意力模块,进一步提高信息控制能力. 并且在每个标准卷积层之后引入形变卷积层,从而更好地匹配声纹的自然特征. 在TIMIT公开数据集上进行的实验验证了所提出的方法在语音质量和可懂度的评价指标方面的有效性.

    Abstract:

    Monaural speech enhancement aims to recover clean speech from complex noise scenes, thus improving the quality of the noise-corrupted voice signals. This problem has been studied for decades. In recent years, convolutional encoder-decoder neural networks have been widely used in speech enhancement tasks. The convolutional models reflect strong correlations of speech in time and can extract important voiceprint features. However, two challenges still remain. Firstly, skip connection mechanisms widely used in recent state-of-the-art methods introduce noise components in the transmission of feature information, which degrades the denoising performance inevitably; Secondly, widely used standard fix-shaped convolution kernels are inefficient of dealing with various voiceprints due to their limitation of receptive field. Taking into consideration the above concerns, we propose a novel end-to-end encoder-decoder-based network CADNet that incorporates the cross-dimensional collaborative attention mechanism and deformable convolution modules. In specific, we insert cross-dimensional collaborative attention blocks into skip connections to further facilitate the ability of voice information control. In addition, we introduce a deformable convolution layer after each standard convolution layer in order to better match the natural characteristics of voiceprints. Experiments conducted on the TIMIT open corpus verify the effectiveness of the proposed architecture in terms of objective intelligibility and quality metrics.

  • 计算机系统模拟器[1]是运行于宿主机上的软件,用于模拟目标机器的硬件和软件环境,便于使用者研究目标机器的架构与执行过程,减少硬件成本. 嵌入式领域对于模拟器的需求量较大,并且在可扩展性和精确度方面有较多要求. 因此,如何基于现有的模拟器快速开发原型并且在保证正确性的同时具有较好的执行效率是一个值得研究的问题.

    目前的模拟器从精确度方面可以分为功能级、指令级、周期级. 功能级保证其执行结果与目标机器相同,不考虑执行过程的精确性,在性能上表现最好,接近宿主机的执行速度,大多使用二进制翻译等技术提升性能,例如QEMU[2]. 指令级保证每条指令按顺序全部执行,不考虑指令周期和流水线的问题,大多使用即时编译(just-in-time compilation, JIT)等技术提升性能. 周期级保证指令周期精确,可以仿真指令流水线,执行速度最慢,但提供更多执行细节信息,例如gem5[3]. 考虑到嵌入式开发中对周期精确的需求,本文选择基于gem5进行研究. gem5是一个开源的计算机架构模拟器,由密歇根大学的m5项目和威斯康星大学的GEMS项目合并而来,在学术界和工业界应用广泛. gem5是模块化并以事件驱动的周期精确模拟器,可扩展性强. gem5的CPU模块采用解释执行技术,其译码模块和指令集实现独立于CPU模块,可以与不同精确度的CPU模型相结合. 以不考虑访存延迟和流水线的AtomicSimpleCPU模型为例,主要有3个步骤:取指、译码和执行. 其中,译码过程是由各个指令集架构中的译码模块负责.

    gem5中的指令集描述语言可以半自动地生成指令集功能代码,但需要开发者手动处理指令编码的判断并为指令编写模板替换函数. 对于复杂的指令编码,手动处理指令编码的判断过于繁琐并且难以得到性能最优的实现. 没有统一的指令模板替换函数导致逻辑复杂且存在冗余,总体开发效率较低. gem5在取指过程后会由译码模块对指令编码进行预解析,之后再调用函数解析完整的指令编码,这2个解析过程存在部分重复. 此外,在实现指令集和译码模块后还需要对模拟器进行功能测试,但一些指令集没有提供公开的标准测试集,这种情况下开发者需要根据指令集文档自行编写测试程序. 其中,测试用例的编写依赖于指令操作数的取值范围描述和指令的功能描述. 因此,可以依据gem5中所使用的指令集描述语言来生成功能测试中的部分数据,提高开发效率.

    前人[4-5]提出了一些指令集描述方法和译码过程的优化算法,但不易与现有模拟器相结合,也没有针对gem5进行优化. 目前还没有一套为现有模拟器提供的从指令集描述到生成具体实现和测试用例的完整方案. 这对于有自定义的指令需求的用户来说,在模拟器性能和项目开发效率方面有所欠缺.

    本文的工作难点在于根据统一的指令集描述语言提供一个完整的开发与测试方案,并针对gem5优化译码过程. 用户可以根据指令集文档直观地描述出所有指令的信息,得到自动生成的指令集实现代码、译码模块代码和功能测试用例.

    gem5原本未支持Cortex-M3指令集架构,本文实现了该指令集架构并引入了优化. 主要工作包括指令集功能实现和内存管理单元的修改,难点在于优化译码决策树和译码模块,意义在于提供一种更高效的指令集实现方案以及增加gem5对嵌入式芯片的仿真支持.

    本文方案与gem5原方案的流程比较如图1所示. 本文方案包括3个阶段,首先是用词法和语法分析指令集描述文件,之后是根据指令的编码描述生成译码决策树,最后是使用统一的模板替换规则生成指令功能代码和译码模块代码. 与原方案相比,本文方案重新设计了指令集描述文件格式,修改了模板替换的逻辑,增加了译码决策树生成功能并优化译码模块. 此改进的作用在于简化指令定义,自动化生成译码决策树和译码模块代码,优化译码执行时间,提升开发效率.

    图  1  本文方案与gem5原方案的比较
    Figure  1.  Comparison of our scheme and original gem5 scheme

    本文的主要贡献包括3个方面:

    1) 设计了一种指令集描述语言和一个基于gem5的指令集代码生成方案. 根据指令集的编码描述和功能描述,自动为模拟器生成指令集和译码模块代码,提升模拟器性能和开发效率.

    2) 提出了一个针对gem5优化的译码决策树构建算法. 该算法基于前人的算法进行扩展,并减少了gem5中指令编码预解析阶段的重复判断,提升模拟器运行性能.

    3) 实现了一个指令集功能测试框架. 根据指令的测试描述,使用框架中的模板为每条指令生成功能测试用例,在gem5上运行测试程序并输出测试报告.

    前人的研究[4-5]提到很多针对处理器或系统仿真的描述语言的研究可以用于生成指令集功能的描述,例如Pydgin[6], LISA[7], nML[8],但这些不是针对译码过程和指令功能的描述,也不易结合到现有的模拟器实现中. 本文方案主要基于gem5的指令集描述语言进行扩展,部分指令描述的设计参考了上述描述语言.

    目前一些研究提出了构造决策树来优化译码分支的方法[9-11],但在处理复杂指令结构时存在一些不能成功构建决策树的情况. Okuda等人[12]基于前人工作提出了对于不规则指令编码的译码分支优化算法,解决了复杂指令结构处理中的问题,可以生成平均高度低且内存占用小的决策树,并在ARM和MIPS指令集上取得了较好的结果. 此算法可以用于自动化构建处理器仿真[13],此外还有研究分析了译码决策树的开销问题[14]. 本文基于此算法构造译码决策树,并针对gem5译码模块做出优化,构建多个决策子树来配合gem5的处理流程,提升译码模块性能.

    指令集功能测试用于检测指令功能是否正确,例如检查单条指令执行前后的寄存器和内存的读写情况或者多条指令的处理器流水线情况[15]等. RISC-V提供了一套标准测试集[16],通过模板构建测试用例,能够测试单条指令的功能. 本文搭建的指令功能测试框架中测试用例的设计参考了此测试集.

    gem5中已经实现了一个领域特定语言(domain specific language, DSL),用于描述指令集中各个指令的功能及其译码函数,文件后缀为. isa. 在编译过程中,项目构建工具SCons[17]会调用Python脚本对所编译的目标架构的*. isa文件进行词法和语法分析,从而生成包含指令定义和译码函数的C++文件,最后SCons将这些生成的文件添加到编译任务中.

    在实际使用中,我们发现该指令集描述语言存在2个问题:

    1) 译码函数主要由开发者手动编写. 当指令数量较多且复杂时开发效率不高,并且手动编写的译码函数可能存在冗余,在执行效率方面有待优化.

    2) 用于生成C++代码的模板替换逻辑和待替换的数据没有分离. Python脚本会使用函数exec()来处理这些字符串. 然而这些模板替换逻辑非常类似,这种实现方式不仅增加了不必要的复杂性,而且不易维护.

    本文参考了该指令集描述语言的实现,并提出了一种包含指令编码和指令功能信息的指令集描述语言,可以自动生成译码函数并自动完成指令功能代码与C++代码模板的替换. 此外,对于不公开提供功能测试套件的指令集或是添加了自定义指令的情况,考虑到自行编写指令功能测试时很多所需的信息可以由指令集描述提供,本文方案允许标注操作数限制等指令测试所需的信息,支持生成指令的功能测试用例.

    本文方案包括编码描述、功能描述和测试描述3部分. 这里以ARM Cortex-M3的AND指令为例来说明,如图2所示.

    图  2  指令描述示例
    Figure  2.  An example of instruction description

    编码描述用于说明指令编码的结构与限制,用于构造译码决策树. 本文方案将编码抽象为由固定位段和可变位段组成的结构,其中可变位段的取值可能存在一些限制. 下面结合实例来说明其具体实现.

    指令编码是一串由0、1和小写字母组成的字符串. 其中,0和1表示指令编码中取值确定的位,小写字母表示指令编码中取值可变的位. 同一小写字母必须相连,表示一个可变的位段. 例如,指令t1_and_reg的编码为0100000000mmmddd,说明第0位和第2~9位为0,第1位为1,第10~12位为一个可变位段{m},第13~15位为另一个可变位段{d}.

    对于不符合要求的编码情况,使用EXCLUSION语句列出可变位段的所有例外表示,将其作为该指令编码的排除条件. 例如,指令t1_and_imm的编码排除了{n}为13到15和{d}为13或15的情况.

    功能描述用于说明指令功能的实现和标注信息,用于生成指令功能代码和提供仿真所需的控制信息和计数信息. 本文方案将功能抽象为由特定功能代码和模板组成的结构. 下面结合实例来说明其具体实现.

    代码块由{{和}}来表示,在代码块中可变位段可以作为数值来使用,REPLACE_MAP中定义替换词可以在前后加上@作为代码片段来使用.

    指令构造函数代码以代码块形式定义在指令编码描述结束后,用于为指令基类定义的操作数变量根据实际编码来赋值. 例如,指令t1_and_imm的基类为DataImm,其中定义了操作数寄存器的序号、立即数、其他参数和功能函数等.

    指令功能函数代码存放在一个字典结构中,代码块所对应的序号会作为参数传入FORMAT语句. FORMAT语句用于处理C++模板替换过程,定义在构造函数描述之后. 例如,CODE { 0: {{ int a=0; }} }说明指令功能代码为int a=0,其对应序号为0.

    FORMAT语句会根据指令类型的格式从FORMAT_MAP中得到对应的C++代码模板和参数格式,之后通过字符串替换生成相应的指令类. 例如,指令类型AND的格式为PredProcessOp,其C++代码模板为BasicDeclare, BasicConstructor, PredProcessExecute,分别用于指令类的声明、构造函数和功能函数的生成, 其参数格式为['process_code']. 指令t1_and_imm将[0, 3]传入FORMAT语句,即将序号为0和3的代码拼接后的值作为process_code.

    测试描述用于说明指令功能测试的参数要求,用于辅助生成指令功能测试. 本文方案将功能测试抽象为由测试参数和测试模板组成的结构. 下面结合实例来说明其具体实现.

    指令测试的所需的信息由TEST语句负责处理,用于生成该指令的功能测试用例. TEST语句的参数对应于该指令的汇编表示,例如指令t1_and_imm的汇编表示包括可选的标记S和条件cond,以及2个寄存器类型Rx和1个立即数类型Constant. 类型Rx和类型Constant定义于TEST_MAP中,设置了其取值范围和函数名,在测试用例生成时会调用类型所对应的函数来生成数值.

    本节说明了译码决策树生成过程中涉及的基本概念,并给出了译码决策树生成算法的具体描述. 本文方案对前人所提出的算法[12]进行了改进,并结合gem5的特性实现了针对性优化.

    本节定义决策树的输入与输出形式,以表1中的译码项来说明基本概念. 令指令集中的1条指令编码对应1个译码项,算法的输入为1个译码项集合,算法的输出为由该译码项集合生成的1个译码决策树.

    表  1  译码项示例
    Table  1.  An Example of Decoding Entries
    名称 m编码 d排除条件 C
    A00XXXX00
    B0100X0XX
    C010001XX
    D010011XX
    E01010100
    F01010101
    G01110111
    H1000XX00
    I10100XXX({6, 7}, 00)
    ({6, 7}, 01)
    J10100X00
    K10100X01
    L11000XXX
    M11100XXX
    下载: 导出CSV 
    | 显示表格

    译码项e包括名称m、编码d和排除条件集合C,记为e=(m,d,C). 其中,译码项的名称和编码是唯一的,排除条件可以为0或多个,译码项集合记为EE={e}.

    本文方案将编码定义为d{0,1,X}n. 其中,X表示该位可以与0或1相匹配,用于表示可变位段,编码长度为n位. 给定一个位串s{0,1}n,定义位串s与编码d的匹配规则为i{0,1,,n1},当且仅当s[i]=d[i]d[i]=X时,位串s与编码d匹配,记为sd. 若该编码所对应的译码项e无排除条件,则位串s与译码项e相匹配,记为se. 例如,位串00001100匹配编码00XXXX00.

    为了能够编码更多指令,在设计指令集时某些编码被添加了排除条件,即对编码中的可变位段设置了取值限制. 若位串的某些可变位段等于特定常数时,则与该编码不匹配.

    一个排除条件包括一个下标集合Iex和一个排除项pex,记为(Iex,pex). 其中,下标是从小到大排列,且与排除项的各位按序一一对应,即将应排除的值的第i位记为pex[i]. 本文方案定义位串s使得排除条件(Iex,pex)成立的判定规则为:iIex,当且仅当s[i]=pex[i]时,位串s使得排除条件(Iex,pex)成立,记为exclude(s,(Iex,pex)). 例如,译码项的排除条件({6,7},00)表示应排除第6位和第7位都为0的位串.

    因此,本文方案定义位串s与具有排除条件的译码项ec=(mc,dc,Cc)的匹配规则为:当且仅当sdc(Ic,pc)Cc,¬exclude(s,(Ic,pc))时,位串s与译码项ec相匹配,记为sec. 例如,位串10100000虽然与名称为I的译码项和名称为J的译码项的编码匹配,但由于名称为I的译码项的排除条件({6,7},00)成立,所以该位串是与名称为J的译码项匹配.

    译码过程是通过逐步查询位串中特定位段的值来获得该位串所匹配的译码项. 本文将这个过程用译码决策树来表示,记为T=(VT,ET). 其中,VT表示节点的集合,ET表示边的集合. 每个节点有唯一标识符,记为nid. 本文将节点分为内部节点和叶节点. 内部节点表示译码选择分支,包含一个特定位的下标集合I和一个元组集合,每个元组由标签和子节点组成,记为(p,vchild). 其中,下标集合中的元素从小到大排列,且与标签的各位按次序一一对应,l为下标集合的长度,标签 p{0,1}l为叶节点,其表示译码查询所匹配的最终结果,包含一个译码项.

    译码决策树示例如图3所示. 内部节点由包含其标识符nid和下标集合I的方框表示,边框为弧线表示该节点在优化过程中被修改过. 叶节点由包含其标识符nid、译码项名称m和译码项编码d的方框表示. 每条从内部节点所出的边的标签 p 和所指向的子节点 vchild由该内部节点中的各个元组(p,vchild)得出.

    图  3  译码决策树示例
    Figure  3.  An example of a decoding decision tree

    本节详细说明了构造译码决策树的算法. 首先,分析了前人的工作[12]并提出了本文方案的译码决策树构造算法,扩展了前人对于内部节点的构造方法并增加了2个优化策略. 此外,本文方案还针对gem5的译码过程对译码决策树和生成的代码做了优化. 最后,给出一个示例来说明每种优化策略所针对的情况和优化效果.

    Okuda等人[12]的算法主要包含3个过程:1) 过程 MakeTree根据给定的译码项集合E递归创建译码决策树的节点及其子节点. 2) 过程MakeNode创建一个无排除条件的内部节点,并将译码项集合E划分为多个子译码项集合,为每个子译码项集合创建子译码决策树. 3) 过程MakeConditionNode创建一个有排除条件的内部节点,并将译码项集合根据是否符合排除条件划分为2个子译码项集合,分别为这2个子译码项集合创建子译码决策树. 此外,该算法是通过与指令长度相等的编码格式来划分子译码项集合. 例如,使用以0开头和以1开头的4位编码格式来划分包含编码为0101和1101的译码项集合.

    Okuda等人[12]的算法存在2个问题:

    1) 过程MakeConditionNode在划分子译码项集合时仅根据其是否符合排除条件分为2类. 对于不符合排除条件但也可被区分的子译码项来说,可能会再次处理该相同位段,导致译码决策树的高度增加.

    2) 算法根据与指令长度相等的编码格式来划分译码项集合,不便于添加额外的优化策略,例如处理个别位的合并或移除操作.

    本文方案的算法基于Okuda等人[12]的算法做了扩展和优化. 在构造内部节点时,本文方案使用下标集合I所确定的多个标签来划分译码项集合,每个译码项根据其编码在该下标集合I处的取值情况划分到不同的标签p下. 本文方案为每个标签的译码项集合构造译码决策树,并将其作为该内部节点的子树. 此外,本文方案修改了过程MakeConditionNode的实现,使其能够根据排除条件的下标集合Iex来区分多个子译码项集合. 并且,本文方案以能够区分出最多子译码项集合的下标集合I来创建节点,这样可以避免重复判断相同位段的值并减少译码决策树的高度.

    本文方案的算法对过程MakeNode和过程 MakeConditionNode做了扩展和优化,见算法1.

    算法1. 译码决策树构建算法.

    输入:译码项集合E、初始译码决策树T

    输出:原地更新后的译码决策树T.

    过程MakeTree(E,T)

    ① 若|E|=1,则创建叶子节点并返回;

    (result,node)MakeNode(E,T)

    ③ if result=FAILED

    ④ return MakeConditionNode(E,T)

    ⑤ else

    ⑥  return node

    ⑦ end if

    过程MakeNode(E,T)

    IsigGetSignificantBits(E)

    ② 若Isig=,则返回(FAILED,nil)

    (isOpt,Isig,Info)SelOptBits(Isig,E)

    ④ 根据Isig更新待处理的下标集合Iunproc

    (t1,Tchild)MakeChild(Info,Iunproc)

    ⑥ if t1=True

    ⑦ (t2,Ire,Infore)ReselOptBits(Isig,E)

    ⑧ if t2=True

    ⑨  isOptTrue

    ⑩   IsigIre

    ⑪  (t3,Tchild)MakeChild(Infore,Iunproc)

    ⑫ end if

    ⑬ end if

    nodeCreateNode(Isig,Tchild,isOpt)

    ⑮ 根据Tchild更新T

    ⑯ return (OK,node).

    过程 MakeConditionNode(E,T)

    (Iex,Info)SelConditionBits(E)

    ② 根据Iex更新待处理的下标集合Iunproc

    TchildMakeChild(Info,Iunproc)

    nodeCreateConditionNode(Iex,Tchild)

    ⑤ 根据Tchild更新T

    ⑥ return node.

    过程MakeNode用于创建一个不使用排除条件的内部节点. 首先,过程GetSignificantBits根据译码项集合E找出一个下标集合Isig,使得所有译码项可以用标签区分. 过程SelOptBits根据下标集合划分各个标签对应的子译码项集合,将结果记为子节点信息Info. 之后检查是否可以通过扩增下标集合以减少译码决策树高度,如果可以优化,则更新下标集合Isig和子节点信息 Info. 过程MakeChild会调用过程MakeTree并根据子节点信息和尚未处理的下标集合来递归创建子节点译码决策树,将结果记为Tchild. 如果创建的子节点译码决策树中存在已优化的节点,则需要通过过程 ReselOptBits再次更新下标集合Isig、子节点信息Info和子节点译码决策树 Tchild. 最后,过程CreateNode创建此内部节点,记录其下标集合Isig和子节点译码决策树Tchild,并设置节点类型是否为已优化节点. 图4展示了优化后的效果,将下标2增加到根节点的判断中,减少了名称为G的译码项和名称为M的译码项所在的层数.

    图  4  使用过程MakeNode优化的译码决策树
    Figure  4.  The decoding decision tree optimized by processMakeNode

    过程MakeConditionNode用于创建使用排除条件的内部节点. 首先,过程SelConditionBits根据译码项集合E从各个译码项的排除条件中找出一个排除条件(Iex,pex),使得根据此下标集合Iex划分得到的标签数量最多,将结果记为子节点信息 Info. 这里没有使用过程MakeNode中的优化方法是因为使用排除条件所得到的标签中一定包含default,之前的优化不适用于这种情况. 之后执行过程 MakeChild,将结果记为Tchild. 最后,过程CreateConditionNode创建此内部节点,记录其下标集合Iex和子节点译码决策树Tchild,并设置节点类型是否为使用排除条件的节点. 图5说明了Okuda 等人[12]的算法对于条件节点的处理,仅判断是否满足排除条件,未考虑相同下标对应多个可区分编码的情况,导致冗余判断. 本文使用下标集合来划分子译码项集合,因此在确定下标集合后,其划分方式与常规内部节点相同,如图3所示.

    图  5  Okuda等人所提算法的条件节点
    Figure  5.  The condition node of Okuda et al’s algorithm

    此外,本文方案新增了过程 OptimizeTree、过程OptimizeNode、过程FixNode和过程FixTree对译码决策树进行整体优化和调整,见算法2.

    算法2. 译码决策树优化算法.

    输入:译码决策树T、译码决策树节点N

    输出:原地更新后的已优化译码决策树T.

    过程OptimizeTree(N,T)

    ① 若N是叶子节点,则返回;

    OptimizeNode(N,T)

    ③ for all NchildN的子节点集合

    ④  OptimizeTree(Nchild,T)

    ⑤ end for

    过程OptimizeNode(N,T)

    IoptGetOptimizableBits(N,T)

    ② 若Iopt为空,则返回;

    Tchild

    ④ for all NleafN的叶子子节点集合

    ⑤  (t3,Tres)GetLeafPattern(Nleaf)

    ⑥ 若t3=True,设置Nleaf为多标签节点;

    ⑦ 根据Tres更新Tchild

    ⑧ end for

    ⑨ for all iIopt

    ⑩  for all NinnerN的内部子节点集合

    ⑪   (t4,Tres)GetInnerPattern(Ninner,i)

    ⑫  若t4=True,将NinnerT中移除;

    ⑬  根据Tres更新Tchild

    ⑭  end for

    ⑮ end for

    UpdateOptimizableNode(T,N,Iopt,Tchild).

    过程FixTree(N,T)

    ① 若N是叶子节点,则返回;

    FixNode(N,T)

    ③ for all NchildN的子节点集合

    ④ FixTree(Nchild,T)

    ⑤ end for

    过程FixNode(N,T)

    ① 在N的所有多标签子节点中查找满足合并条    件的Nmulti

    ② 若不存在Nmulti,则返回;

    ③ 修改NNmulti的分支标签并更新T.

    过程OptimizeTree和过程OptimizeNode用于前序遍历译码决策树中的节点并做优化. 首先,过程GetOptimizableBits 检查节点 N 的内部子节点的下标集合Isig是否仅包含1个元素,将满足条件的下标集合取并集作为待选下标集合. 遍历待选下标集合,检查其他各个内部子节点下的所有译码项是否在该下标处取值相同. 如果存在这样的下标,则将其加入到Iopt中. 之后,对于节点N的每个叶子子节点Nleaf,使用过程 GetLeafPattern修改指向此Nleaf的标签,将结果更新到Tchild中. 遍历下标集合Iopt,对节点 N的每个内部子节点Ninner用过程 GetInnerPattern确认是否需要移除此内部节点,并修改指向此Ninner或其子节点的标签,将结果更新到Tchild中. 最后过程UpdateOptimizableNode修改节点N的下标集合为Iopt,更新子节点译码决策树Tchild,并设置节点类型是否为已优化节点. 图6展示了优化后的效果,将下标4增加到2号节点的判断中,减少了名称为C的译码项和名称为D的译码项所在的层数.

    图  6  在图4的基础上使用过程OptimizeTree优化的译码决策树
    Figure  6.  The decoding decision tree optimized by process OptimizeTree based on fig. 4

    过程FixTree和过程FixNode与前2个过程类似,用于修正指向译码决策树中叶子节点的边,将重复分支的标签合并为default. 图7展示了优化后的效果,由于根节点下的分支数已达到最大且仅有名称为A的译码项对应多个标签,所以本文方案将这些标签合并为default.

    图  7  在图6的基础上使用过程FixTree优化的译码决策树
    Figure  7.  The decoding decision tree optimized by process FixTree based on fig.6

    在gem5的实现中,CPU在译码阶段会先将取指阶段得到的数据传给译码模块,然后调用译码模块来解析指令并得到一个基类指针,在执行阶段会调用其所指向的具体指令对象的执行函数,具体处理流程如图8所示.

    图  8  gem5中的译码和执行流程
    Figure  8.  The decode and execute processes in gem5

    译码模块中的指令解析过程分为2个阶段:预解析阶段(图8 ①)和译码阶段(图8 ②). 首先,预解析阶段的函数 moreBytes() 会根据大小端和指令长度对取指阶段得到的数据块进行处理,得到符合译码要求的具体指令位串. 之后,译码阶段会调用译码函数对该指令位串进行解析. 其中,译码函数的源文件是根据指令集描述语言在编译过程中生成的,其函数体为一个多层嵌套的switch-case结构.

    指令长度是根据位串中特定位的值来判断,这个过程与之后译码函数中的操作存在重复,即预解析阶段和译码阶段都会对同一段指令编码进行判断. 以Cortex-M3指令集为例,16位Thumb指令和32位Arm指令是由指令编码的前5位来区分的,因此预解析阶段和译码阶段都会判断这前5位. 此外,条件指令IT因为其条件执行功能涉及对译码模块的操作,所以会在预解析阶段中被完整解析,但在之后的译码阶段仍会被再次解析以获得一个指向该指令对象的指针.

    为了解决上述问题,本文方案将原方案的译码函数拆分为多个译码函数,并使用函数指针优化调用过程. 具体来说,本文方案的算法会根据指令集描述文件中设置的指令长度下标集合及其取值情况来构造多个译码决策树,从而生成多个译码函数. 此外,本文方案的算法会自动生成预解析阶段所需的指令长度判断函数,以便根据判断结果选择对应的译码函数.

    本文方案搭建了一个对指令进行功能测试的框架,能够根据指令集描述为每条指令生成功能测试用例,并在gem5上运行所生成的测试程序得到测试报告. 该框架主要包括3部分:操作数数据生成、期望值数据计算和测试程序模板.

    以ARM Cortex-M3的AND指令为例,其操作数生成和期望值计算见算法3. 该指令的汇编表示有2种,即AND{S}{cond}Rn,#constant和AND{S}{cond}Rn,Rm,shift. 其中,S表示是否更新状态位,cond表示执行的条件,Rn表示寄存器,#constant表示满足特定格式的立即数,Rmshift表示寄存器及其移位信息.

    算法3. 功能测试用例生成算法.

    输入:指令测试描述info、测试范围range和测试用例数量num

    输出:测试用例列表G.

    过程GenData(info,range,num)

    ① 根据info查找各操作数的生成函数,按操作    数顺序将生成函数添加到opFuncList

    ② 初始测试用例的操作数列表opsList

    ③ for all fopFuncList

    ④ 将f(range,num)生成的一组具体操作数添     加到opsList

    ⑤ end for

    ⑥ for opsopsListT

    ⑦  expectsGenExpAND(info,ops)

    ⑧ 将(expects,ops)添加到G

    ⑨ end for

    ⑩ return G.

    过程GenExpAND(info,ops)

    (S,apsr,op1,op2)ParseOps(info,ops)

    expExecCheck(apsr)

    expResop1&op2

    ④ if S=True

    ⑤ expApsrSetNewApsr(apsr,expRes)

    ⑥ end if

    ⑦ return (expExec,expRes,expApsr).

    过程GenData用于生成操作数数据,根据指令测试描述info、测试范围 range 和测试用例数量 num 来随机生成操作数,并在边界附近多生成一些值,之后调用过程GenExpAND生成期望值expects,最后返回测试用例列表G.

    过程GenExpAND用于生成期望值数据,根据指令测试描述info和操作数ops来计算期望值expects,最后返回结果.

    此外,本文方案准备了一系列测试程序模板,以宏的方式组织汇编指令,能够为每条指令生成相应的汇编文件作为测试程序. 每个用例以宏的方式呈现,例如TEST_AND_R_OP2C(testnum,inst,expExec,expRes,expApsr,Apsr,Rn,Constant)是用于AND指令的第1种汇编表示的宏,参数包括用例编号、被测指令、期望值和操作数.

    本文实验环境的CPU为Intel Core i5-10400 @ 2.90 GHz,内存为32 GB,系统为Linux Mint 20.1 Kernel 5.4.0-89-generic. 本文的gem5配置为系统调用仿真(system call emulation, SE)模式,CPU模型为AtomicSimpleCPU,编译版本为fast. 本文方案中的指令集描述语言使用SLY[18]作为词法和语法分析工具 1,并且修改了gem5的编译脚本,将本文方案整合到项目的构建过程中.

    实验选择Cortex-M3指令集作为待描述的指令集,该指令集在gem5项目中未做实现. 实验分别使用gem5原方案与本文方案实现该指令集,并比较这2种方案的性能以及所生成的代码的运行性能. 此外,在实验前使用第4节的功能测试框架为其生成了指令功能测试用例并确保其能正确执行,即保证所实现的Cortex-M3指令集的译码和执行过程是功能正确的.

    指令集中每条指令编码的查找路径的长度是在译码决策树中根节点到其所对应叶节点的边数,即叶节点v在译码决策树T中的高度,记为HT(v). 将各译码决策树中叶节点高度的平均值记为¯HT,将译码决策树集合中所有叶节点高度的平均值记为¯H.

    比较gem5原方案与本文方案所生成的译码决策树高度,结果如表2所示. Cortex-M3指令集共有226个指令编码. 原方案生成的译码决策树中叶节点的最大高度为10,最小高度为3,总平均高度为5.52. 本文方案共生成4个译码决策树和1个IT指令的译码函数,总平均高度为2.87. 其译码范围是根据预解析阶段所处理的指令前5位取值以及是否为IT指令来划分的,表2中标明了各个译码决策树负责处理的译码范围. 其中,16位指令的译码决策树包含指令编码数量最多,32位指令(以11101开头)的译码决策树的平均高度¯HT最大. 与依赖开发者手动构造译码函数的原方案相比,本文方案在译码决策树高度方面的优化效果较好,并且很大程度上提升了开发效率.

    表  2  在Cortex-M3指令集下2种方案所生成的译码决策树高度的比较
    Table  2.  Comparison of the Height of the Generated Decoding Decision Tree Between Two Methods Under Cortex-M3
    方案译码范围指令编码数量maxHminH¯HT¯H
    gem5原方案所有指令2261035.525.52
    本文方案16位指令79412.232.87
    32位指令(以11101开头)40523.37
    32位指令(以11110开头)45523.11
    32位指令(以11111开头)61613.23
    IT指令1000
    下载: 导出CSV 
    | 显示表格

    此外,统计这2种方案生成译码决策树及其C++源文件的时间和编译后的可执行文件gem5.fast的代码大小,结果如表3所示. 原方案需要开发者手动编写译码决策树,并且需要将模板替换逻辑与指令定义写在同一指令集描述文件中,在解析的同时处理替换过程,耦合度较高. 本文方案仅将指令定义写在指令集描述文件中,之后根据编码信息自动生成译码决策树和C++源文件,所用的总时间比原方案减少了约64%,代码大小减少了约407 KB.

    表  3  在Cortex-M3指令集下2种方案的性能比较
    Table  3.  Comparison of the Performance Between Two Methods Under Cortex-M3
    方案指令集描述文件解析时间/s译码决策树生成时间/s源文件生成时间/s总时间/s代码大小/B
    gem5原方案 不能分阶段统计 0.28213238308
    本文方案0.0730.0220.0060.10112831270
    下载: 导出CSV 
    | 显示表格

    在gem5中运行一些测试程序并比较2种方案的运行性能. 实验使用的测试程序来自Embench[19],这是一个面向嵌入式设备的开源测试集,它包含22个测试程序,支持对真实机器和模拟器的测试. 该测试集原本是通过远程调试器来获取测试函数前后的指令周期数来评估处理器速度,而本文所研究的译码模块优化不影响模拟器中的周期数,所以我们改为获取测试函数前后的实际时间来评估模拟器译码模块的性能,即通过shell命令获取宿主机时间. 为减少额外操作对时间的影响,我们将默认的测试循环次数由1改为10,

    每个用例用时大约在10 s左右. 此外,gem5原本使用了一个译码表来缓存相同地址或相同指令编码的译码结果. 由于实验所用的测试程序都依赖于循环,并且在开始计时前会先运行几轮来预热缓存,导致gem5实际运行时2种方案几乎没有区别. 这与本文实验目的不符,因此我们在测试时关闭了译码缓存功能.

    测试结果如图9所示,原方案平均用时10.24 s,本文方案平均用时8.91 s,比原方案减少了大约13%.

    图  9  在Cortex-M3指令集下2种方案在gem5中运行性能
    Figure  9.  Execution performance of two methods in gem5 Under Cortex-M3

    本文方案的译码决策树生成算法采用划分编码位段的方式,通过计算位段的匹配情况和使用多个优化策略来构建树的节点,从而减少译码过程的时间开销.

    译码过程的搜索时间开销与译码决策树的高度呈正相关. 树的每个内部节点所处理的位数n 决定了该节点的子节点数量上限2n. 对于相同的指令数量,树中内部节点指向新子节点的分支数量越多,树的高度越低. 因此在树的构造过程中需要充分考虑指令长度和编码限制条件,处理节点之间的合并优化.

    为进一步说明改进效果,我们使用本文方案为RV64GC指令集生成了译码决策树并与gem5原方案已实现的译码函数做比较,结果如表4所示. RV64GC指令集的编码设计较为规整,较少使用编码的排除条件,因此其译码决策树的高度整体较为平均. RV64GC实验结果与Cortex-M3类似,本文方案有效降低了译码决策树的最大高度并且优化了平均高度.

    表  4  在RV64GC指令集下2种方案对于所生成的译码决策树高度的比较
    Table  4.  Comparison of the Height of the Generated Decoding Decision Tree Between Two Methods Under RV64GC
    方案译码范围指令编码数量maxHminH¯HT¯H
    gem5原方案所有指令197523.483.48
    本文方案16位指令(以00开头)7111.002.08
    16位指令(以01开头)8211.47
    16位指令(以10开头)12311.58
    32位指令160312.24
    下载: 导出CSV 
    | 显示表格

    本文方案支持使用gem5中提供的接口函数和类型定义(如向量操作),可以用于实现其他指令集架构,例如MIPS和Cortex-A等. 从RV64GC的实验结果可以看出,自动化生成和优化的预解析阶段的辅助函数和译码决策树可以在一定程度上降低译码决策树的平均高度,提升执行效率. 此外,本文方案的指令集描述文件更易被编写与修改,开发效率较高.

    本文方案的编码描述和译码决策树生成算法具有通用性,能够应用于指令译码过程,而功能描述和代码生成阶段则与模拟器的具体实现关系紧密. 若要将本文方案推广到其他模拟器,则还需从实现角度考虑模拟器是否可以采用这种译码和执行流程,以及这种模板替换策略能否与模拟器其他模块适配.

    本文方案解决了模拟器的指令集实现及其功能测试的开发效率问题并提升了gem5译码模块的性能,为添加新指令集或自定义扩展指令的开发与测试提供了一套完整方案. 本文方案设计的指令集描述中定义了指令集的编码描述、功能描述和测试描述,用于生成模拟器的译码模块代码、指令集实现代码和指令功能测试用例. 本文提出了一个针对gem5优化的译码决策树构造算法和一个指令功能测试框架. 该算法使用指令的特定位和排除条件位来判断指令编码,并且允许根据gem5指令预解析阶段的条件划分各个决策树的范围,从而降低译码决策树的平均高度并且减少了原方案中的重复判断,提升执行性能. 此外,该指令功能测试框架可以根据指令集描述生成指令功能测试用例,提升开发效率.

    作者贡献声明:赵紫微为论文工作的主要完成人,负责实验设计与实施、论文撰写;涂航和刘芹审阅论文的内容并提出意见;余涛协助论文功能测试的软件实现;李莉对论文提出修改意见,完善论文思路和实验设计,负责论文审校.

  • 图  1   CADNet的总体架构

    Figure  1.   The overall architecture of CADNet

    图  2   形变卷积细节

    Figure  2.   Details of deformable convolution

    图  3   跨维度协同注意力机制模块

    Figure  3.   Cross-dimensional collaborative attention mechanism blocks

    图  4   不同信噪比下的消融实验结果

    Figure  4.   Experimental results of ablation studies under different SNRs

    表  1   实验数据集

    Table  1   Dataset of Our Experiment

    语音种类数据集分类数量时长/h
    干净语音训练20001.2
    验证1000.06
    测试1920.12
    噪声可见1050.17
    不可见50.4
    混合语音训练2000036
    验证20001.5
    测试7681
    下载: 导出CSV

    表  2   不同信噪比条件下各个模型的指标比较

    Table  2   Indicators Comparison of Different Models Under Different SNR Conditions

    信噪比/dB指标 Noisy模型
    CRNGRNAUNetDARCNCADNet
    −5STOI/%60.8268.2374.1372.2975.3576.35
    071.8980.0383.7182.3484.5985.14
    581.8388.0890.1189.0290.5891.02
    1089.0992.5993.7692.9294.0594.46
    平均/%75.9182.2285.4284.1386.1486.74
    −5PESQ1.431.782.041.972.092.17
    01.762.222.492.412.532.59
    52.152.642.892.802.922.97
    102.472.943.193.103.193.25
    平均1.952.392.652.572.682.75
    −5SI-SDR-5.003.394.924.625.345.72
    00.007.758.998.769.269.67
    54.9911.7812.7812.5112.9313.33
    1010.0015.4316.3415.9416.4216.88
    平均2.499.5910.7510.4510.9811.40
    注:黑体数字表示每种实验设置下的最佳结果.
    下载: 导出CSV

    表  3   不同k值对应的通道注意力模块的实验结果

    Table  3   Experimental results of Channel-Based Attention Modules with Various k values

    kPESQSTOI/%SI-SDR
    32.7486.6111.36
    52.7586.7311.40
    72.7386.5111.17
    92.7586.6011.30
    注:黑体数字表示最优值.
    下载: 导出CSV

    表  4   不同模型的训练参数量和测试时间(每个样本)

    Table  4   Number of Training Parameters and Inference Time (for Each Sample) of Different Models

    模型训练参数量测试时间/s
    CRN1719万0.15
    GRN313万0.11
    DARCN123万0.17
    CADNet72万0.17
    注:黑体数字表示最优值.
    下载: 导出CSV
  • [1]

    Boll S. Suppression of acoustic noise in speech using spectral subtraction[J]. IEEE Transactions on Acoustics Speech & Signal Processing, 1979, 27(2): 113−120

    [2]

    Hu Xiaohu, Wang Shiwei, Zheng Chengshi, et al. A cepstrum-based preprocessing and postprocessing for speech enhancement in adverse environments[J]. Applied Acoustics, 2013, 74(12): 1458−1462 doi: 10.1016/j.apacoust.2013.06.001

    [3]

    Gerkmann T, Hendriks R C. Unbiased MMSE-based noise power estimation with low complexity and low tracking delay[J]. IEEE Transactions on Audio Speech & Language Processing, 2012, 20(4): 1383−1393

    [4]

    Xu Yong, Du Jun, Dai Lirong, et al. A regression approach to speech enhancement based on deep neural networks[J]. IEEE/ACM Transactions on Audio Speech & Language Processing, 2015, 23(1): 7−19

    [5]

    Sun Lei, Du Jun, Dai Lirong, et al. Multiple-target deep learning for LSTM-RNN based speech enhancement [C] //Proc of the 5th Hands-free Speech Communications and Microphone Arrays. Piscataway, NJ: IEEE, 2017: 136 − 140

    [6]

    Pandey A, Wang Deliang. A new framework for CNN based speech enhancement in the time domain[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2019, 27(7): 1179−1188 doi: 10.1109/TASLP.2019.2913512

    [7]

    Kumar A, Florencio D. Speech enhancement in multiple-noise conditions using deep neural networks[J]. arXiv: preprint, arXiv: 1605. 02427, 2016

    [8]

    Xu Yong, Du Jun, Huang Zhen, et al. Multi-objective learning and mask-based post-processing for deep neural network based speech enhancement[J]. arXiv: preprint, arXiv: 1703. 07172, 2017

    [9]

    Kang T G, Shin J W, Kim N S. DNN-based monaural speech enhancement with temporal and spectral variations equalization[J]. Digital Signal Processing, 2017, 74: 102−110

    [10]

    Weninger F, Erdogan H, Watanabe S, et al. Speech enhancement with LSTM recurrent neural networks and its application to noise-robust ASR [C] //Proc of the 12th Int Conf on Latent Variable Analysis and Signal Separation. Berlin: Springer, 2015: 91−99

    [11]

    Shan Dongjing, Zhang Xiongwei, Zhang Chao, et al. A novel encoder-decoder model via NS-LSTM used for bone-conducted speech enhancement[J]. IEEE Access, 2018, 6: 62638−62644 doi: 10.1109/ACCESS.2018.2873728

    [12]

    Gao Tian, Du Jun, Dai Lirong, et al. Densely connected progressive learning for LSTM-based speech enhancement [C] //Proc of the 43rd IEEE Int Conf on Acoustics, Speech and Signal Processing. Piscataway, NJ: IEEE, 2018: 5054−5058

    [13]

    Healy E W, Yoho S E, Wang Yuxuan, et al. An algorithm to improve speech recognition in noise for hearing-impaired listeners[J]. The Journal of the Acoustical Society of America, 2013, 134(4): 3029−3038 doi: 10.1121/1.4820893

    [14]

    Fu Szu-Wei, Tsao Y, Lu Xugang. SNR-aware convolutional neural network modeling for speech enhancement [C] //Proc of the 17th Interspeech 2016. Grenoble, France: ISCA, 2016: 3768−3772

    [15]

    Kounovsky T, Malek J. Single channel speech enhancement using convolutional neural network [C] //Proc of the 13th IEEE Int Workshop of Electronics, Control, Measurement, Signals and Their Application to Mechatronics(ECMSM). Piscataway, NJ: IEEE, 2017: 1−5

    [16]

    Hou Jen-Cheng, Wang Syu-Siang, Lai Ying-Hui, et al. Audio-visual speech enhancement using multimodal deep convolutional neural networks[J]. IEEE Transactions on Emerging Topics in Computational Intelligence, 2018, 2(2): 117−128 doi: 10.1109/TETCI.2017.2784878

    [17]

    Bhat G S, Shankar N, Reddy C, et al. A real-time convolutional neural network based speech enhancement for hearing impaired listeners using smartphone[J]. IEEE Access, 2019, 7: 78421−78433 doi: 10.1109/ACCESS.2019.2922370

    [18]

    Fu Szu-Wei, Tsao Yu, Lu Xugang, et al. Raw waveform-based speech enhancement by fully convolutional networks [C] //Proc of the 8th Asia-Pacific Signal and Information Processing Association Annual Summit and Conf. Piscataway, NJ: IEEE, 2017: 6−12

    [19]

    Park S R, Lee J W. A fully convolutional neural network for speech enhancement [C] //Proc of the 18th Interspeech 2017. Grenoble, France: ISCA, 2017: 1993−1997

    [20]

    Tan Ke, Wang Deliang. A convolutional recurrent neural network for real-time speech enhancement [C] //Proc of the 19th Interspeech 2018. Grenoble, France: ISCA, 2018: 3229−3233

    [21]

    Grzywalski T, Drgas S. Application of recurrent U-net architecture to speech enhancement [C] //Proc of the 22nd Signal Processing: Algorithms, Architectures, Arrangements, and Applications. Piscataway, NJ: IEEE, 2018: 82 − 87

    [22]

    Lan Tian, Lyu Yilan, Ye Wenzheng, et al. Combining multi-perspective attention mechanism with convolutional networks for monaural speech enhancement[J]. IEEE Access, 2020, 8: 78979−78991 doi: 10.1109/ACCESS.2020.2989861

    [23]

    Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint, arXiv: 1409. 0473, 2014

    [24]

    Xu K, Ba J L, Kiros R, et al. Show, attend and tell: Neural image caption generation with visual attention [C] //Proc of the 32nd Int Conf on Machine Learning. New York: ACM, 2015: 2048−2057

    [25]

    Hu Jie, Li Shen, Albanie S, et al. Squeeze-and-excitation networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(8): 2011−2023 doi: 10.1109/TPAMI.2019.2913372

    [26]

    Ding Xiaohan, Zhang Xiangyu, Zhou Yizhuang, et al. Scaling up your kernels to 31x31: Revisiting large kernel design in CNNs[J]. arXiv preprint, arXiv: 2203. 06717, 2022

    [27]

    Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Proc of the 31st Int Conf on Neural Information Processing Systems. Red Hook, NY: Curran Associates, 2017: 6000−6010

    [28]

    Wang Fei, Jiang Mengqing, Qian Chen, et al. Residual attention network for image classification [C] //Proc of the 35th IEEE Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2017: 6450−6458

    [29]

    Dai Jifeng, Qi Haozhi, Xiong Yuwen, et al. Deformable convolutional networks [C] //Proc of the 15th IEEE Int Conf on Computer Vision. Piscataway, NJ: IEEE, 2017: 764−773

    [30]

    Wang Qilong, Wu Banggu, Li Pengfei, et al. ECA-Net: Efficient channel attention for deep convolutional neural networks [C/OL] //Proc of the 38th IEEE/CVF Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2020[2022-06-16]. https://ieeexplore.ieee.org/document/9156697

    [31]

    Ioannou Y, Robertson D, Cipolla R, et al. Deep roots: Improving CNN efficiency with hierarchical filter groups [C] //Proc of the 35th IEEE Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2017: 5977−5986

    [32]

    Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks [C] //Proc of the 35th IEEE Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2017: 5987−5995

    [33]

    Zhang Ting, Qi Guojun, Xiao Bin, et al. Interleaved group convolutions [C] //Proc of the 15th IEEE Int Conf on Computer Vision. Piscataway, NJ: IEEE, 2017: 4383−4392

    [34]

    Garofolo J S, Lamel L F, Fisher W M, et al. TIMIT acoustic-phonetic continuous speech corpus [DB/OL]. Philadelphia, PA: Linguistic Data Consortium. 1993[2022-06-16]. https://catalog.ldc.upenn.edu/LDC93S1

    [35]

    Varga A, Steeneken H. Assessment for automatic speech recognition: II. NOISEX-92: A database and an experiment to study the effect of additive noise on speech recognition systems[J]. Speech Communication, 1993, 12(3): 247−251 doi: 10.1016/0167-6393(93)90095-3

    [36]

    Thiemann J, Ito N, Vincent E. The diverse environments multi-channel acoustic noise database (DEMAND): A database of multichannel environmental noise recordings[J]. Acoustical Society of America, 2013, 133(5): 3591−3597

    [37]

    Taal C H, Hendriks R C, Heusdens R, et al. A short-time objective intelligibility measure for time-frequency weighted noisy speech [C] //Proc of the 31st IEEE Int Conf on Acoustics Speech and Signal Processing. Piscataway, NJ: IEEE, 2010: 4214−4217

    [38]

    Rix A W, Beerends J G, Hollier M P, et al. Perceptual evaluation of speech quality (PESQ): A new method for speech quality assessment of telephone networks and codecs [C] //Proc of the 26th IEEE Int Conf on Acoustics, Speech and Signal Processing. Piscataway, NJ: IEEE, 2001: 749−752

    [39]

    Roux L, Wisdom J, Erdogan S, et al. SDR − half-baked or well done? [C] //Proc of the 44th IEEE Int Conf on Acoustics, Speech and Signal Processing. Piscataway, NJ: IEEE, 2019: 626−630

    [40]

    Tan Ke, Chen Jitong, Wang Deliang. Gated residual networks with dilated convolutions for monaural speech enhancement[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2019, 27(1): 189−198 doi: 10.1109/TASLP.2018.2876171

    [41]

    Oktay O, Schlemper J, Folgoc L L, et al. Attention U-Net: Learning where to look for the pancreas[J]. arXiv preprint, arXiv: 1804. 03999, 2018

    [42]

    Li Andong, Zheng Chengshi, Fan Cunhang, et al. A recursive network with dynamic attention for monaural speech enhancement[J]. arXiv preprint, arXiv: 2003. 12973, 2020

图(4)  /  表(4)
计量
  • 文章访问数:  119
  • HTML全文浏览量:  25
  • PDF下载量:  81
  • 被引次数: 0
出版历程
  • 收稿日期:  2022-01-28
  • 修回日期:  2022-08-07
  • 网络出版日期:  2023-02-26
  • 刊出日期:  2023-06-30

目录

/

返回文章
返回