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

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

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
浅析人机对话系统的主要模块及核心技术
之前,在我的另一篇博客:简述智能对话系统 里面概述了对话系统的分类、应用场景及产生的社会价值。今天,来简单讲述一下对话系统的主要模块与核心技术。
|
8月前
|
存储 资源调度 并行计算
# Qwen3-8B 与 Qwen3-14B 的 TTFT 性能对比与底层原理详解
通义千问Qwen3系列是通义实验室2025年推出的最新大模型,包含多种参数版本,其中Qwen3-8B与Qwen3-14B均支持32K token上下文。Qwen3-8B参数量较小,响应更快,适合低延迟交互;Qwen3-14B参数更多,推理更强,适用于复杂任务。两者在TTFT、架构优化、量化技术及部署方案上各有侧重,满足多样应用场景需求。
4458 10
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
Dolphin:40语种+22方言!清华联合海天瑞声推出的语音识别大模型,识别精度超Whisper两代
Dolphin是清华大学与海天瑞声联合研发的语音识别大模型,支持40种东方语言和22种中文方言,采用CTC-Attention混合架构,词错率显著低于同类模型。
4935 50
Dolphin:40语种+22方言!清华联合海天瑞声推出的语音识别大模型,识别精度超Whisper两代
|
12月前
|
人工智能 JavaScript Java
从零开始教你打造一个MCP客户端
Anthropic开源了一套MCP协议,它为连接AI系统与数据源提供了一个通用的、开放的标准,用单一协议取代了碎片化的集成方式。本文教你从零打造一个MCP客户端。
7095 5
|
5月前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
5280 12
|
11月前
|
机器学习/深度学习 自然语言处理 人机交互
重磅发布|支持东方40语种+中国22方言的新SOTA语音大模型Dolphin开源啦!
在当今数字化时代,语音识别技术已成为人机交互的关键桥梁,广泛应用于智能客服、语音助手、会议转录等众多领域。
739 0
|
API Docker 容器
SenseVoice实现语音转文字
这篇文章介绍了如何使用SenseVoice实现语音转文字的功能,包括通过Docker部署服务、使用网页界面或API进行语音文件的转换,并提供了详细的部署与使用步骤。
2902 1
SenseVoice实现语音转文字
|
人工智能 自然语言处理 物联网
llama factory 从数据集起步 跑通 qwen系列开源生成式大模型 微调
`dataset_info.json` 文件用于管理 llama factory 中的所有数据集,支持 `alpaca` 和 `sharegpt` 格式。通过配置此文件,可以轻松添加自定义数据集。数据集的相关参数包括数据源地址、数据集格式、样本数量等,支持 Hugging Face 和 ModelScope 两个平台的数据集仓库。针对不同格式的数据集,提供了详细的配置示例,如 `alpaca` 格式的指令监督微调数据集、偏好数据集等,以及 `sharegpt` 格式的多模态数据集等。今天我们通过自定义数据集的方式来进行qwen2.5_14B_instruct模型进行微调
7543 7
|
人工智能 Linux iOS开发
AI超强语音转文本SenseVoice,本地化部署教程!
【9月更文挑战第7天】以下是AI超强语音转文本工具SenseVoice的本地化部署教程:首先确保服务器或计算机满足硬件和软件要求,包括处理器性能、内存及操作系统等。接着从官网下载适合的安装包,并按操作系统进行安装。配置音频输入设备和语言模型后,启动SenseVoice并测试其语音转文本功能。最后根据实际使用情况进行优化调整,并定期更新以获取最新功能。详细步骤需参照官方文档。
5744 1

热门文章

最新文章