谷歌Recorder实现说话人自动标注,功能性与iOS语音备忘录再度拉大

news2024/11/9 2:12:39

在今年的 Made By Google 大会上,谷歌公布了 Recorder 应用的自动说话人标注功能。该功能将实时地为语音识别的文本加上匿名的说话人标签(例如 “说话人 1” 或“说话人 2”)。这项功能将极大地提升录音文本的可读性与实用性。

谷歌于 2019 年为其 Pixel 手机推出了安卓系统下的录音软件 Recorder,对标 iOS 下的语音备忘录,并支持音频文件的录制、管理和编辑等。在此之后,谷歌陆续为 Recorder 加入了大量基于机器学习的功能,包括语音识别,音频事件检测,自动标题生成,以及智能浏览等。

不过当录音文件较长并包含多个说话人的时候,一部分 Recorder 的用户在使用过程中会感到不便。因为仅凭语音识别得到的文本,并不能判断每句话分别是谁说的。在今年的 Made By Google 大会上,谷歌公布了 Recorder 应用的自动说话人标注功能。该功能将实时地为语音识别的文本加上匿名的说话人标签(例如 “说话人 1” 或“说话人 2”)。这项功能将极大地提升录音文本的可读性与实用性。而这项功能背后的技术,被称为声纹分割聚类(speaker diarization)。谷歌在 2022 年的 ICASSP 会议上,首次介绍了其名为 Turn-to-Diarize 的声纹分割聚类系统。

左图:关闭了说话人标注的录音文本。右图:开启了说话人标注的录音文本。

系统架构

谷歌的 Turn-to-Diarize 系统包含了多个高度优化的模型和算法,实现了在移动设备上,以极少的计算资源完成对长达数小时的音频进行实时声纹分割聚类处理。该系统主要包含三个组成部分:用以检测说话人身份转换的说话人转换检测模型,用以提取每个说话人声音特征的声纹编码器模型,以及一个能够高效完成说话人标注的多阶段聚类算法。所有组成部分都完全运行在用户的设备上,不依赖于任何服务器连接。

Turn-to-Diarize 系统的架构图。

说话人转换检测

该系统的第一个组成部分是一个基于 Transformer Transducer(T-T)的说话人转换检测模型。该模型能够将声学特征序列转换为包含了特殊字符 < st > 的文本序列。特殊字符 < st > 表示一个说话人转换的事件。谷歌之前发表的论文曾经用诸如 < doctor > 或 < patient > 的特殊字符来表示具体说话人的身份。而在最新的系统中,由于 < st > 字符不局限于特定的身份,因此其应用也更加广泛。

对于大多数的应用,声纹分割聚类系统的输出一般不会直接呈现给用户,而是与语音识别模型的输出进行结合。由于语音识别模型在训练过程中已经针对词错率进行了优化,因此说话人转换检测模型对于词错率较为宽容,但更加注重特殊字符 < st > 的准确率。在此基础上,谷歌提出了一种新的基于字符的损失函数,实现了只需较小的模型,就能准确地检测出说话人转换事件 < st>。

提取声纹特征

当音频信号被按照说话人转换事件进行分割之后,系统通过声纹编码器模型对每一个说话人片段提取包含声纹信息的嵌入码,即 d-vector。谷歌在之前发表的论文中,一般都是从固定长度的音频中提取声纹嵌入码。与之相比,这次的新系统有多项改进。首先,新系统避免了从包含多个说话人信息的片段中提取声纹嵌入码,从而提升了嵌入码的整体质量。其次,每一个声纹嵌入码对应的语音片段,其时长都比较长,因此包含了对应说话人较多的声纹信息。最后,该方法得到的最终声纹嵌入码序列,其长度较短,使得后续的聚类算法计算代价较低。

多阶段聚类

声纹分割聚类的最后一步,便是对前面几步得到的声纹嵌入码序列进行聚类。由于用户使用 Recorder 应用生成的录音可能只有几秒钟,也可能长达 18 小时,所以聚类算法面临的关键挑战便是能够处理各种长度的声纹嵌入码序列。

为此,谷歌的多阶段聚类策略巧妙地结合了几种不同的聚类算法各自的优势。对于较短的序列,该策略采用聚合式分层聚类(AHC)。对于中等长度的序列,该方法采用谱聚类,并利用特征值的最大间隔法,来准确地估算说话人的数量。对于较长的序列,该方法先用聚合式分层聚类来对序列进行预处理,然后再调用谱聚类,从而降低了聚类这一步骤的计算代价。而在整个流式处理的过程当中,通过对之前的聚类结果进行动态缓存并重复利用,每一次聚类算法的调用,其时间复杂度以及空间复杂度,上限都可以被设置为一个常数。

多阶段聚类策略是针对设备端应用的一项关键优化。因为在设备端,CPU、内存、电池等资源通常都较为稀缺。该策略即使在处理过长达数小时的音频之后,依然能够维持在一个低能耗的状态下运行。而该策略的常数复杂度上限,通常可以根据具体的设备型号进行调整,实现准确率和性能之间的平衡。

多阶段聚类策略的示意图。

实时校正以及用户标注

因为 Turn-to-Diarize 是一个实时的流式处理系统,所以当模型处理完更多的音频之后,其预测得到的说话人标签也会变得更加准确。为此,Recorder 应用会在用户录音的过程当中,持续地对之前预测的说话人标签进行校正,保证用户在当前屏幕上看到的说话人标签始终是更为准确的标签。

与此同时,Recorder 应用的用户界面还允许用户对每一段录音中的说话人标签进行重命名,例如将 “说话人 2” 重命名为“汽车经销商”,从而方便用户阅读和记忆。

 Recorder 允许用户对说话人标签进行重命名,从而提升可读性。

未来工作

谷歌在最新的数款 Pixel 手机上推出了自研芯片 Google Tensor。而当前的声纹分割聚类系统主要便运行在 Google Tensor 的 CPU 模块上。未来谷歌计划将声纹分割聚类系统运行到 Google Tensor 的 TPU 模块上,从而进一步降低能耗。此外,谷歌还希望借助多语言的声纹编码器以及语音识别模型,将这一功能扩展到除英语之外的其他语言上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Alibaba Sentinel - - >流控规则初体验

源码地址&#xff1a;https://github.com/alibaba/Sentinel 新手指南&#xff1a;https://github.com/alibaba/Sentinel/wiki/新手指南#公网-demo 官方文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html 注解支持文档&#xff1a;https://github.com/ali…

Android常用布局总结之(FrameLayout、ConstraintLayout)

一、FrameLayout 帧布局 这种布局类似叠加的图片&#xff0c;没有任何的定位方式&#xff0c;当我们往里面添加组件的时候&#xff0c;会默认把他们放到容器的左上角。 上面的组件显示在底层&#xff0c;下面的组件显示在上层。 如下代码&#xff0c;视图1显示在最底层&#…

虹科案例 | 光纤传感器实现了新的核磁共振应用!

背景介绍 光纤传感器已成为推动MRI最新功能套件升级和新MRI设备设计背后的关键技术。将患者的某些活动与MRI成像系统同步是越来越受重视的需求。磁场强度随着每一代的发展而增大&#xff08;3.0T是当今最高的标准&#xff09;&#xff0c;因此&#xff0c;组件的电磁透明度在每…

python---数据库操作

在python中&#xff0c;使用第三方库pymysql来执行数据库操作 命令行窗口输入 &#xff1a;pip install pymysql&#xff0c;下载第三方库 数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。 fetchone(): 该方法获取下一…

OpManager 网络管理软件

随着网络在有线、无线和虚拟 IT 环境中的扩展&#xff0c;网络管理只会变得越来越复杂&#xff0c;使网络管理员需要他们可以获得的所有帮助。市场上有无数的网络管理解决方案&#xff0c;因此将注意力集中在正确的解决方案上非常重要。网络管理工具通常可以帮助您将网络的各种…

一行python命令让手机读取电脑文件

本文讲解python的一个内置文件传输下载器&#xff0c;可以用来在局域网内进行文件传输&#xff0c;当然可能有人会问&#xff0c;我用微信QQ也能传&#xff0c;为什么还要用python来传输下载&#xff1f;在此&#xff0c;其实我个人感觉的是&#xff0c;这种操作更简单&#xf…

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)

&#x1f37a;基于Python的Web服务器系列相关文章编写如下&#x1f37a;&#xff1a; &#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask快速入门&#xff09;&#x1f388;&#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask案例测试&#xff09;&a…

安科瑞红外测温方案助力滁州某新能源光伏产业工厂安全用电

安科瑞 李亚俊 壹捌柒贰壹零玖捌柒伍柒 摘要&#xff1a; 近年来&#xff0c;在国家政策引导与技术革新驱动的双重作用下&#xff0c;光伏产业保持快速增长态势&#xff0c;产业规模持续扩大&#xff0c;技术迭代更新不断&#xff0c;目前已在全球市场取得优势。据统计&#…

数据结构C语言版——链式二叉树的基本操作实现

文章目录链式二叉树1. 概念2. 链式二叉树的基本操作前序遍历中序遍历后续遍历根据前序遍历构建二叉树层序遍历在二叉树中查找指定值获取二叉树节点个数获取叶子节点个数求二叉树的高度链式二叉树 1. 概念 设计不同的节点结构可构成不同形式的链式存储结构。由二叉树的定义可知…

用简单伪随机数发生器实现随机中点位移分形(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 随机分形(random fractal)采用随机生成机制而得到的分形集.分形体不具有特征尺度(亦即大小尺度跨好几个量级)&#xff0c;却有…

5G无线技术基础自学系列 | 5G接入类KPI

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 接入类KPI反映了用户成功接入到网络中并…

李沐精读论文:Swin transformer: Hierarchical vision transformer using shifted windows

论文地址&#xff1a;Swin transformer: Hierarchical vision transformer using shifted windows 代码&#xff1a;官方源码 pytorch实现 SwinTransformerAPI 视频&#xff1a;Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili 本文注意参考&#xff1a;Swin Transfor…

MySql性能优化(四)索引

Index索引相关概念数据结构B树优点及用处优点用处分类技术名词回表覆盖索引最左匹配索引下推索引的匹配方式哈希索引特点代价案例组合索引案例聚簇索引与非聚簇索引聚簇索引非聚簇索引覆盖索引基本介绍优点判断参考索引相关概念 数据结构 B树 推荐一篇讲的很不错的文章&…

【小程序】wxss与rpx单位以及全局样式和局部样式

目录 WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算* 样式导入 1. 什么是样式导入 2. import 的语法格式 全局样式和局部样式 1. 全局样式 2. 局部样式 WXSS 1. 什么是 WXSS WXSS (We…

Linux网络与数据封装

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 Linux网络与数据封装1. 网络应用程序的设计模式&#xff08;1&#xff09;C/S架构&#xff08;2&#…

VRTK4 入门指南

VRTK4 说明文档VRTK Farm Yard 示例 - Virtual Reality Toolkit要求使用 Unity 2020.3.24f1.Beta 免责声明简介入门下载项目在 Unity 中打开下载的项目使用 Unity Hub在 Unity 中打开项目运行示例场景Made With VRTK贡献第三方包许可证VRTK Farm Yard 示例 - Virtual Reality T…

家居建材行业数字化重构,依靠CRM打通全流程

国家十四五规划提出大力推进产业数字化转型&#xff0c;如今各行各业数字化进程如火如荼&#xff0c;传统行业将数字化转型视为重塑产业竞争力的重要途径。因此&#xff0c;即便是数字化率平均只有10%的家具建材业&#xff0c;也在积极进行全生命周期的产品数字化、全域营销数字…

加载速度提升 15%,关于 Python 启动加速探索与实践的解析 | 龙蜥技术

编者按&#xff1a;在刚刚结束的 PyCon China 2022 大会上&#xff0c;龙蜥社区开发者严懿宸分享了主题为《Python 启动加速的探索与实践》的技术演讲。本次演讲&#xff0c;作者将从 CPython 社区相关工作、本方案的设计及实现&#xff0c;以及业务层面的集成等方面进行介绍。…

Python基础知识入门(四)

Python基础知识入门&#xff08;一&#xff09; Python基础知识入门&#xff08;二&#xff09; Python基础知识入门&#xff08;三&#xff09; 一、条件控制 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者False&#xff09;来决定执行的代码块。 注意&…

使用CMake编译基于OpenCV开发的程序的方法

方法 使用CMake编译OpenCV开发的程序分为以下几个步骤&#xff1a; 安装编译器和代码编辑器。 Windows安装Visual Studio社区版&#xff0c;集成了编译器和代码编辑器。Ubuntu安装gcc、g和VSCode&#xff1a; sudo apt install gcc gcmacOS安装XCode Commandline Tools和VS…