导读
在 58 同城生活服务平台上,语音是用户间的重要沟通手段:销售、客服人员会通过呼叫中心与客户进行电话沟通;平台上 C 端用户和 B 端商家会通过电话或微聊进行语音沟通。平台每天会产生大量的录音,这些录音中往往蕴含着众多有价值的信息。 智能语音分析平台可以将语音转化成文本,并利用自然语言处理(NLP)技术对文本进行挖掘分析,适用于任何具有语音分析需求的场景,可以有效提升呼叫中心客户服务质量、提高 C 端和 B 端的连接质量和效率。
背景
说话人角色识别(后通称角色识别)是智能语音分析平台的一个重要组成部分,用来判断通话双方的身份(坐席 or 客户),具体如下图所示。
智能语音分析平台接收原始的通话录音,然后进入说话人分离和语音识别模块,将两个不同说话人的音频切分开,并将语音转写为对应的文本。之后进入角色识别模块,对两个说话人的身份进行判断,然后再进行下游任务的处理。
在各个业务线逐步接入智能语音分析平台的过程中,业务方同学使用后发现有部分通话的角色分配是错误的,标记为坐席的语音听了之后发现是客户说的,标记为客户的语音听了之后发现是坐席说的,这部分角色识别错误的语音直接将错误传递给了下游文本挖掘相关的任务,因此,需要对第三方角色识别的结果进行修正或对原始语音的角色进行重新识别从而来提升下游任务的性能。
方法总述
角色识别的整个策略流程如下:首先使用性别识别模型判断通话双方是否属于异性,若属于异性,就直接通过数据库查询该坐席的性别,然后对比音频的性别判断结果,将对应性别的说话人判为坐席,另一个性别的说话人判为客户,完成角色分配;若性别识别模型未能将通话双方判为异性,就分两步进行角色识别优化,首先进行初步角色识别,然后进行单句角色纠正。
性别识别
在进行角色识别时,我们首先考虑从音频的角度进行优化。通过通话双方的性别对录音进行分类,可以分为同性通话和异性通话(男性坐席女性客户 or 女性坐席男性客户)。如果能够很高的准确率识别出说话人的性别,然后结合数据库查询本次通话坐席的性别,就可以解决这部分异性通话的角色分配问题。通过调研和尝试,训练了性别识别模型,对于音频性别识别的准确率可以达到 93.16%。
性别识别模型采用的 VGGish + Bi-LSTM + Attention,模型的输入是语音波形数据,对音频波形数据提取FBank特征,再使用FBank特征作为 VGGish 模型的输入,得到一个 128 维的embedding,然后经过 Bi-LSTM + Attention 进行预测,判断说话人性别。
虽然性别识别的准确率较高,但是实际加入到角色识别中时,还需要考虑到误判问题。例如假设某一通录音中,聊天的双方属于同一性别(假设为男性),发言的总单句数量为 20,每个说话人10句发言。若性别识别模型将其中1句误判为女性发言,其他19句 判断为男性发言。此时若认为聊天双方为异性,按照性别划分每一个单句的说话人归属。则会判断其中一方发言19句,另一方发言1句。采用这样的判断结果会造成9条单句的角色识别错误,那么此次通话的单句角色错误率为 45%。
因此,在实际应用性别识别的预测结果时,采用了以下规则:
1)仅当性别识别模型的预测概率 >0.99 时,才采用该单句的性别预测结果
2)若性别模型判断某个通话双方为异性,只有当两个性别的发言数量都大于 1 时,才使用此次性别识别的结果。
如果本次通话被判为异性通话,则通过数据库查看此次通话中坐席的性别,再结合模型对说话人a和b的性别判断结果,就可以将坐席对应性别的所有单句的角色指定为坐席,另一个性别对应的单句角色指定为客户,完成角色分配。由于使用该策略时会加入以上的两个限制,以保证使用时的准确率。因此,性别识别策略的单句覆盖率仅有 19.05%。
初步角色分配
通过对坐席和客户的发言内容进行分析,我们发现坐席和客户的发言内容会有较大的区别,例如坐席的发言内容包含了大量公司的业务信息,客户的发言内容偏向于较短的应答。因此,角色识别的初步方案是根据通话双方发言的文本内容,来确定两者的角色。
通过对大量角色分配错误的语音进行分析发现,人为能够感觉到语音的角色分配错误的原因在于"大量单句的角色被分错"。例如,当说话人 a 的大量单句都是客户的发言内容,说话人 b 的大量单句都是坐席的发言内容,那么说话人 a 被判定为客户,说话人 b 被判定为坐席,就是合适的。此时如果将说话人 a 判定为坐席,说话人 b 判断为客户,就会被认为语音角色分配错误。
初步角色分配策略从常用关键词,句子语义两种角度来决定两个发言集合中每一句单句角色的归属,然后计算每个发言集合属于坐席和客户的各自得分,该得分即该说话人属于坐席和客户的各自可能性,再通过角色分配策略来对说话人 a 和说话人 b 的角色进行分配。提取关键词采用的 nGram 关键词提取策略,提取句子语义采用的是 TextCNN 模型。(由于初步角色分配和单句角色纠正都是使用的这两种具体策略,只是用法不同,因此介绍在单句角色纠正之后,再具体介绍这两种策略)
单句角色纠正
公司的通话录音主要有呼叫中心和电话平台两个来源,其中大部分是来自呼叫中心的单声道录音。对于双声道的录音,主叫方和被叫方在不同的声道内,无需进行说话人分离,可直接进行语音识别,然后进行下游任务的处理。对于单声道的录音,主叫方和被叫方在同一个声道内,因此无法直接确定每一句话的归属。需要使用说话人分离对音频进行断句,然后将断句后的音频片段聚成两类,分别属于两个不同的说话人A和B,因此说话人分离的效果会直接影响到角色识别的准确率。
初步角色识别,即根据 A 和 B 的所有说话内容,判别 A 和 B 的角色。由于说话人分离结果存在错误,即说话人 A 中包含 B 的单句,说话人B 中包含属于 A 的单句。因此,即使角色识别模块将说话人 A 和 B 的角色分配正确,整体的单句角色准确率依然不高。通过对通话录音进行全量抽样,我们发现两个不同说话人的发言被聚类为同一个人的情况,并不少见。因此,我们引入了单句角色纠正这个环节,对部分带有明显角色倾向的单句进行纠正。单句纠正策略有两种,从关键词和语义两个角度判断该单句的角色。提取关键词采用的 nGram 提取策略,句子语义采用的是 TextCNN 模型。
如下图的示例所示,左边的 “你好,请问您这里在做新能源汽车租车的是吧?” 和 “我这边是深圳五八,想给您”,这两句话被纠正。(纠正前被划分为客户集合,纠正后为坐席集合)。
TextCNN 模型
首先将每一句单句的文本转成 embedding,然后经过 TextCNN 进行角色分类,如果 TextCNN 模型以大于某阈值的概率预测为某个角色(坐席 or 客户),则将模型的预测角色确定为该单句的最终角色。由于单句角色纠正策略的功能是在初步角色分配的基础上提升准确率,因此需要保证单句角色纠正策略的高准确率。因此在模型预测时,加上了概率阈值的限制。当预测阈值设置为 0.998 时,TextCNN 的准确率为 89.93%。
nGram 关键词提取策略
nGram 关键词提取策略是根据关键词在不同角色中的频次分布,提取出可用于短文本分类的关键词。首先会采用 nGram 方法对短文本进行分割,形成一个个关键词,然后计算该关键词在不同角色表达语句中的出现频次。若某些关键词大量出现某一类角色的表达中,则会被保留下来。当关键词在不同角色语言表达中差异越大,提取出来的关键词用于单句角色分配的准确率越高。当提取的关键词在正例和负例的频次比例大于 9:1 时,nGram 策略的准确率可达到 89.51%。
总结
本文通过说话人性别先验、关键词匹配、基于 TextCNN 文本分类,相比原始第三方语音识别中的角色识别准确率提升了 6%。目前我们基于所有业务线对话数据训练的角色识别模型,由于不同业务线语义表达存在一定的差异化,后续我们将利用不同业务线的训练数据单独训练模型,同时尝试引入预训练的模型来进行角色识别的文本分类。
部门简介:
58同城TEG技术工程平台群AI Lab,旨在推动AI技术在58同城的落地,打造AI中台能力,以提高前台业务人效和用户体验。AI Lab目前负责的产品包括:智能客服、语音机器人、智能写稿、智能语音分析平台、智能营销系统、AI算法平台、语音识别等,未来将持续加速创新,拓展AI应用。
作者简介:
尹子龙:58同城 TEG技术工程平台群 AI Lab算法工程师
推荐阅读:
信安微前端一体化实践方案
开源 | WPaxos:生产级Paxos算法实现解析
58技术沙龙 | 第十六期 分布式存储系列专题
沙龙干货 | 58分布式存储系列专题直播回顾集锦
直播回顾 | 58同城AI算法大赛颁奖典礼+解题方案分享