【技术揭秘】解锁声纹技术中的说话人日志

简介: 说话人日志(speaker diarization)也叫说话人分离,它是从一个连续的多人说话的语音中切分出不同说话人的片段,并且判断出每个片段是哪个说话人的过程。借助说话人日志技术可以完成对音频数据流的结构化管理,具有广泛的应用价值,例如可以利用分离结果进行说话人自适应,以提高语音识别的准确率;可以辅助会议、电话数据进行自动转写构建说话人的音频档案;也可以利用说话人分离技术,实现语料库的自动跟踪和标注。
来源 阿里语音AI 公众号

一、背景

说话人日志(speaker diarization)也叫说话人分离,它是从一个连续的多人说话的语音中切分出不同说话人的片段,并且判断出每个片段是哪个说话人的过程。借助说话人日志技术可以完成对音频数据流的结构化管理,具有广泛的应用价值,例如可以利用分离结果进行说话人自适应,以提高语音识别的准确率;可以辅助会议、电话数据进行自动转写构建说话人的音频档案;也可以利用说话人分离技术,实现语料库的自动跟踪和标注。

说话人日志技术解决的是两个方面的问题:“谁在说话”和“在什么时候说话”,如图1所示。“谁在说话”通常可以由说话人识别方法来解决,“在什么时候说话”可以通过说话人分割和说话人聚类来解决。

image.png
图1

在客服质检业务中,针对单通道合录语音通话,通常需要区分哪些发音来自客户,哪些发音来自客服,因此需要在说话人分割聚类的结果上为类别打上标签。在客服质检业务中,发音人的语音很难提前获取,客服人员流动性较大,通过声纹识别的方式,提前注册客户和客服的语音不太现实。因此,“谁在说话”的问题通常根据分割聚类后的发音内容,进行关键字或话术匹配等手段解决。这个过程可以看做是文本的后处理,这里不属于语音技术范围,以下的介绍内容不针对此展开。

二、 说话人日志算法

2.1说话人日志基本框架

现有的说话人日志系统大多由多个相对独立的部分组成,如图2所示:(1)语音分割模块,去除非语音部分,将输入的语音分割为小段;(2)特征向量提取模块,从分割好的小段语音中提取出说话人的特征向量,例如d-vector、i-vector等;(3)聚类模块,通过计算说话人特征向量间的相似度,确定说话人数量,并对不同片段分配说话人身份;(4)重新分割模块,进一步细化分类结果。

image.png
图2

2.2说话人日志算法介绍

我们搭建了基于x-vector的说话人日志系统,基本框架如图3所示。主要的模块包括梅尔频率倒谱系数特征(MFCC)提取模块、语音活动点检测(SAD)模块、x-vector模块、PLDA打分模块以及凝聚分层聚类(AHC)模块。

image.png
图3

主要的模型包括SAD模型、x-vector模型和PLDA模型。SAD模块去除非语音片段,并对剩余的有效语音进行粗分类,以非语音片段作为分割点,将有效语音切分成不同的片段。在不同说话人语音间间隔较大的情况下,粗分类可以将不同的说话人语音切分开来,每个片段只包含一个说话人语音。但在很多情况下,同一个粗分类的片段还会包含不同的说话人信息,因此需要对粗分类片段做进一步处理。通过对每个粗分类片段进一步切分,使用特定窗长和窗移进行加窗处理,然后对每一个窗提取embedding特征。

Embedding特征使用x-vector框架提取,模型基本结构如图4所示。然后对每个片段进行聚类,对不同片段分配说话人身份,具体的说,对embedding特征进行两两打分,打分使用说话人识别的主流技术PLDA方法,通常来说,得分越高,相似度越高,越可能是同一个人的语音。AHC不断重复的将相似度高的类别进行合并,直到满足迭代中止条件。AHC合并后的结果即为最终的分离结果。

image.png
图4

2.3评价指标

我们采用分离错误率(DiarizationError Rate,DER)作为说话人分离效果的评价指标。计算公式如下:

image.png

其中,false alarm表示非语音错误地识别成语音的时间长度,miss detection表示语音错误识别成非语音的时间长度,confusion是混淆的说话人的时长,total是参照语音的总时长。DER值越小,分离效果越好。

三、效果及业务应用

本方法在实际电话客服数据集上可达到很好的说话人分离效果。说话人日志技术已经达到在真实客服质检业务场景中的可应用水平,为客户提供高质量的说话人分离能力。在智能语音交互公共云服务及本地部署软件中的“录音文件识别”接口进行体验。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 搜索推荐 大数据
阿里泛日志设计与实践问题之schema-on-read技术的发展对日志搜索的影响是啥,如何解决
阿里泛日志设计与实践问题之schema-on-read技术的发展对日志搜索的影响是啥,如何解决
|
29天前
|
数据挖掘 语音技术
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
|
15天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
30 0
|
1月前
|
存储 前端开发 安全
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
26 2
|
1月前
|
Web App开发 前端开发
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
19 2
|
1月前
|
缓存 前端开发 JavaScript
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
20 2
|
29天前
|
数据挖掘 语音技术
3D-Speaker说话人任务的开源项目问题之视觉信息在说话人日志技术中的问题如何解决
3D-Speaker说话人任务的开源项目问题之视觉信息在说话人日志技术中的问题如何解决
|
25天前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
7天前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
17天前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
49 9