需要JoVE订阅才能观看此内容。 请登录或开始免费试用

方法文章

基于语音信号处理与机器学习的哮喘检测研究

1.5K 次观看

DOI:

10.3791/67742

2025年7月22日

本文内容

摘要

本研究采用语音信号分析和机器学习方法,利用 MATLAB 提取具有区分性的语音特征,以实现哮喘的无创早期检测。支持向量机(SVM)和随机森林(RF)算法在整体分类准确率方面表现出相似的性能,尽管 SVM 在敏感性和特异性之间的平衡可能更优。

摘要

为了通过语音信号分析和机器学习技术分析语音信号并识别哮喘患者,我们采集了50名哮喘患者和50名健康对照者的清晰、低噪声的固定模式语音信号,构建了分析数据库。研究基于MATLAB进行多维度语音信号分析,并筛选出哮喘患者与健康对照者之间存在显著差异的语音特征指标。在对差异性语音特征进行降维分析后,将处理后的特征用于后续的SVM和RF建模与分类研究。

该研究建立了400多个与诊断相关的语音特征指标,其中20个指标在哮喘患者与健康对照组之间表现出显著差异(P < 0.01)。在分类研究中,SVM和RF模型在测试集上的准确率均达到87%,AUC值分别为SVM 0.95、RF 0.93。这表明两者在整体分类准确率方面表现相当,而AUC值的差异提示SVM模型在敏感性与特异性之间可能实现了更优的权衡。因此,本文不仅为哮喘的无创早期检测提供了新方法,也为该方法在实际场景中的进一步应用与优化奠定了基础。

引言

根据中国肺部健康(CPH)研究的数据,中国成年人哮喘的患病率为4.2%,其中仅有28.8%的哮喘患者被医生确诊,仅5.6%的患者接受了吸入性糖皮质激素治疗1。这些数据表明,中国哮喘的诊断和治疗率较低,凸显出亟需提高公众和医疗专业人员对哮喘的认知与重视。目前哮喘的诊断方法多样,包括临床病史和体格检查、肺功能检测以及呼出气一氧化氮分数(FeNO)测定,但每种方法在不同程度上均存在局限性2,3,4。此外,哮喘的定期监测对疾病管理至关重要;系统性地监测症状和肺功能可有效预防哮喘急性加重,改善患者生活质量,并减少急诊就诊和住院次数5,6。然而在实际应用中,由于成本较高和操作复杂,这些传统诊断方法通常难以在常规诊疗中广泛开展。

鉴于上述情况,哮喘的自我监测可能在疾病控制中发挥重要作用。这种监测需要简单、方便且准确。在这方面,声音具有明显优势。哮喘患者的声音特征常表现出显著差异,包括最大发声时间缩短、声音障碍(如声音嘶哑、粗糙和声疲劳),以及与健康个体相比基频和音调存在显著差异7,8,9。这些差异可作为识别和监测哮喘的潜在方法。

机器学习在利用语音数据检测哮喘方面已展现出巨大潜力。研究表明,通过分析患者的咳嗽声、呼吸声及其他相关声学特征,可有效检测哮喘症状。这些技术包括深度学习、神经网络及其他机器学习模型,能够识别哮喘患者特有的语音模式和呼吸音变化10,11,12,13,14,15

与咳嗽声和呼吸声相比,固定模式的语音(例如数字1-9的发音)更具标准化和可控性。它还便于特征提取、控制语音质量,并更易于进行大规模数据采集。支持向量机(SVM)在处理高维数据和含噪声样本时表现出强大的分类能力,而随机森林(RF)由于具有优异的鲁棒性、处理非线性关系的能力以及对特征重要性的评估能力,能够有效应对复杂的语音特征数据16,17,18,19,20

在本研究中,我们采用以正常且稳定的语速说出的数字"123456789"的录音,提取与哮喘相关的语音特征。基于这些特征,我们构建了用于哮喘检测的随机森林(RF)和支撑向量机(SVM)模型。未来,这些模型有望被整合到移动应用程序中,以实现哮喘的识别及疾病进展的监测,从而有助于预防哮喘急性加重。

访问受限。请登录或开始试用以查看此内容。

方案

本研究经北京中医药大学及其第三附属医院伦理委员会批准。所有参与者在参加研究前均签署了书面知情同意书。2024年7月至8月期间,我们从北京中医药大学第三附属医院呼吸科招募了50名患者。同时,我们纳入50名健康个体作为对照组。

1. 参与者选择

  1. 设定以下纳入标准。
    1. 在说话者以正常且稳定的语速朗读数字 "123456789" 的音频样本中,选择背景噪声较低且发音清晰的样本。
    2. 确保哮喘组由呼吸科专科医生根据既定的临床标准确诊为哮喘,对照组则由无呼吸系统疾病或其他可能影响声音质量疾病的健康个体组成。
    3. 选择年龄在18至75岁之间的参与者,并保持各组间性别比例一致。
    4. 获得所有参与者签署的书面知情同意书。
  2. 设定以下排除标准。
    1. 排除患有慢性呼吸系统疾病(如慢性阻塞性肺疾病(COPD)或间质性肺病)的参与者。
    2. 排除在过去6周内发生过急性呼吸道感染或疾病加重的参与者。
    3. 排除有声音障碍病史的个体,如声带问题或喉炎。
    4. 排除患有可能影响发声或认知功能的神经系统疾病的参与者。
    5. 排除有显著听力障碍的个体。
    6. 排除未能遵守研究方案或未能提供足够音频样本的参与者。
    7. 排除无法或不愿提供知情同意的个体。

2. 研究设计

  1. 在隔离的安静诊室(环境噪声<30 dB)中,让受试者保持自然、舒适的坐姿,处于放松状态进行录音(如图1所示)。
  2. 负责录音的工作人员(采样人员)需收集受试者的基本信息(身高、体重、年龄等),并由医师确认该受试者是否被诊断为单纯哮喘。
  3. 收集基本信息后,指导采样人员将录音设备的麦克风调整至合适高度,距离受试者嘴唇约20–30 cm。
  4. 使用数字录音仪进行音频采集,采样率统一设置为44.1 kHz。每日录音前对设备进行校准,确保误差范围在≤±1 dB以内。
  5. 指导受试者按顺序清晰朗读数字1至9,录音过程中保持自然语速和清晰发音。
  6. 录音完成后,将音频以.wav格式保存。
  7. 通过语音活动检测(VAD)结合人工核查的方式剔除异常音频片段,将信噪比(SNR)满足>20 dB标准的录音纳入研究。

3. 构建语音特征库

注意:言语特征指标数据库是用于分析哮喘患者与健康个体之间言语差异的各种言语特征的集合,可支持哮喘的早期筛查与检测。构建言语特征指标库的具体方法框架详见表1。同时,本研究构建语音特征指标数据库的过程已上传至GitHub(https://github.com/Liteng811/speech-feature-index-database-construction)。以下步骤将主要描述如何从GitHub下载并运行代码。 

  1. 从 MathWorks 官方网站下载并安装适用于操作系统的 MATLAB 版本。启动 MATLAB 软件后,在命令窗口中输入 ver ,检查 MATLAB 是否正确安装。若安装成功,将显示 MATLAB 的版本信息。
  2. 从 Git 官方网站(https://git-scm.com/)安装 Git。在命令行(Windows 使用命令提示符,Mac/Linux 使用终端)中输入以下命令,确认安装是否成功: git --version。若安装成功,将显示 Git 的版本信息。
  3. 克隆 GitHub 代码仓库。
    1. 打开命令行工具,使用以下命令将代码仓库克隆到本地计算机:
      git clone https://github.com/Liteng811/voice-feature-index-database-construction.git
      注意:该命令会将 GitHub 仓库的内容下载至当前工作目录,并创建一个名为 voice-feature-index-database-construction 的文件夹。
    2. 要进入该文件夹以查看和管理已下载的代码与文件,请使用以下命令:
      cd voice-feature-index-database-construction.
  4. 配置 MATLAB 环境。
    1. 启动 MATLAB 软件。
    2. 在 MATLAB 中,点击 主页 选项卡下的 设置路径 按钮,选择 添加文件夹。选中刚刚克隆的 voice-feature-index-database-construction 文件夹,然后点击 保存。此操作将使 MATLAB 能够识别并执行该文件夹中的所有脚本文件。
    3. 在 MATLAB 的 当前文件夹 窗口中,找到 voice-feature-index-database-construction 文件夹,双击 voiceH6_batch_3_stage_WAV_tt.m 文件以打开。该文件为主处理脚本。
  5. 配置并准备数据。
    1. 仓库中的代码需要音频文件作为输入。请确保音频文件为 .wav.pcm 格式。
    2. 音频文件的路径在代码中为硬编码(即直接写入代码中)。请根据本地文件的实际存储位置修改相应路径。
  6. 运行代码。
    1. 打开 voiceH6_batch_3_stage_WAV_tt.m 文件后,点击 运行 按钮,或在命令窗口中输入文件名以执行脚本:
      voiceH6_batch_3_stage_WAV_tt.
    2. 脚本需要用户交互。MATLAB 将弹出图形界面,提示用户选择相应的音频文件或文件夹。请根据提示正确选择待处理的音频文件或文件夹。
    3. 若在运行脚本时出现图形界面卡死或无法显示的情况,请检查是否存在 MATLAB 版本兼容性问题,或确认操作系统的图形驱动程序是否正常工作。
  7. 输出结果。运行完成后,查找脚本生成的 .txt 输出文件,特征提取结果将写入该文件中。输出文件将保存音频特征识别结果等信息。

4. 数据分析

注意:在获得语音特征指标数据库后,对数据进行统计分析。数据分析的具体方法框架详见表2。具体操作步骤如下所述。

  1. 正态性与方差齐性检验
    注意:我们对声音特征指标进行了正态性与方差齐性检验,以确定合适的统计分析方法。若所有组别的指标均满足正态性与方差齐性的假设条件,则采用独立样本 t-检验。否则,我们采用 Mann-Whitney U 测试。
    1. 打开统计软件,点击 文件 | 打开 | 数据,并选择数据文件。确保变量在数据视图中已正确分类并显示。
    2. 导航至 分析 | 描述性统计 | 探索.
    3. 在对话框中,将待检验的变量移至 依赖列表 领域
    4. 点击 图示 窗口右上角的按钮。在弹出的对话框中,选择 正态性检验图及检验 并单击 继续.
    5. 返回到 主要 窗口并单击 好的 进行正态性检验。
    6. 输出 窗口,找到 正态性检验表. 关注显著性数值(显著性) Kolmogorov-Smirnov (K-S 检验)和 Shapiro-Wilk(S-W 检验)。如果 显著性 > 0.05,数据遵循一个 正常 分布;如果显著性 ≤ 0.05,则数据不服从正态分布。
    7. 导航至 分析 | 比较均值 | 单因素方差分析.
    8. 在对话框中,将因变量移至 依赖列表 字段和分组变量(分类变量)到 因子 领域
    9. 点击 选项 对话框右侧的按钮。选择 方差齐性检验 并点击 继续.
    10. 返回到 主要 窗口并单击 好的 进行方差齐性检验。
    11. 输出 窗口,找到 方差齐性检验表. 关注显著性值(显著性Levene 统计量。如果 显著性 > 0.05,the 方差齐性假设成立;如果显著性 ≤ 0.05,则方差齐性假设不成立。
  2. 曼-惠特尼 U 测试
    注意:由于本研究中的指标未能同时满足正态性与方差齐性的假设,我们采用了Mann-Whitney检验 U 采用检验方法比较哮喘组与健康对照组之间语音信号特征指标的差异。
    1. 导航至 分析 | 非参数检验 | 旧对话框 | 两个独立样本.
    2. 在对话框中,将连续变量(因变量)移入 测试变量列表 字段和分组变量(分类变量)放入 分组变量 领域
    3. 点击 定义组别,输入分组变量的两个类别(例如, "1" 和 "2"),然后单击 继续.
    4. 主要 窗口,选择 Mann-Whitney U确保 精确 未勾选(对于小样本量,请选择此选项以提高准确性)。点击 选项,选择 描述性,然后点击 继续.
    5. 返回到 主要 窗口并单击 好的 进行 曼-惠特尼 U 测试。
    6. 输出 窗口,找到 检验统计量表格:Mann-Whitney U 值代表检验统计量。 双侧渐近显著性值 代表 p值。如果 p > 0.05,组间无显著性差异;若 p ≤ 0.05,则组间存在显著性差异。
    7. 要确定哪一组的测量值更高,请检查 排名表,显示每组的平均秩次和样本量。
  3. 主成分分析(PCA)
    注意:在确定差异性指标后,我们进行了主成分分析(PCA)以进一步分析数据。PCA 是一种降维技术,可将原始数据转换为少数几个主成分,从而提取重要特征并简化分析过程。在进行 PCA 之前,统计软件已自动对数据进行标准化处理,以消除量纲影响。
    1. 导航至 分析 | 降维 | 因子.
    2. 在对话框中,将所有待分析的变量移入 变量 领域
    3. 点击 描述性统计 按钮并选择 KMO 和巴特利特球形度检验 以验证数据是否适用于主成分分析(PCA)。点击 继续.
    4. 提取 标签,设置 主成分分析法,选择 碎石图 以确定主成分的数量,并设定 提取特征值大于1. 点击 继续.
    5. 旋转 标签,选择 . 点击 继续.
    6. 评分 标签,选择 保存为变量 将主成分得分保存到数据集中。
    7. 返回到 主要 窗口并单击 好的 进行主成分分析(PCA)。
    8. KMO 和巴特利特检验:KMO 值 ≥ 0.6 表明数据适合进行主成分分析(PCA)。巴特利特球形检验显著性(Sig.)值 < 0.05 表示变量间存在显著相关性,说明该数据适用于主成分分析(PCA)。
    9. 总方差解释:查看每个主成分的特征值及其解释的方差。累计方差解释率在70%至85%之间较为理想。
    10. 使用 碎石图 确定主成分数量时,通常选择拐点之前的成分。
    11. 成分矩阵或旋转成分矩阵:检查各变量在每个主成分上的载荷系数。系数 > 0.5 被视为具有显著性贡献。

5. 构建支持向量机和随机森林模型

注意:构建支持向量机(SVM)和随机森林(RF)模型的具体方法学框架详见表3。本研究构建的用于哮喘检测的SVM和RF模型已上传至GitHub(https://github.com/Liteng811/Asthma-Detection)。以下将主要介绍如何从GitHub下载并运行代码。

  1. 克隆 GitHub 仓库。
    1. 打开命令行工具,并使用以下命令将代码仓库克隆到本地计算机:
      git clone https://github.com/Liteng811/Asthma-Detection.git
      注意:此命令会将 GitHub 仓库的内容下载到当前工作目录,并创建一个名为 哮喘检测.
  2. 安装 Python、PyCharm 及所需的 Python 库。
    1. 从 Python 官方网站(https://www.python.org/)下载并安装 Python。
    2. 安装 Python 后,使用以下命令安装必要的 Python 库:pip install -r requirements.txt.
    3. 如果没有 requirements.txt 文件,使用以下命令安装本研究中用到的库:
      pip install numpy pandas scikit-learn matplotlib
    4. 请务必从 PyCharm 官方网站(https://www.jetbrains.com/pycharm/)下载并安装 PyCharm。
  3. 查看仓库中的文件。
    1. 在存储库中,找到主脚本文件(SVM.py, RF.py).
    2. 使用文本编辑器或 PyCharm 打开这些 Python 文件,查看其内容和结构。
  4. 配置数据集。
    1. 代码库中的代码需要数据文件。请检查数据文件是否已准备就绪,且其格式符合代码的要求(.xlsx).
    2. 代码中包含硬编码的文件路径。请根据文件的实际存储位置修改路径,即替换代码中的路径(例如, C:\Users\1\Desktop\pca-result.xlsx)与系统中的实际文件路径。
  5. 运行代码。
    1. 找到主脚本后,在命令行中使用以下命令运行代码(使用 SVM.py (作为示例)。如果主脚本是 RF.py, 运行相应的脚本。
      python SVM.py
    2. 运行代码时,需切换到正确的当前工作目录,或在命令行中使用脚本的完整路径来指定。例如,若运行 python SVM.py 在命令行中,切换到包含 SVM.py,或使用绝对路径:
      python C:/path/to/your/repository/SVM.py
    3. 在执行过程中,代码将加载数据、训练机器学习模型(SVM 或 RF),并输出准确率、混淆矩阵和 ROC 曲线等结果。

访问受限。请登录或开始试用以查看此内容。

结果

完成语音特征索引数据库的构建

本研究通过多层次分析语音信号,成功提取了467项语音特征指标。有关467项语音特征指标的详细信息,请参见上述GitHub网址。所采用的分析方法包括时域分析、频域分析、MFCC(梅尔频率倒谱系数)提取,以及基于中医诊断标准的特征转换。其中,时域分析反映了信号的基本波形特征和振幅变化;频域分析揭示了信号的频率组成,有助于理解语音的频谱结构。MFCC提取进一步捕捉了语音信号的频谱特征,并将其转化为适合机器学习分析的形式。此外,本研究根据中医诊断标准对部分特征指标进行了转换,以更好地契合本研究的具体需求和分析目标。最终构建的语音特征指标数据库包含100个语音样本(来自50例哮喘患者和50名健康对照者),从中共提取出100 × 467项语音特征指标。

数据分析结果

在特征选择过程中,该研究进一步探讨了哮喘组与健康对照组之间的显著差异。结果显示,两组之间在20项语音特征指标上存在显著差异...

访问受限。请登录或开始试用以查看此内容。

讨论

本研究探讨了利用语音信号分析和机器学习技术进行无创哮喘检测的方法。通过采集50名哮喘患者和50名健康对照者的语音数据,本研究使用SVM和RF算法构建了模型16,17,18,19,20。两种模型在正确分类样本总体比例方面的表现相当,但AUC值的差异表明,SVM模型在敏感性和特异性之间可能实现了更好的平衡。以下是对研究结果的深入讨论。

研究表明,SVM 和 RF 模型在测试集上的准确率均达到 87%,其中 SVM 模型对应的 AUC 值为 0.95,RF 模型对应的 AUC 值为 0.93。这可能是因为 SVM 模型在处理高维数据或非线性可分问题时具有更强的建模能力,且对噪声或异常值具有更高的鲁棒性,尤其是在使用正则化参数优化的 SVM 时。RF 模型由于某些特征...

访问受限。请登录或开始试用以查看此内容。

披露

作者声明无利益冲突。

致谢

本研究由国家自然科学基金青年科学基金项目(项目批准号:82104739)和河北省中医药管理局科研项目(项目编号:B2025032)资助。作者谨向在实验过程中提供帮助的所有老师和同学表示感谢。

访问受限。请登录或开始试用以查看此内容。

材料

本文使用的材料清单
姓名公司目录编号评论
设备供应商型号/版本品牌
数字录音机ZOOM Audio StoreH6ZOOM
GitHub官方网站2.47.1.2Git
Matlabhttps://www.mathworks.com/R2024bMathWorks
Pycharm官方网站2024.1JetBrains
Python官方网站3.12Python

参考文献

  1. Huang, K., et al. risk factors, and management of asthma in China: a national cross-sectional study. Lancet. 394 (10196), 407-418 (2019).
  2. McCormack, M. C., Enright, P. L. Making the diagnosis of asthma. Respir Care. 53 (5), discussion 590-2 583-590 (2008).
  3. Backer, V., et al. Diagnostic work-up in patients with possible asthma referred to a university hospital. Eur Clin RespirJ. 2, (2015).
  4. Fortuna, A. M., Feixas, T., González, M., Casan, P. Diagnostic utility of inflammatory biomarkers in asthma: exhaled nitric oxide and induced sputum eosinophil count. Respir Med. 101 (11), 2416-2421 (2007).
  5. Gibson, P. G. Monitoring the patient with asthma: an evidence-based approach. Allergy Clin Immunol. 106 (1 Pt 1), 17-26 (2000).
  6. Gibson, P. G., et al. Self-management education and regular practitioner review for adults with asthma. Cochrane Database Syst Rev. (1), CD001117(2003).
  7. Dogan, M., Eryuksel, E., Kocak, I., Celikel, T., Sehitoglu, M. A. Subjective and objective evaluation of voice quality in patients with asthma. J Voice. 21 (2), 224-230 (2007).
  8. Ihre, E., Zetterström, O., Ihre, E. B. Voice problems as side effects of inhaled corticosteroids in asthma patients--a prevalence study. J Voice. 18 (3), 403-414 (2004).
  9. Analysis of acoustic features for voice sound based classification of asthmatic and healthy subjects. Yadav, S., Keerthana, M., Gope, D., Uma, M. K., Ghosh, P. K. ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Barcelona, Spain, , 6789-6793 (2020).
  10. Isangula, K. G., Haule, R. J. Leveraging AI and machine learning to develop and evaluate a contextualized user-friendly cough audio classifier for detecting respiratory diseases: Protocol for a diagnostic study in rural Tanzania. JMIR Res Protoc. 13, e54388(2024).
  11. Rogers, H. P., et al. Voice as a biomarker of pediatric health: A scoping review. Children (Basel). 11 (6), 684(2024).
  12. MeLoDicA AI - machine learning based detection of asthma via vocal audio analysis. Looi, Z. Q., Ng, Z. H., Yak, R. X., Rosen, O., Kumar, A. 2024 IEEE Conference on Artificial Intelligence (CAI), , 905-910 (2024).
  13. Barua, P. D., et al. Automated asthma detection in a 1326-subject cohort using a one-dimensional attractive-and-repulsive center-symmetric local binary pattern technique with cough sounds. Neural Comput & Applic. 36, 16857-16871 (2024).
  14. Iqbal, M. D. A., Krishnamoorthy, D., Musthak, S. A. Real time detection and forecasting technique for asthma disease using voice signal and DENN classifier. Biomedical Signal Processing and Control. 76, 103637(2022).
  15. Wu, Y., et al. Ubi-Asthma: Toward ubiquitous asthma detection using the Smartwatch. IEEE Internet of Things Journal. 10 (13), 11576-11587 (2023).
  16. Schölkopf, B., Smola, A. J. Support vector machines. Encyclopedia of Biostatistics. , 978-047197762 (1998).
  17. Burges, C. J. C. A tutorial on support vector machines for pattern recognition. Data Mining and Knowledge Discovery. 2 (2), 121-167 (1998).
  18. Liaw, A., Wiener, M. Random Forest: Classification and Regression. R News. 2 (3), 18-22 (2002).
  19. Cutler, D. R., et al. Random forests for classification in ecology. Ecology. 88 (11), 2783-2792 (2007).
  20. Breiman, L. Random forests. Machine Learning. 45 (1), 5-32 (2001).

访问受限。请登录或开始试用以查看此内容。

重印与许可

标签

语音特征分析支持向量机随机森林声学传感器MATLAB 分析ROC 曲线无创诊断