前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >王珺:智能音箱语音技术分享

王珺:智能音箱语音技术分享

原创
作者头像
腾讯云开发者社区技术沙龙
修改2018-09-27 11:52:29
4.1K0
修改2018-09-27 11:52:29
举报
文章被收录于专栏:腾讯云技术沙龙

王珺,腾讯专家研究员,腾讯AI Lab专家研究员,在北大,中科院院声学所、杜比实验室等科研机构有十多年研究经历,专注于语音和声音的信号前处理、增强、抑制、分离等后处理及语音识别的研究。目前的研究兴趣包括音频信号处理、关键词唤醒和多说话人分离以及端到端的语音识别中的关键技术。

这次分享介绍了在研究方面的一系列新的方法和改进,主要是语音识别,语音识别,声纹识别,以及TTS,在落地应用方面,语音识别中心为多个腾讯的产品有技术支持的输出,如腾讯听听和企鹅极光盒子,也在语义解析、语音控制、语音合成方面等方面,融合其他的合作伙伴的先进技术。

在这次分享中我做一个智能音箱语音交互工作流程近期进展的介绍。首先看一下智能音箱交互技术链条,智能音箱它的应用场景都是在家里面,用户和音箱的交互距离,和在手机上的交互距离有明显区别,通常比智能手机上的距离远很多,室内的回声,音乐背景噪声,其他家人的干扰声音,电视等等,我们要处理的环境非常的复杂。

在这样的一个场景中获取、增强,并且分离得到好的语音以进一步识别,是智能音箱要达到好的用户体验所需要克服的第一轮难关。麦克风阵列是比较常用的解决方案之一,在腾讯听听音箱中,就采用了这样一个六个麦克风的环形阵列,能较好的捕捉来自于各个方向的声音。在麦克风采集到声音以后,就需要对这些声音进行处理,这个处理的目的就是把多个麦克风采集到的声音信号作为输入得到清晰的人声,用来更好地做识别。

这里面涉及到的技术包括这里,说话人声检测,回声消除,声源定位,语音增强,出于隐私和能耗的考虑,智能音箱通常都是处于待机状态,通过语音唤醒来激活。那么召回率和误唤醒率是重要的衡量指标,例如,倪老师提到在酒店里面的应用场景,如果误唤醒概率太高将非常影响用户的安全感和体验。

在麦克风阵列处理完了以后,基于说话内容去识别,声纹识别说话人的身份,理解,通过识别和语义处理理解他说话的内容,这方面就涉及后面的2、3、4模块方面的技术。最后的5就是基于说话的类似去理解执行操作的任务,并且通过语音合成的系统,对用户进行回答和响应,在这个过程中怎么去形成一个高质量的、自然的,并且有特色的语音,是我们TTS的研究的重点。

这里系统地介绍了我们关于智能音箱研究范围的链条涉及到的5个步骤,接下来分别对每个步骤做前沿方面的介绍。这里是一个前端的系统,采集到声音之后,首先要做的就是消除噪声,并且分离人声,为下一步唤醒做快速的响应。

AIVP集成了语音检测、声源测向、麦克风阵列波束形成,定向拾音、噪声抑制、混响消除,自动增益等多种远场语音处理模块。

在这里列出来语音唤醒当中一系列的难点,首先是误唤醒,还有噪声,在复杂环境下的唤醒率,再就是非常快的语速的情况下的唤醒,然后就是用儿童的声音去做唤醒。

在唤醒模型上面我们做了一系列算法的升级,由于这个模型算法的升级导致复杂度提升,我们对模型进行压缩,压缩的同时迭代使整体的性能保持在一个合理的操作范围内,此过程中我们的误唤醒率降低了60%以上。

唤醒词相关语音分离与增强目的是分离关键词和其他非关健词的语音,大家可以想象一个场景,当唤醒智能音箱的时候,很有可能你的家人或者其他的干扰人在说另外一个非唤醒词的语音,这个时候就需要这样一个技术,把他们进行分离。

另外一个场景,你在说关健词的时候,旁边有很多的环境噪声,就需要这个分离的处理,这个技术还需要分离与说话人无关的却与文本相关的意思,也就是说这个系统谁都可以来唤醒,只要是与文本相关的。这需要先定义好我的唤醒词是什么,比如说听听音箱9420,这个模型预先设定好的,我们再去做训练。

还有就是辅助关健词唤醒,提高单通道场景的远场噪声鲁棒性,降低对话和其他语音场景的误唤醒率,要达到这个目标,要大幅度提升在复杂场景下的唤醒的性能。

接下来的一块是声纹的识别,所谓声纹的识别技术,其实就是根据说话人的声波的特性来进行身份的辨识,这种技术已经有了非常广泛的应用范围,比如说根据不同的家庭用户,我们就可以给他定制好个性化应用的组合。很显然,不同的人,例如一个家庭里面不同的家庭成员,偏好的应用组合通常有非常大的区别,这是能够区分各人的身份为前提,需要能够通过声纹技术鉴定出来是哪一位家庭成员。

声纹技术还可以判断新用户的性别以及年龄的信息,大家会问这些信息有什么用?举个例子,我们可以在跟智能音箱的互动中做相关的推荐,比方说推荐一首歌,那么为小朋友推荐的他喜欢的歌曲,与为妈妈推荐的歌,及为爸爸推荐的歌,都会有很大区别的——它的基础前提都是要了解用户的性别、年龄。

这里列出来声纹识别目前还存在一些有待攻克的挑战,包括信道的失配,环境噪声,短语音,远场。如果要求一个声纹系统达到很高的识别准确率来确认某说话人的身份,通常需要提供很长的一个句子。但在我们的场景当中,往往是很短的短语,那么基于短语音的声纹识别就是一个要克服的问题。

这是技术层面的挑战,在应用上还有录音冒认、兼容能力等挑战;另外,交互设计是提升用户主观感受非常重要的一环,尤其在声纹这一块。

目前我们遇到一系列的实际问题,手里头用于训练的数据还是偏少,在声纹认证中至少要2000人才能得到比较好的效果,目前我们还在持续的采集中。另外,在工程实现上,还存在唤醒词截取不干净、不准确等等问题。

声纹模型还应当具备兼容确认和辨别功能,支持隐式更新和隐式注册,随着用户使用时间的增强,系统的性能可以逐渐地提高。这个图的意思是我们的用户用的越久系统就会越懂用户,通过多识别任务融合,能够不断收集数据,并且更新我们的系统。

基于声纹的特征,会提供用户的性别和年龄段的属性,无论用户是否注册过,在唤醒之后声纹的系统会判别用户的年龄和性别,此后的互动中就可以做相关的推荐了。目前我们已经采用了多种声纹算法,在已经实现的声纹算法之外,我们也在探索自有的新的声纹算法,这个方法是为了解决挑战——特别短的语音声纹识别技术的问题。

目前我们在短语音方面已经达到了比主流的算法更加精确的识别效果,同时也在进行多系统融合的开发工作。合理布局全局的框架,把我们的创新性的声纹算法和经典的算法融合达到拥有最精准的识别能力。

如果大家感兴趣的话可以去看一下我们发表的相关文献,其中有声纹识别出来的框架,它的好处是可以提取出来更加鲁棒的,更加具有鉴别性的声纹特征,用于声纹识别的系统,具体文献在本文底部。

介绍完声纹,做好了用户的认定之后,声音就可以用于语音识别的模块。大家都知道语音识别技术经历了非常长时间的发展,在智能手机上面都已经体验过了不错的效果,已经是可用乃至非常满意的效果。但是我们要处理的是噪声环境,有许多说话人的场景,以及多语言混杂的问题等,这一系列的难题还有待解决。我们主要的工作就是提出解决方案,在各个方面去做一些提升和改进。

语音识别在输入特征上,可以提取各种的云特征,包括MFCC/LMFB等,这些输入到模型网络结构,在我们系统里面,我们尝试和比较了目前的比较稳定和前沿的一些网络结构,包括前面提到的TDNN,TDNN+LSTM;再上一层是语音的建模单元,选择CD state,或Syllable,Character等scale作为建模单元,再上一层定义的是训练准则及框架,我们主要采用的有CTC的训练准则,还有Attention的训练准则和sMBR/MMI和Teacher-Student框架,综上我们得到一个综合的最优的系统。

我们的一种语音识别解决方案是结合了说话人特征的个性化识别模型,能够为每位用户提取并保存自己个性化的声学特征信息。随着用户数据积累,用户识别准确率可持续提升。

大家看一下最后的结果,结合前面声纹得到的用户说话人特征的信息,输入到我们的语音识别模型里面,比较一下,黄色是采用了说话人特征的识别结果,蓝色是则采用之前的没有特征的识别结果,可以得到2%字准的增加。

关于中英文混合的模型,我们实现了单元共享和参数共享,我们技术的特点包括完整英文发音集合,英文单词准确的标注,以及在中英文切换的边界上做精准的建模,即系统会精准地判断哪里是中英文切换的边界。最后得到的效果是可以在保持中文识别性能的前提下,英文识别的准确率从原来的10%做到现在的90%,无论处理中文、英文,还是中英文混合,这个系统均能获得比较好的准确率。

下面是音节与汉字结合建模。我们创新性独有的技术实现了音节与汉字单元相融合的建模方法,同时解码速度相比目前的CD phone模型获得显著的提升。

关于语言模型的最新的技术,我们采用一遍百亿级n-gram的超大语言模型,加二遍Lstm+adaptive-softmax快速rescore,类语言模型+slot语言模型是两层语言模型框架,能较好地支持音箱等类助手业务场景,支持线上语言模型动态插值,可以秒级快速修复bad-case以及bad-case相关的语法。

在TTS方面,对于我们智能音箱而言,交互是用户对音箱的能力最直观,也是最深刻的一个感知,要达到合成语音,首要的是要清晰、流畅、准确、自然,达到最基本的要求之外,一些个性化和有特色的声音,也会成为一些加分项。我们在这一块做了一些技术的积累,主要是实现端到端的合成技术和重音语调的合成技术,并且在不同风格的语音合成上也取得不错的进展。

接下来给大家进一步深入到一些更偏技术的,如你在使用智能语音设备的时候旁边有干扰说话人的声音,这个基于唤醒词信息的目标说话人语音提取技术就是为了处理这种场景的。

目前别人最新的技术有哪些缺陷呢?首先就是拓展性差,所谓拓展性差已有技术都是针对某一个闭集的说话人,专用的训练方法,他的缺点没有办法用于一个没有见过的目标说话人,不能有效的捕捉目标说话人的特征。另外一块的缺陷是这些技术的要求通常比较高,比如说目前用的最多是波束形成深度学习方法,通常都是要求平均至少10秒的自适应语音,远超真实应用场景可接受的自适应语长度,其可用性差,不易落地。我们的一个技术攻关目标就是技术上更优,包括信号的失真比,主观语音质量评估,干扰说话人数、鲁棒性。从系统实时性,模型参数复杂度,还包括:拓展性,可用性,深度研究价值——我们的方法能不能进一步拓展到没有适应语音的情况,进行全方面评估

我们提出这个框架结构如右图所示,心理学的声学研究发现人类处理信号的时候有注意力选择的机制,先采用某一种注意力采集机制,根据这个点反馈循环回去,对于后面的信号进行选择性的增强。从这一点出发,我们采用双重的嵌入空间映射“深度采取网络”。这是一个混合语音,我们通过LSTM的网络结构计算出来的平均值,得到一个提取向量,这两个向量大家可以理解为一种距离,如果它们的距离近,离我们要提取的目标说话人就更近一些,越近权重越大,权重越大则提取出来的概率越大。我们在第一层的嵌入空间基础上再加入一层,第二层的过程相当于把这个空间之间的相对位置通过嵌入网络结算出来一个信息,这个信息包含的不是绝对位置,而是相对位置,有了这个相对位置再重复刚才的过程和操作。

这个时候大家可能有一个疑问,为什么使用一层空间不够?为什么还加一层嵌入空间?给大家看一下我们的仿真结果图,右边这个是只用一层的嵌入空间得到的结果,这些黄点是我刚才说的嵌入向量,红色的叉是它们的中心点,我们期望它们都聚在一堆,但在这个空间里面提取出来的点,它会堆成几堆,聚出若干个中心点。应该选择哪个跟谁比较距离来提取目标说话人呢?对于我们来说无从选择,这是它的缺陷。通过我们构建双重的嵌入空间,大家再看左图的黄点分布,它们的分布集中在一个相对密集的区域,并且没有多个的分布,我们可以很可靠的计算出它的中心点。这个深蓝色的是我们测试时候的语音的分布,浅蓝色是干扰人语音的分布,黄色是训练集的标准提取向量。通过计算它们的距离,能够非常好地提取还原出来我们的目标说话人的语音。

下面听几个音频。首先是原始的混合音频,(播放语音)这个是分离之后的目标说话人的音频(播放语音);这是另一段原始的混合的混合音频(播放语音)下面是分离出来的目标人群。大家可以看到,用我们的技术可以比较好的分离出来目标说话人,而且我们的输入是一个单通道的信号,单通道比多通道少很多的信息,尤其是空间多方面的信息,它是语音识别里面最难的任务。目前的分离不能说完美,也会听到一些残留的干扰说话人的声音,这是因为有少部分干扰点有时候会落到目标说话人点的分布里面。

最后给大家分享的是端到端语言识别的Attention建模方法的关键技术点,最前沿的序列到序列技术,有它的优点和缺点,CTC的方法是序列到序列的经典的方法,它的优势是从左到右的序列到序列模型,比较简单,解码速度快;但同时又有缺陷,模型建立的前提是假设当下帧的输出和之前的输出标注是相互独立的,而在语音信号里面其实这一点是不成立的。基于Attention的建模的优点是不需要假设独立,对下一单元的预测可以用到声学模型和语言模型的分析,相当于一种自带语言模型的方法。但是也有非常明显的缺陷,Attention没有限制从左到右的对齐,最后出来的结果,有可能全都堆在了底部,这是一种典型的错误的对齐,或者不遵循从左到右的对齐,前面的语音对到后面的文本,也是一种典型的错误。我们提出CTC和Attention结合的方法,如图所示,所得到的结果都是正确的对齐的,目前研究人员也是尽力的缩小Attention的方法和经典的混合系统的差距,这些方法无非是增加一些外部语言模型,但一定意义上违背了Attention原始的初衷,原始的初衷是简单,引入了以后导致系统训练和调试过程越来越复杂,以至于和原来经典的混合系统比,其实也没有多大的优势了。

这里我们有一些关键技术点,其中一块是引入最小风险贝叶斯决策(MBR)损失,并结合交叉熵损失作为初始化方法,对于成功的MBR训练非常关键,还有把softmax Smoothing用于N-Best,生成更好的序列到序列假设,解决了序列到序列生成假设过程中易于强预测的问题。

提出解码器反馈输入的结构,原Attention:解码器输入仅包括上下文向量Ci-1,该向量编码了Attention隐状态所有信息。

减轻序列到序列模型容易过拟合的问题,通过speed permutation扩张训练数据(3Xdata)和采用dropout并调整超参。

另外一个想分享的关键技术点是提出Attention转化层,因为CTC和Attention直接融合的效果比较差,我们分析本质原因是CTC架构和Attention的架构要求不同的隐层特性,故提出增加“Attention转化层”(具体实现中我们采用两层BLSTM)来实现它们之间的转化。

怎么结合做训练呢?分几种,一种是预训练的方法,用CTC训练初始化解码器参数,然后做Attention模型的训练,第二种是联合训练,第三种是替换训练。

这里是我们的方法,刚才介绍的关键技术点,随着那些关键技术点的引入,我们可以看到它指标的趋势,随着我们逐步地优化深度融合的方法,外部语言模型的作用越来越少,直到可以忽略,满足了Attention模型的初衷,它要很简洁,不需要外面语言模型的引入也可以达到匹配的效果,达到了端到端简洁的设计之美,这是具体实验比对的结果。

蓝线是没有引用外部语言的模型的系统,橙线是引用了外部语言的模型,可以看到,随着各个关键技术点的引入,我们最后在没有用到外部语言模型的情况下,也可以达到非常有竞争力、非常好的结果。

上面列出来的一系列的技术,都可以参考一下我们发表的文献,如果感兴趣的话可以进一步阅读帮助理解我刚才的分享。

谢谢大家。

Q&A

Q:当语音识别碰到很多方言的时候能够识别吗?

A:方言是个老大难的问题,说到底还是缺乏足够的数据。

Q:中国有很多的方言,不可能每个人都讲普通话的。

A:对,你说的是非常实际的问题,我们确实要引入ABC,A是Algorithm算法,B是Bigdata我们的数据,C是Computation表示计算。中间一环对于方言问题来说是弱环,不是说我们没有算法,只是数据不够,我没有办法拿到那么多方言的标注,这是一个非常费人力的问题。

Q:每个县有两种方言,中国有很多县,也要不了多少功夫。

A:这方面的数据库非常的昂贵,数据采集和标注过程是非常耗费人力的。

Q:有一个问题想请教一下,是不是同时提取噪声的效果更好一些?涉及处理先后的问题,因为滤波系统有噪声。

A:还是基于实践,我们是一个经验性的实验结果,用这种顺序的话我们能够达到最后的结果。

Q:因为我是做通讯的。

A:从你们的原理上来看应该是反过来的。

Q:我们需要噪声的参数,你不需要噪声的参数,我不明白为什么是这样的顺序?是基于经验?

A:对,不是因为复杂度的问题,我们确实没有一个理论支持。但不是为了减少复杂度而损失性能。

Q:选择先后顺序的一个算法结构?

A:实验的结果是这个样子,如果理论上和我们实验经验有矛盾的话,其实是一个值得深究的点,为什么会产生矛盾?我会把这个意见带给相关的同事。

附件如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档