【技术揭秘】任务型语音对话中的纠错系统

简介: 本文主要详细介绍语音对话中的纠错系统。纠错系统旨在对错误的语音识别结果进行鲁棒理解和修正,给业务后续搜索提供更准确的输入,以及改善识别展示结果。
来源 阿里语音AI 公众号

1.背景

任务型语音对话系统主要由以下的模块组成,分别是语音识别(ASR)、自然语言理解(语义理解, NLU)、对话管理(DM)、自然语言生成(NLG)和语音合成(TTS)。

image.png
图 1任务型语音对话系统交互流程

语音识别是任务型对话系统交互任务唤醒后的首要环节,也是后续模块处理的基础。然而在语音交互过程中,说话人的口音、环境噪音,或者语句内容本身的同音多词等因素,会造成语音识别错误。图1展示的串行流程的语音对话系统中,识别错误会逐级传递放大,并累积至后续链路,最终造成对话任务的失败。

image.png
图 2错误累积图示

本文主要详细介绍语音对话中的纠错系统。纠错系统旨在对错误的语音识别结果进行鲁棒理解和修正,给业务后续搜索提供更准确的输入,以及改善识别展示结果。

image.png
图 3纠错示例

纠错系统将主要应用在以下业务中:

智能语音电视,使得人们可以通过语音对话技术来控制电视机,包括使用语音来搜索播放歌曲、视频、进行各种命令控制以及查询信息服务等,从繁琐的遥控器文字输入中解脱出来。

高德语音助手,秉承AI赋能出行业务的目标,通过语音交互的方式高效搜索地点规划路线、查询多种内容服务、操作各种出行设置,让用户在导航过程中解放双手,降低行驶过程中操作屏幕的风险。

2.研究现状

在文本纠错任务上, 学术界目前的主流是使用端到端模型, 输入是原始文本,输出是纠错后的文本。最近ICASSP2020的论文[1], 使用基于BERT的神经网络翻译(NMT)模型对语音识别结果进行纠正。这样的方式避免了人工特征提取的步骤,依靠端到端模型“直接”完成纠错任务。ACL2020的论文 [2],通过联合训练基于BiGRU的检测网络和基于BERT的修正网络,预测输入序列每个位置对应的纠正词。这些模型都需要大量高质量的训练数据保障模型效果。同时,端到端的模型无法直接更新纠错词库,需要重新训练模型或增加额外模块。

另一个方向是工业界普遍采用的分阶段纠错架构,通常分为错误检测、候选召回、纠错排序、纠错结果评估等多个阶段。分阶段模块化的设计,方便各模块单独优化,落地的效果比较好。友商的纠错系统,有的是基于通用领域的纠错,有的是针对文法、拼写错误场景的纠错,而我们的纠错任务面向任务型对话垂直领域的语音识别文本,需要针对我们实际的业务需求设计纠错架构。

3.问题和痛点

在系统的分析了我们的纠错任务面临的问题和痛点之后, 我们做了相应的纠错系统设计, 如下表总结。我们的目标是构建高效、易复用、可闭环的纠错系统,解决系统和业务上的问题和痛点。

image.png

4.纠错系统介绍

4.1整体框架

整体上我们采用分阶段的纠错架构,来解决任务型语音对话中的识别错误问题。纠错系统主要有三个模块组成,分别是实体词抽取、纠错候选召回和纠错候选排序。纠错系统的最终输出,可以用于后续链路的搜索,以及修正语音识别回显文字。

image.png
图 4纠错系统整体架构

4.2实体词抽取

实体词抽取模块负责抽取句子中的实体词, 完成错误定位。任务型对话系统的语音识别输入通常是短文本,意图都是限定领域的。一个常见的用户输入通常包含多个组成部分,包括动词、实体词、语气词等。其中,动词和实体词是句子中的关键信息。动词变化少,ASR识别较少出错,而实体词量级巨大,往往是ASR识别错误最多的部分。所以,我们可以将错误定位的任务转化为实体词抽取任务。

image.png
图 5实体词抽取模块输入输出

我们使用BERT模型作为实体词抽取模型。具体的,我们首先采用AliNLP工具对输入语句进行分词和词性标注,并引入业务相关的词典信息,对每个词标注词典信息。BERT的输入特征包含词信息、词性信息、词典信息以及位置信息。

我们首先采用中文维基数据进行BERT预训练,任务分别是句子填空和下一句预测,再使用标注语料在我们的任务上进行fine-tune。虽然BERT是命名实体抽取任务的state-of-the-art (SOTA) 模型,但是在我们的实体词抽取任务中,最初只达到了83.04% F1 score。分析错误case,发现问题主要集中在语音识别错误的情况下,而这恰恰是纠错系统需要解决的场景。因此,针对这个问题,我们对训练数据进行增强。我们使用业务NLU语法规则 (JSGF) 展开 (图7) 来丰富训练数据,将训练数据量级提升至百万级别。然后我们模拟真实语音识别的错误分布,引入了约20%包含识别错误的数据。识别错误的样本中,替换错误约占77%,删除错误占18%,插入错误占5%。进行数据增强后,我们的训练数据分布基本与线上实际分布一致,重新训练调优后,实体词抽取F1 score从 83.04% 优化至95.58%。

image.png
图 6实体词抽取实验结果

image.png
图 7使用业务规则生成训练数据

image.png
图 8语音识别错误分布

4.3纠错候选召回

纠错候选召回模块用来召回可能的纠错结果。根据不同业务的需求,我们建立了三种可选的召回链路。

第一种是基于本地自建的召回方式。经典的召回算法有基于编辑距离和基于倒排索引的方式。基于编辑距离的算法需要遍历词库中的所有词条,非常耗时。即使使用基于优化搜索空间的BK-tree算法[3],在选取编辑距离等于2的条件下,仍需要计算约20%词条的编辑距离。而业务实体词库中的词条数量基本都是百万以上级别的,这样的算法远远达不到接入的性能要求。基于倒排索引的算法可以有效解决效率问题,传统方法使用分词后的词汇作为索引来存储。但是纠错系统中的召回步骤,搜索串往往是包含错误的,分词后查询难以匹配正确的词条。所以,我们采用基于拼音索引的方式来存储,即使包含错误,查询操作仍具有泛化性。为了保证召回数量可控,我们提出了一种基于可回退的拼音n-gram倒排索引算法,如图9所示,建立索引时使用各阶拼音n-gram作为键值,召回时优先查询高阶键值,无法满足数量阈值时回退到低阶键值查询,保证召回数量。图9展示了建立索引时的流程:获取词典条目后,使用业务规则 (例如图10)对词条进行泛化以及获取别名,随后通过我们提出的基于可回退的拼音n-gram倒排序算法,以各阶拼音n-gram作为键值存储词条。

image.png
图 9可回退的拼音n-gram倒排索引算法建立索引流程

image.png
图 10业务泛化规则

对比经典的搜索算法,我们的算法在召回速度和数量上均达到了最优。

image.png
图 11召回算法对比。视频名词库约50万条,query=小猪倍琦

第二种召回方式是使用开源的Elastic Search引擎进行召回。我们采用词条的拼音名作为索引项,按照词条长度以及城市信息对索引表进行分片,多机房部署服务,降低网络开销。最终在保证召回效果的情况下,我们将ES搜索耗时降低到10ms以内,满足了业务接入需求。

第三种召回方式是使用业务方自带的搜索接口,比如高德地名查询、虾米音乐查询、优酷视频查询等。在不增加额外开发工作的情况下,可以进一步丰富我们的召回链路。

image.png
图 12搜索召回处理流程

图12展示了处理搜索召回的流程。对于实体词抽取结果,我们根据一定的业务规则进行预处理,生成多个候选结果,提供给纠错排序模块处理。

4.4纠错候选排序

纠错候选排序模块,根据各种特征,对所有召回结果做一个排序,得到最终匹配结果提供给后续业务使用。

image.png
图 13纠错候选排序模块流程

图13展示了纠错候选排序的整体流程。纠错系统上线前,最大的问题是数据冷启动。对此,我们首先构建了一种基于规则的pointwise排序算法。核心思想是定义一系列匹配先验规则,综合构成匹配计算函数,对每一个召回结果计算得分,并根据得分进行整体排序。

给定用户语音识别结果image.png,对每个召回结果image.png,我们计算匹配度

image.png

其中image.png是手工调整的匹配系数, image.png是根据众包数据总结出来的匹配先验规则,主要有以下层面:

  • 拼音层面:声母近似(平翘舌等)、韵母近似(前后鼻音等)、整体近音、方言等
  • 字层面:编辑距离、公共子串、公共子序列等
  • 业务层面:PV、城市信息等

对每个匹配先验规则image.png,我们将其得分归一化至0-1区间,系数image.png求和值为1,最后得到的匹配度得分image.png分布于0-1区间。

由于规则算法需要构建大量的匹配规则并手工调整系数,我们接下来使用了基于模型的pointwise排序算法,对每个召回样本进行二分类,选取正例结果对应概率作为置信度,参与整体样本排序。同样的,由于上线前我们没有真实的训练数据,我们采样选取了数百万条实体词条,模拟语音识别错误,生成对应的模拟用户输入结果。通过规则排序算法进行自动标注,按照正负例1:10的比例选取约十万条数据用于最终的模型训练。

我们将上述匹配先验规则作为模型的特征输入,分别对比了LR、SVR、MLP、Wide & Deep等模型。由于整体数据量数据偏少,在我们的测试集上,深度模型的效果并不佳,相比之下SVR模型取得了最好的效果,并且显著优于规则算法。

image.png
图 14纠错候选排序算法对比

4.5 语音识别回显优化

纠错后的实体词,一方面可以用于业务搜索,另一方面可以优化语音识别的回显结果。在与用户实际发音差异较小的情况下,改写语音识别回显内容,能够提高结果的一致性,削弱用户对语音识别错误的感知。

在纠错排序模块中获得最终top1结果后,我们并不能直接将其替换语音识别的原始内容,因为原始语音和纠错词条的发音可能未必一一对应,我们可以看一个例子。

image.png
图 15语音识别回显优化的例子

在这个例子中,用户的语音输入是“菏泽鲁星医院”,而匹配的词条是“菏泽市鲁心医院”。识别的错误是将“心”识别成了“星”,但是匹配词条中还有被用户省略的“市”这个字。使用词条直接替换会导致识别结果和用户真实发音不一致,这是回显优化需要尽量避免的情况。在这里,我们提出了一种基于拼音相似的公共子序列算法,通过查询原始串和替换串的拼音,找出拼音相似的最长连续路径。在实际业务中,我们应用了这个算法,相比直接限制原始串和替换串拼音需一一对应的方式,提升了相对约10%的识别回显改写率。

5.业务结果

纠错系统已经在多个业务上落地,均取得了不错的效果。

电视线业务,是将语音对话技术应用于电视机,避免繁琐的大屏遥控器文字输入,可以直接用语音搜索歌曲、视频,进行命令控制等。在这个项目中,歌手名、演员名、音乐名、视频名都是百万乃至千万级的数据。我们支持了人名、视频名、歌曲名等多个槽位的纠错能力,提升了绝对1.3%的全链路对话成功率。

高德语音助手,顾名思义,是高德地图app中的语音助手。在app中可以通过语音交互的方式查询地点、规划路线、查询限号、天气等。在高德语音助手项目中,每天90%的用户请求是查询地点和规划路线,而全国的地点名量级上亿,地名识别很容易发生错误。在这个项目中,我们支持了地名的纠错能力,提升了绝对1.0%的全链路对话成功率。在语音识别回显优化上,提升了绝对2.1%的语音识别回显准确率。

钉钉找人项目,是在钉钉上通过语音找人,比如说“打电话给xxx”,可以方便进行沟通。集团中人名、花名、备注名等说法复杂,语音识别也往往不准确。我们支持了人名类等纠错能力,使得在亲密度列表(top200)人名的识别准确率由88.1%提升至94.5%。

6.未来展望

接下来我们会继续优化纠错系统,主要包括以下几个方向的工作:
1.新业务的快速领域迁移能力,例如使用一些few-shot learning算法。

2.尝试引入更多特征,例如语音识别的声学特征以及用户个性化的特征。

3.尝试研究结合END2END模型,增强纠错系统的整体性能。

参考文献

[1] Oleksii Hrinchuk and Mariya Popova and Boris Ginsburg. “Correction of Automatic Speech Recognition with Transformer Sequence-to-sequence Model”. In Proceedings of IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 2020.

[2] Shaohua Zhang, Haoran Huang, Jicong Liu, Hang Li. “Spelling Error Correction with Soft-Masked BERT“. In Proceedings of Annual Meeting of the Association for
Computational Linguistics (ACL) , 2020.

[3] https://en.wikipedia.org/wiki/BK-tree

智能语音产品官网链接:
https://ai.aliyun.com/nls

image.png

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
2月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制的原理介绍
硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载音频驱动,设备启动之后只
202 83
|
2月前
|
机器学习/深度学习 人工智能 编解码
深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
【9月更文挑战第2天】深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
 深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
|
2月前
|
机器学习/深度学习 存储 人工智能
AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出
【9月更文挑战第1天】AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出
AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出
|
3月前
|
人工智能 语音技术
通义语音AI技术问题之服务端对于音频数据如何解决
通义语音AI技术问题之服务端对于音频数据如何解决
32 7
|
3月前
|
人工智能 数据挖掘 语音技术
通义语音AI技术问题之说话人识别的两种类型分类如何解决
通义语音AI技术问题之说话人识别的两种类型分类如何解决
64 5
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
|
3月前
|
存储 机器学习/深度学习 人工智能
通义语音AI技术问题之传统的VAD模型的局限性定义如何解决
通义语音AI技术问题之传统的VAD模型的局限性定义如何解决
27 0
|
3月前
|
人工智能 语音技术
通义语音AI技术问题之语义VAD模型对于传统VAD模型的问题如何解决
通义语音AI技术问题之语义VAD模型对于传统VAD模型的问题如何解决
117 0
|
4月前
|
机器学习/深度学习 自然语言处理 搜索推荐
通义语音大模型评测:迈向更自然、更智能的语音交互
随着人工智能技术的迅猛发展,语音识别和自然语言处理领域不断涌现出新的模型和应用。阿里云推出的通义语音大模型,正是在这一背景下应运而生。本文将对通义语音大模型进行详细评测,探讨其技术架构、应用场景、性能表现以及未来发展前景。
378 0
|
5月前
|
人工智能 自然语言处理 决策智能
超长小说可以用AI翻译了,新型多智能体协作系统媲美人工翻译
【6月更文挑战第11天】研究人员开发了一种基于大型语言模型的多智能体协作系统TransAgents,用于文学翻译,挑战复杂的文学文本翻译。通过单语人类偏好和双语LLM偏好评估,系统在保留文学风格和表达上表现出色,尤其在需要领域知识的文本中。然而,系统在捕捉文学翻译的细微差别、文化特定元素和长文本翻译效率上仍有局限性。相关论文链接:https://arxiv.org/abs/2405.11804
154 1