WavRx:新型语音健康诊断模型

      近年来,语音作为一种有前景的疾病诊断和远程健康监测手段已经出现。语音健康诊断通常基于这样一个假设:即影响发音和/或呼吸系统的疾病会导致人类语音信号中出现非典型模式。这种异常可能由多种原因造成,例如神经肌肉控制受损或声道和肺部发炎。虽然人类有时可能察觉不到语音信号中的影响,但机器学习(ML)模型可以被训练来检测某些与疾病相关的声学生物标记。多年来,已经有大量研究探索了语音处理在诊断中的使用,包括但不限于COVID-19、言语障碍、帕金森病和阿尔茨海默病,以及许多其他一般性呼吸症状我的博客声纹识别专栏也有几篇文章介绍了此类研究,

  • 首次使用回声状态网络 (ESN) 和语音特征进行帕金森病 (PD) 预测
  • PPINtonus (深度学习音调分析)帕金森病早期检测系统
  • 声学特征在膝关节健康诊断中的应用分析
  • ECM和MEMS技术在心肺声学监测中的应用

    随着深度学习的影响日益显现,与基于语音的健康诊断相关的几个挑战也随之而来现有模型主要局限性如下:

现有模型的局限性:

  • 疾病依赖性: 现有的语音健康诊断模型通常针对特定类型的疾病进行设计,缺乏泛化能力。这意味着一个针对某种疾病设计的模型可能无法有效地诊断其他疾病,限制了其在实际应用中的价值。
  • 泛化能力不足: 现有模型在跨数据集测试时,性能往往会出现显著下降。这可能是因为模型过度拟合了特定数据集的特征,而忽略了通用的诊断信息。
  • 隐私问题: 由于语音包含个人身份信息,例如性别、年龄和种族等,将语音信号上传到在线平台进行模型训练和评估存在安全隐患,尤其是在语音克隆技术日益发达的今天。

    本文提出了一个新的语音健康诊断模型WavRx,该模型与疾病无关,能够跨数据集泛化,并且保护隐私建立在WavLM模型之上,并结合了一个新颖的调制动态模块,该模块混合了高分辨率的时间WavLM表示和语音的长期调制动态。而WavLM表示可以在50 Hz的速率下承载语言和副语言属性,这些属性更侧重于瞬时时间变化。另一方面,与发音和呼吸相关的异常可能以更低的速率调节这些短时间特征

1 WavRx模型

1.1 理论及技术基础

1.1.1 语音健康诊断模型

早期研究主要基于人工设计的特征来表征语音病理特征,例如梅尔频率倒谱系数 (MFCCs) 和开放SMILE特征等。这些特征虽然具有一定的解释性和泛化能力,但难以捕捉复杂的语音病理特征。

  • 深度学习模型: 基于深度学习的语音健康诊断模型逐渐兴起,例如卷积神经网络 (CNN) 和循环神经网络 (RNN) 等。这些模型能够自动学习语音特征,并取得了较好的诊断效果。然而,现有的深度学习模型通常针对特定疾病进行设计,缺乏泛化能力。
  • 自监督学习模型: 自监督学习 (SSL) 模型在语音表示学习方面取得了突破性进展,例如 Wav2vec 和 Hubert 等。这些模型能够学习通用的语音表示,并应用于多种下游任务,包括语音健康诊断。然而,现有的 SSL 模型通常采用短时分析,难以捕捉语音的长时变化特征。

1.1.2 语音调制动态

语音是由声带的振动产生的,这种振动通过声道传输并被发音运动和呼吸所调制,从而产生人类可听到的语音。典型的语音分析侧重于短时间分析,以捕捉由音素变化引起的瞬态变化。例如,短时傅里叶变换(STFT)的窗口大小通常为8到32毫秒。然而,这种潜在的调制并不被频谱图很好地捕捉,几十年来一直使用delta和double-delta倒谱参数作为倒谱参数变化速度和加速度的度量。

为了解决这个问题,一些研究人员依赖调制谱,调制谱是一种用于分析语音调制动态的技术,它将语音信号进行短时傅里叶变换 (STFT),并计算每个频率分量的调制频率。 语音调制动态在语音健康诊断中具有重要意义,例如可以用于检测喉部疾病、说话速度异常和情绪变化等

1.2 模型架构

WavRx 模型架构包含三个主要组件:

1.2.1 预训练编码器(Temporal representation encoder)

  • WavRx 使用 WavLM 模型作为预训练编码器,提取语音波形的时间表示。
  • WavLM 模型首先将原始语音波形输入到一个包含 7 个时间卷积层(512 个通道)的 CNN 块中,并进行层归一化和 GELU 激活。
  • CNN 输出的每个时间步代表 25 毫秒的音频,时间步长为 20 毫秒。
  • CNN 输出随后输入到一个包含 13 层的 transformer 后端,每个隐藏状态维度为 768。
  • 为了获取 utterance-level 特征,WavRx 对 WavLM 所有 12 层(排除第一层输入层)的输出进行加权求和,并学习每层的权重。

1.2.2 调制动态块(Modulation dynamics block)

  • 该块旨在捕捉编码时间表示的长期动态,提供与时间细节互补的信息。
  • 给定 WavLM 输出 T(m, n),其中 m 表示时间窗口的数量,n 表示特征的数量,该块对每个特征通道应用短时傅里叶变换 (STFT)。
  • STFT 窗口长度设置为 256 毫秒,以捕获低频调制动态。
  • STFT 结果是一个三维的调制动态表示 Dn(j, fj),其中 j 表示 STFT 的时间帧数量,fj 表示调制频率通道的数量。
  • 调制动态块不包含任何参数,仅通过 STFT 操作来捕捉长期动态。

1.2.3下游组件(Downstream components)

  • 为了将时间表示和调制动态表示转换为 utterance-level 特征,模型使用 attentive statistic pooling (ASP) 层对每个表示进行时间池化。
  • ASP 首先计算时间轴上的平均值,然后对不同频率通道应用注意力机制,并计算 attentive mean 和 attentive standard deviation。
  • 时间和动态向量首先连接,然后输入到一个全连接 (FC) 层,映射到一个 768 维向量,作为健康嵌入。
  • 最后,第二个 FC 层将健康嵌入映射到一个值,作为最终的预测结果。
  • 为了提高模型泛化能力,模型在最后一个 FC 层上应用了剪枝操作。

1.2.4 模型优势

  • 疾病无关性: WavRx 使用预训练的 WavLM 模型,能够提取通用的语音表示,使其能够应用于多种疾病的诊断。
  • 泛化能力强: 调制动态块能够捕捉低频调制动态,更好地表示疾病相关的生物标志物,从而提高模型在跨数据集和跨疾病场景下的泛化能力。
  • 隐私保护: 调制动态块能够显著降低健康嵌入中包含的说话人身份信息,从而保护用户隐私。

2 实验设置

2.1 实验目标

  • 评估 WavRx 在不同病理语音数据集上的诊断性能。
  • 探究模型在不同数据集和疾病之间的泛化能力。
  • 分析模型在保护用户隐私方面的表现。
  • 解释调制动态模块对模型性能的影响。         

2.2 数据集

为了验证模型的通用性和泛化能力,实验使用了六个公开的病理语音数据集,涵盖了四种不同的语音异常:

  • 呼吸症状数据集:包括由呼吸道感染引起的症状,如咳嗽、发烧、喉咙痛等。使用的最大公开可用的语音数据库是COVID-19 Sounds,包含来自全球36,116名个体通过应用程序接口远程记录的552小时音频数据。数据集被分为两个子集:CS-Res和CS-Res-L,分别用于不同的实验。
  • DiCOVA2数据集包含在印度组织的第二次使用声学诊断COVID-19挑战中使用的多模态声学数据。DiCOVA2收集了965名参与者的远程数据,包括语音、咳嗽和呼吸的录音。
  • TORGO数据集:包含来自健康对照组和患有脑瘫或肌萎缩侧索硬化症(这两种是最常见的言语障碍原因)的语音记录和同步的3D发音特征。
  • Nemours数据集:包含12名男性的语音记录,其中11名患有不同程度的言语障碍和1名健康对照。数据集收集了814个简短的无意义句子,每个受试者说了74个句子。此外,数据还包括每个受试者生产的两个连贯的语音段落。这些数据旨在测试言语障碍在增强各种信号处理技术前后的可理解性
  • NCSC数据集:包含55名接受头颈部癌症放化疗的说话者的语音记录和感知评估。

2.3 基线模型   

为了比较 WavRx 的性能,实验选择了五个最新的语音分类基线模型:

2.3.1 基于 SSL 的编码器

  • Wav2vec: 一种基于Transformer的自监督预训练模型,通过掩码预测隐藏单元来学习语音表示。
  • Hubert: 另一种基于Transformer的自监督预训练模型,与 Wav2vec 类似,但使用了不同的预测任务。
  • ASTspeech: 基于Transformer的自监督预训练模型,专门用于语音识别任务。
  • ASTaudio: 与 ASTspeech 类似,但使用音频数据进行预训练,而不是语音数据。

2.3.2 监督学习预训练模型

  • ECAPA-TDNN: 基于TDNN的监督学习预训练模型,用于说话人验证任务。  

2.3. 模型修改

为了与 WavRx 的任务兼容,对基准模型进行了一些修改:

  • Wav2vec 和 Hubert: 在这两个模型的编码器后添加了与 WavRx 相同的 ASP 层和分类头。
  • ECAPA-TDNN: 使用单个全连接层将预训练表示映射到二进制输出。

3 任务与结论

3.1 域内诊断性能

  • WavRx 在 4 个数据集上取得了最高的测试 F1 分数,平均 F1 分数也最高,达到 0.744。
  • 与基线模型相比,WavRx 在三个官方基准数据集(CS-Res、DiCOVA2 和 NCSC)上取得了显著的性能提升。
  • 调制动态模块的加入显著提升了模型的整体性能,证明了其互补性。

3.2 消融实验

  • 使用所有层输出而不是最后一层输出可以显著提升性能,这与现有 SSL 模型层分析结果一致。
  • 调制动态模块的加入可以显著提升模型性能,证明了其重要性。

3.3 零样本诊断性能

  • WavRx 在跨数据集测试中表现出良好的泛化能力,尤其是在呼吸异常数据集上。
  • 调制动态模块的加入可以显著提升模型在不同疾病之间的泛化能力。

3.4  健康嵌入的隐私性

  • 使用仅基于时间表示的健康嵌入进行说话人验证时,准确率较高,说明其包含说话人身份信息。
  • 调制动态表示可以显著降低说话人验证准确率,同时保持较高的诊断性能。
  • 调制动态表示可以更好地隐藏说话人身份信息,从而提高模型的隐私性。

3.5 调制动态分析

  • F-ratio 分析显示,调制频率低于 2 Hz 的区域对于区分病理样本至关重要,这与慢速呼吸和构音运动有关。
  • 健康嵌入的稀疏性分析表明,调制动态表示可以更有效地编码疾病相关信息,从而提高模型的泛化能力和隐私性。
  • 层分析显示,调制动态模块可以引导模型关注构音相关属性,而不是说话人身份信息,从而提高模型的隐私性。

结论

WavRx 在大多数病理语音数据集上取得了最先进的性能,并展现出良好的泛化能力和隐私保护特性。

调制动态模块对模型性能的提升起到了关键作用,它可以帮助模型更好地捕捉疾病相关生物标志物,并减少说话人身份信息的泄漏。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】已解决:Python正确安装文字识别库EasyOCR

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:Python正确安装文字识别库EasyOCR 一、分析问题背景 在使用Python进行图像处理和文字识别时,EasyOCR是一个流行的库,它基于PyTorch&…

互联网直播/点播技术与平台创新应用:视频推拉流EasyDSS案例分析

随着互联网技术的快速发展,直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域,互联网直播/点播平台与技术的应用,不仅为用户带来了全新的购物体验,也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…

同步模式之保护性暂停模式

1. Guarded Suspension:一个线程需要等待另一个线程的执行结果 2. 理解 一个线程需要将结果传递给另一个线程,将这两个线程关联到到同一个 GuardedObject 如果需要源源不断地传递结果,需要使用消息队列(生产者-消费者模型&…

基于 SpringBoot + Vue 的图书购物商城项目

本项目是一个基于 SpringBoot 和 Vue 的图书购物商城系统。系统主要实现了用户注册、登录,图书浏览、查询、加购,购物车管理,订单结算,会员折扣,下单,个人订单管理,书籍及分类管理,用…

用英文介绍芝加哥(1):Making Modern Chicago Part 1 Building a Boomtown

Making Modern Chicago | Part 1: Building a Boomtown Link: https://www.youtube.com/watch?vpNdX0Dm-J8Y&listPLmSQiOQJmbZ7TU39cyx7gizM9i8nOuZXy&index4 Summary Summary of Chicago’s History and Development Urban Planning and Growth Chicago, often r…

华为OceanStor磁盘阵列存储恢复出厂设置命令 LUN不处于在线状态,不能执行此操作解决方案

环境 OceanStor S2600T V2老版本 客户现场有一台Oceanstor 2600 V2的存储,因和另一台磁盘扩展框做了跨设备LUN需要进行配置清除,配置结束后需要重新划分存储空间并对接服务器,保证业务能够正常上线!在清除配置回退的过程中&#…

微服务框架中Nacos的个人学习心得

微服务框架需要学习的东西很多,基本上我把它分为了五个模块: 第一:微服务技术模块 分为三个常用小模块: 1.微服务治理: 注册发现 远程调用 配置管理 网关路由 2.微服务保护: 流量控制 系统保护 熔断降级 服…

个微API二次开发

通过 E云API 可以实现 个性化微信功能 (例:营销系统、云发单助手、社群管家webot、客服系统等),用来自动管理微信消息。 可开发的功能包括但不限于: 好友管理: 添加好友、删除好友、修改备注、创建标签、获…

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(三)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

项目测试排期的正确方法是什么?

测试排期是项目排期里面的一部分,所以了解项目排期对整体产品的全貌会有一个宏观的认知,甘特图能很好的体现项目排期,里面包含了参与角色和每个角色对应的排期。项目参与者和项目责任人都可以清晰的看到项目当前进展和项目耗时等。 甘特图可…

力扣每日一题 6/28 动态规划/数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目: 给你两个长度为 n 下标从 0…

锂电池的串并联特性

1节锂电池电芯的规格是10000mah,4v(总能量10000*4) 那么3节电芯串联电池的规格是10000mah,12v(总能量10000*12)注意,这里电池的规格不是30000mah 3节电芯并联的规格是30000mah,4v …

容器:string

以下是对于string容器常用功能和函数的总结 主要包括 1、定义string 2、字符串赋值 3、字符串拼接:str.append() 4、字符串查找:str.find() / str.rfind() 5、字符串替换:str.replace() 6、字符串长度比较:str.compare…

创新实训(十三) 项目开发——实现用户终止对话功能

思路分析: 如何实现用户终止AI正在进行的回答? 分析实现思路如下: 首先是在用户点击发送后,切换终止对话,点击后大模型终止对话,停止sse,不再接收后端的消息。同时因为对话记录存入数据库是后…

Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)

Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 …

Linux系统上部署Whisper。

Whisper是一个开源的自动语音识别(ASR)模型,最初由OpenAI发布。要在本地Linux系统上部署Whisper,你可以按照以下步骤进行: 1. 创建虚拟环境 为了避免依赖冲突,建议在虚拟环境中进行部署。创建并激活一个新…

Charles抓包工具系列文章(五)-- DNS spoofing (DNS域名伪装)

一、背景 DNS域名是依赖DNS域名服务器,特别是内部域名,最后寻址到后端服务地址。 当我们无法修改客户端的域名,而想让其指向到我们期望地址时,可以采用charles的DNS spoofing。 何谓DNS 欺骗:将自己的主机名指定给远…

React Native 开发常见问题及注意事项

本文只是使用时积累的一些经验 开发环境 1、Android Studio 依赖项下载慢 如果发现依赖下载非常慢,动不动十几KB的 参考:加速 Android Studio 依赖项下载 也可以切换数据源 修改 android/build.gradle中的jcenter()和google() repositories {// goo…

[图解]SysML和EA建模住宅安全系统-02-现有运营领域-块定义图

1 00:00:00,840 --> 00:00:02,440 首先我们来看画在哪里 2 00:00:02,570 --> 00:00:08,310 你看,这是图的类型,图里面内容 3 00:00:08,320 --> 00:00:10,780 这是元素类型 4 00:00:10,790 --> 00:00:14,900 这是位置,哪个包 …

鸿蒙开发 之 健康App案例

1.项目介绍 该项目是记录用户日常饮食情况,以及针对不同食物摄入营养不同会有对应的营养摄入情况和日常运动消耗情况,用户可以自己添加食品以及对应的热量。 1.1登陆页 1.2饮食统计页 1.3 食物列表页 2.登陆页 2.1自定义弹框 import preferences from oh…