资讯专栏INFORMATION COLUMN

关键词检测任务调研(Keyword Spotting)(4)

miracledan / 1628人阅读

摘要:性能在谷歌语音命令数据集上准确率,且参数只有关键字定位是一项旨在检测音频流中预先训练好的单词的任务。其中一个应用就是唤醒词检测。事实上,捕获不同尺度的时间信息是很重要的,因为关键字的特征在时间尺度上通常是不同的。验证集测试集各。

目录

说明

Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution 

Abstract 

Introduction

Method 

Experiment

Conclusion

笔者发言 


说明

本文是一些论文的简要,想了解具体内容可以下载原文进行阅读,若是读者对下面文章进行参考,请进行规范引用。

Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution 

Li, Ximin et al. “Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution.” ArXiv abs/2010.09960 (2020): n. pag. 

Abstract 

(1) the trade-off between small footprint and high accuracy for KWS(关键词定位) task.

(2) 我们提出了一个多分支时间卷积模块(MTConv),训练阶段替换标准的时间卷积层,性能更好。有多个size不同的时间卷积滤波器,丰富了时间特征空间

(3) 模型在时间和深度上的利用,可以在KWS系统成为一个时间高效的神将网络(TENet)。

(4) MTConv在inference阶段,可以等价地转换为基本卷积结构,这样比起base model,我们不会增加额外的参数和训练成本。

(5) 性能在谷歌语音命令数据集上准确率96.8%,且参数只有100K.

Introduction

 (1) 关键字定位(KWS)是一项旨在检测音频流中预先训练好的单词的任务。其中一个应用就是唤醒词检测

(2) 唤醒词检测:用来启动与移动设备的语音助手的交互,设备资源有限,但是要实现持续监听特征词,所有高精度、低延迟以及低占用空间仍然具有挑战性。

(3) DNNs已经被证明能够为KWS提供有效的small-footprint solutions。尤其一些先进的架构,如CNNs,准确性不错under limited memory footprint as well as computational resource scenarios(有限内存占用和有限的计算资源)。

(4) 第一个问题:基于2D-CNN的方法,网络浅时很难捕获低高频之间的依赖性。为解决该问题,在一些工作中,[8,9]利用一维时间卷积来提取高级频率特征。尽管它们取得了成功,但由于固定的核大小(即二维卷积为3×3,9×1为1维卷积),因此没有考虑到聚合短期和长期时间信息特征的能力。事实上,捕获不同尺度的时间信息是很重要的,因为关键字的特征在时间尺度上通常是不同的。

(5) 本文方法

  • 时间特真丰富,
  • MTConv可以等价地转换为具有增强核的原始时间卷积层,使得输出与标准时间卷积的输出一样。
  • 占用内存与准确度之间有个比较好的平衡,我们提出的TENet,由1×1 convolution, 9×1 depthwise convolution and 1 × 1 convolution构成的倒置瓶颈块。

(6) 贡献

  • 我们提出了一种基于深度时间卷积的时间高效神经网络
  • 进一步提出多分支的时间卷积模块MTConv,以获得多尺度时间特征,它在inference阶段可以转化成标准的时间卷积。(训练阶段是MTConv,推理阶段转化为标准时间卷积STConv
  • 我们的base TENet inference获得96.6%的准确性,
  • 换成MTConv训练,inference时的kernel fusion mechanism,使得性能提高到96.8%。

Method 

(1)数据处理:

  •  先带通滤波器去噪,然后40维的MFCC(30ms的window size and 10ms frame shift),最后将MFCC作为输入数据送入神经网络。维度:(T,F)帧数*40

(2) TENet【8】:

   1) 首先将输入的MFCC特征视为时间序列,维度[T,1,F],因此模型中的所有卷积都沿时间维度。

   2) 模型结构受[11]启发,TENet的主要模块IBB(倒置瓶颈块),带残差的瓶颈时间去分离卷积。(顶和底瓶颈,中间膨胀层,两者之间的channel size比值为1:3)

  • Conv1x1:通过扩大信道数,将输入嵌入高维子空间,
  • 深度Conv9x1:将tensor重新转化为低位紧的子空间,用于信道间的信息传输。它是时间卷积的重要模块,每个信道一个卷积滤波器来执行实现轻量级滤波,伴随着非线性变换。
  • Conv1x1:当输入和输出的大小不匹配时,利用1×1卷积来匹配维度。

   3) 通过叠加IBB层,可以很容易地构建时间高效的神经网络。

(3) Multi-Scale Temporal Convolution:

    1) 在训练阶段,将深度卷积替换为MTConvs进行训练,在推理阶段,MTConv训练的TENet可以等价地转换为基础TENet,这节省了模型参数和计算成本。

   2) MTConvs是具有不同的核大小和批归一化

   3) 具体地说,MTConv中每个分支的内核大小彼此不同,从而帮助该分支从自己的时间粒度中学习独特的模式。膨胀区新增两个分支,增强了捕获短期时间特征的能力。

 

   4) Relu的输入并不是concat每个分支的输出,而是以元素的方式将每个分支的输出相加。  (多尺度核    融合   一个增强核)

   5) 标准卷积训练的核  VS.  增强核:后者包含更丰富的时间信息,从而产生更好的性能。

 (4)  Kernel Fusion of MTConv(核融合)

   1) 输入M:[T,1,C],  C个滤波器的concatenation  F:[D,1,C],(kernel size of D × 1 and C filters)

       输出O:[T,1,C]

                    M                                       F

       所以第j个滤波器输出的第t个元素,再通过batch normalization后为:  

       

       K = (D-1)/2,且D为基数,如9,5,3,则对应k=4,2,1

   2) 再变成多分支,为了方便融合,所以三个F按照最大的k(即4)来补零。

       根据方程(2),我们对小内核做零填充,这样所有的内核都具有相同的大小,

    

         成为多尺度增强核。

      

        这也应证了上文说的MTConv等价于是带有ˆF核βˆ偏差的,且去掉标准化的卷积。 

Experiment

 (1) 谷歌的数据是:上千人关于30中不同的关键词的一秒长的发音文件,总共有65k个文件。80%训练。验证集测试集各10%。

(2) 训练数据中随机80%增加了一些服从非均匀分布(0,0.1)的噪声,作为背景噪声,还增加了随机时移:(-100,100)ms之间的值

(3) 初始30K学习率为0.01,每10k衰减0.1.,batchsize=100,标准权重衰减设置为0.00004.

(4) 我们分别用MTConv和标准卷积来训练TENet的所有四个实现,每个实现都经过20次的平均性能训练。  TENet6,TENet12,TENet6-narrow,TENet12-narrow,四种

(5) 默认的MTConv由四个分支组成,分别包含3×1、5×1、7×1和9×1卷积核。

(6) 性能指标:accuracy模型的参数数量以及multiply操作

(7) 结果:

  • 不加MTConv时的TENet,比起别人的方法[7]、[8],我们的性能不错,且模型参数少,multiply数也少。
  • 加入MTConv:四种配置的TENet都有性能提升了0.15% ~0.32%。
  • 分支越多,性能越好。

Conclusion

(1) 轻量级、高效的、占用内存小的KWS,

(2) 为了同时聚合短期和长期的时间信息特征,我们引入了一个具有不同核大小的多分支时间卷积模块,丰富了时间特征空间,以获得更好的性能。

(3) 我们的基本模型(TENet)性能接近目前最先进的模型,且我们只用了他们1/3的参数量,乘法操作也少。

(4) 引入了MTConv, 但由于核融合机制,没有增加额外的参数或计算成本。

笔者发言 

  • 关于关键词检测任务,读者想了解更多文章可以去 关键词检测任务调研(Keyword Spotting)(1)https://blog.csdn.net/LJJ_12/article/details/120079279  中一览,
  • 然后可以去 https://www.semanticscholar.org/ 根据关键词进行文章搜索,完成自己的探索
  • 我只是分享自己的一点学习成果,这只是KWS任务的冰山一角,还有很多有效的方法等待你去挖掘
  • 相关代码(谷歌的):https://github.com/hyperconnect/TC-ResNet 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119126.html

相关文章

  • 键词检测任务调研Keyword Spotting)(2)

    摘要:目前谷歌的系统使用深度神经网络,它被训练来预测子关键字目标。通过平均不同局部时间和频率区域的的输出来捕获参数少得多的平移不变性。特征提取和后验处理阶段与第节保持相同。 目录 Convolutional neural networks for small-footprint keyword ...

    Yumenokanata 评论0 收藏0
  • “人工智能基础”课程笔记

    摘要:自然语言处理研究方向文本分类与聚类文章标签和摘要提取文本审核与舆情分析机器翻译阅读理解聊天机器人搜索引擎等。应用文本基本任务预处理向量化分词词性标注文本结构化。 ...

    lauren_liuling 评论0 收藏0
  • 自己写VIM语法高亮插件

    摘要:语法高亮插件语法高亮插件需要两个文件。语法检测当读取或创建时,将后缀的文件类型设置为,之后使用类型的语法高亮方案进行着色。语法高亮这是文本的重点,该文件告诉该怎么着色。 实习之后发现,一切代码活动都局限在一个终端界面了。由于一些安全原因和开发环境的方便,开发都是通过远程ssh到开发机上开发,自然也就只有终端界面了。VNC因为安全原因不让用,所以就别妄想使用Clion等IDE来开发了。在...

    宠来也 评论0 收藏0
  • 深入理解 Java 多线程系列(1)——一个简单需求的并行改造 & Java多线程的通信问题

    摘要:所以接下来,我们需要简单的介绍下多线程中的并发通信模型。比如中,以及各种锁机制,均为了解决线程间公共状态的串行访问问题。 并发的学习门槛较高,相较单纯的罗列并发编程 API 的枯燥被动学习方式,本系列文章试图用一个简单的栗子,一步步结合并发编程的相关知识分析旧有实现的不足,再实现逻辑进行分析改进,试图展示例子背后的并发工具与实现原理。 本文是本系列的第一篇文章,提出了一个简单的业务场景...

    ruicbAndroid 评论0 收藏0
  • 前端做模糊搜索

    摘要:到目前为止我们只实现了搜索功能,按更优的体验来讲,在搜索结果中,要优先把相连匹配的放在首位,如关键字,要把结果放到前面。 我们先看一下效果图:showImg(https://segmentfault.com/img/remote/1460000015486183?w=199&h=107); 这是搜索关键字cfg时,会自动匹配到config方法 同样,我们再看另一个例子 showImg(...

    shadowbook 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<