首页 > 其他分享 >智能语音之远场关键词识别实践(二)

智能语音之远场关键词识别实践(二)

时间:2022-12-19 08:00:10浏览次数:53  
标签:前端 关键词 之远场 降噪 算法 语音 识别率 单声道

上篇(智能语音之远场关键词识别实践(一))讲了“远场关键词识别”项目中后端上的实践。本篇将讲在前端上的一些实践以及将前端和后端连起来形成一个完整的方案。下图是其框图:(麦克风阵列为圆阵且有四个麦克风,即有四个语音通道)

从上图可以看出,前端主要包括去混响、声源定位和波速形成(beamforming)、单通道降噪四大功能模块。每个模块的作用在上篇中已简单描述过,这里就不讲了。每个模块由一个人负责,我负责做单声道降噪。对于每个功能模块来说,通常都会有多种不同的实现算法,不同的算法在性能和运算复杂度上有优劣,因此先要去评估,选择最适合我们项目的算法。评估主要从性能以及运算复杂度两方面去做。评估下来后去混响选择了WPE(Weighted prediction error,加权预测误差)算法,声源定位选择了GCC-PHAT(Generalized Cross Correlation-Phase Transform,广义互相关-相位变换)算法,波速形成选择了MVDR(Minimum Variance Distortionless Response,最小方差无失真响应)算法。单声道降噪不像其他模块只有几种主流的算法,去评估后选择一到两种就可以了。单声道降噪好多年前就研究了,有多种效果不错的算法,且不断有新的算法(比如基于深度学习的算法)提出来。它以前主要用在语音通话中,现在我们要把它用在远场麦克风阵列的语音识别中。我深入的调研了一番,没有文章公开说哪种算法在语音识别中效果较好,市面上主流的产品(比如小度音箱、天猫精灵等)也没说用了哪种单声道降噪算法,只能摸着石头过河了。先前有同事找到了一篇传统方法和深度学习相结合的单声道降噪的文章,大家讨论了一下,觉得有点符合潮流(深度学习),就决定先研究这个。经过一段时间的学习和实践,有了一些输出,也写了关于这个算法理论和实践的几篇文章,具体见《语音降噪论文“A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier”的研读 》,《基于混合模型的语音降噪实践 》,《基于混合模型的语音降噪效果提升 》。这个算法的降噪效果还可以,但是里面有神经网络模型,且参数不少,要求一定的算力,在嵌入式上部署load有点吃紧。讨论后这种算法留作备份,再去研究有没有更适合的算法。考虑到基于深度学习的方法在嵌入式上都不太能部署,就在传统方法中寻找。调研后发现基于MCRA-OMLSA的降噪算法效果很好且运算复杂度不高,讨论后决定试试这种方法。依旧是先学习理论,然后用python实现和tuning看效果。实验做下来效果还是挺好的,就决定用这个算法了。关于MCRA-OMLSA的降噪算法,我也写了三篇文章。具体见《基于MCRA-OMLSA的语音降噪(一):原理 》,《基于MCRA-OMLSA的语音降噪(二):实现 》,《基于MCRA-OMLSA的语音降噪(三):实现(续) 》。

 

当前端的各个模块的算法都python实现完成后就开始把前端和后端串起来看效果,即把前端的输出作为后端的输入看识别率。不过模型是基于先前录的单声道的数据训练的。测试下来发现识别率比先前的降很多。出问题就要找原因和解决方法。大家先分头调查和思考,然后一起讨论。讨论后觉得原因很可能是这个:模型是基于先前单声道的语料训练的,而现在识别时的语音是多声道语音经过前端各算法处理后得到的单声道语音,两者不匹配。要想得到好的识别率,应该基于第二次录得的多声道的语料做完前端各算法处理后得到的单声道的语料来重新训练模型。简而言之,就是要让模型学习一下前端中的各个算法处理。于是基于第二次录得的多声道的语料重新训练模型。先把多声道数据经过前端各算法处理得到单声道数据,再做各种augmentation来增强语料库,最后拿这些处理后的数据去训练得到新的模型。新的模型用上后识别率有了很大的提升。经过实践,我们的经验是要想有好的识别率,模型一定要把pipeline中的各种算法都学习到。

 

在python下有了一个好的识别率,接下来就要看怎么在嵌入式上部署了,即用C语言来做实现。后端的C语言实现已经做好,要做的就是前端各算法的C语言实现。先前负责前端各算法的同学负责实现同样的算法,先用浮点实现。一段时间后各个算法的浮点实现都做好了,再与后端串起来看识别率,结果与python下的基本一致。后面要做的是算法的定点实现。由于team有了更高优先级的任务,只得暂停这方面的工作。只差最后一步就能真正部署了,有点可惜。后面有时间再把它完成吧。

 

远场关键词识别的项目由于参与人少做了近两年。正是因为人少,每个人做的东西就多一些,也就学到的东西多一些。就我自己而言,不仅学到了后端深度学习相关的(模型训练、量化等),也学到了前端信号处理算法相关的,同时通过实践还累积了不少关键词识别相关的经验。

 

标签:前端,关键词,之远场,降噪,算法,语音,识别率,单声道
From: https://www.cnblogs.com/talkaudiodev/p/16990164.html

相关文章

  • 离线语音识别与语音转写初探
    这里写自定义目录标题​​语音离线SDK​​​​科大讯飞​​​​测试结果​​​​百度云​​​​录音环境要求​​​​吵杂的环境​​​​阿里云​​​​腾讯云​​​​有道......
  • Django模板语法及常见ORM关键词
    昨日内容回顾路由分配将本来一层的路由匹配拆分成两层进行匹配,第一层由总路由进行匹配,分配给分路由匹配具体视图,这就是路由分类,通过路由分配可以更方便进行多人开发及......
  • 给含有关键词的label着色
    给含有关键词的label着色FineFileType(){letarr=document.querySelectorAll('.el-checkbox__label');for(letindex=0;index<arr.length;index+......
  • UltraEdit中高亮显示verilog HDL关键词
        UltraEdit是一款功能强大的文本编辑器,可以编辑文字、Hex、ASCII码,可以取代记事本,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,而且即使开启很大的......
  • 科大讯飞语音合成
    一、写在前面的话    讯飞为我们提供了一个很好地平台,语音的相关技术是​​人工智能​​的一项重要组成部分。了解与掌握语音的合成技术更是掌握了一项技能,当然本文......
  • 多领域中文语音识别数据集 WenetSpeech 正式发布——有效下载教程
    声明:作为全网AI领域干货最多的博主之一,❤️不负光阴不负卿❤️❤️​​专栏:AI领域数据资源整理​​❤️之【有效拒绝假数据】​​????Followme????​​,一起Get更多......
  • Python实战案例,tkinter+random模块,实现课堂随机抽选提问并语音播报学生姓名
    先看运行结果前言今天给大家介绍Python实现课堂随机抽选提问并语音播报学生姓名实战案例,废话不多说直接开整~开发工具Python版本:3.8相关模块:tkinter模块time模块......
  • 代码实现WordPress自动关键词keywords与描述description
    以下代码实现的是以标签为关键词;以摘要为描述,如果没有填写摘要,那就自动截取文章前200字为描述。代码原创者未知,如果是你原创的,麻烦告知~~代码实现WordPress自动关键词与描......
  • nginx里面的路径定位关键词root、alias
    nginx里面的路径定位关键词root、alias是有区别的:设置请求资源的目录root/aliasroot:设置请求的根目录语法rootpath;默认值roothtml;位置http、se......
  • 智能语音技术新进展与发展趋势
    在深度学习、大数据和大算力的推动下,以语音增强、识别和合成为代表的智能语音技术已经在众多应用中落地。特为大家整理了一些比较前言的报名,文末可免费获取。No.1智能语音技......