方法文章

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

DOI:

10.3791/67742

2025年7月22日

本文内容

摘要

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

摘要

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

为了使用语音信号分析和机器学习技术分析语音信号并识别哮喘患者,我们从 50 名哮喘患者和 50 名健康对照者那里收集了清晰、低噪声的固定模式语音信号,以建立一个分析数据库。该研究基于 MATLAB 进行了多维语音信号分析,并选择了哮喘患者和健康对照之间差异显著的语音特征指标。在对差分语音特征进行降维分析后,将处理后的特征纳入后续的 SVM 和 RF 建模和分类研究中。

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

引言

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

根据中国肺健康 (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 模型。未来,这些模型有可能集成到移动应用程序中,以实现哮喘的识别和疾病进展的监测,从而有助于防止哮喘恶化。

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

方案

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

北京中医药大学及其第三附属医院伦理委员会批准了这项研究。所有参与者在参加前都签署了书面知情同意书。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 分贝)中以自然、舒适的坐姿记录参与者,保持放松状态(如图 1 所示)。
  2. 让记录参与者的人员(采样人员)获取记录参与者的基本信息(身高、体重、年龄等),并与医生核实参与者是否被诊断为纯哮喘。
  3. 收集基本信息后,请采样人员将录音设备的麦克风调整到合适的高度,距离嘴唇约 20-30 厘米。
  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 的 Database-Construction。
  4. 配置 MATLAB 环境。
    1. 启动 MATLAB 软件。
    2. 在 MATLAB 中,点击 Home 选项卡下的 Set Path 按钮,然后选择 Add Folder。选择刚刚克隆的 voice-feature-index-database-construction 文件夹,然后单击 Save (保存)。这将允许 MATLAB 识别并执行该文件夹中的所有脚本文件。
    3. 在 MATLAB Current Folder 窗口中,找到 voice-feature-index-database-construction 文件夹,然后双击 voiceH6_batch_3_stage_WAV_tt.m 文件将其打开。此文件是主要的处理脚本。
  5. 配置和准备数据。
    1. 存储库中的代码需要音频文件作为输入。确保音频文件为 .wav.pcm 格式。
    2. 音频文件的文件路径在 repository 代码中进行了硬编码(即,它们被直接写入代码中)。根据本地文件的位置修改路径。
  6. 运行代码。
    1. 打开 voiceH6_batch_3_stage_WAV_tt.m 文件后,单击 Run 按钮,或在命令窗口中键入文件名以执行脚本:
      voiceH6_batch_3_stage_WAV_tt。
    2. 该脚本需要用户交互。MATLAB 将弹出一个图形界面,提示用户选择相应的音频文件或文件夹。请务必根据提示正确选择要处理的音频文件或文件夹。
    3. 如果在 MATLAB 中运行脚本时出现图形界面冻结或不显示的任何问题,请检查潜在的 MATLAB 版本兼容性问题或确保作系统的图形驱动程序正常运行。
  7. 输出结果。运行后,查找脚本会将特征提取结果写入的 .txt 输出文件。输出文件将保存音频特征识别结果等信息。

4. 数据分析

注意:获取语音特征指标数据库后,对数据进行统计分析。 表 2 中详细介绍了数据分析的具体方法框架。具体作流程详述如下。

  1. 方差的正态性和同质性检验
    注意:我们对语音特征指标进行了方差正态性和同质性测试,以确定适当的统计分析方法。如果所有指标组都满足方差的正态性和同质性假设,则使用独立样本 t 检验。否则,我们应用 Mann-Whitney U 检验。
    1. 打开统计软件,单击 文件 |打开 |Data 的 ID 文件,然后选择数据文件。确保变量已正确分类并显示在数据视图中。
    2. 导航到 Analyze |描述性统计 |探索
    3. 在对话框中,将要测试的变量移动到 Dependent List 字段中。
    4. 单击窗口右上角的 Plots 按钮。在对话框中,选择 含检验的正态图 ,然后点击 继续
    5. 返回 窗口,然后单击 OK 执行正态性测试。
    6. 输出窗口中,找到 Tests of Normality 表。关注 Kolmogorov-Smirnov(K-S 检验)和 Shapiro-Wilk(S-W 检验)的显著性值 (Sig.)。如果 Sig. > 0.05,则数据服从正态分布;如果 Sig. ≤ 0.05,则数据不服从正态分布。
    7. 导航到 Analyze |比较均值 |单因子方差分析
    8. 在对话框中,将因变量移动到 Dependent List 字段,并将分组变量(分类变量)移动到 Factor 字段。
    9. 单击对话框右侧的 Options 按钮。选择 Homogeneity of variance test (方差同质性检验 ),然后单击 Continue (继续)。
    10. 返回 窗口,然后单击 OK 执行方差同质性检验。
    11. 输出窗口中,找到 Test of Homogeneity of Variances 表。关注 Levene 统计量的显著性值 (Sig.)。如果 Sig. > 0.05,则满足方差同质性假设;如果 Sig. ≤ 0.05,则违反方差同质性假设。
  2. Mann-Whitney U 检验
    注意:由于本研究中的指标没有同时满足方差的正态性和同质性的假设,我们应用 Mann-Whitney U 检验来比较哮喘组和健康对照组之间语音信号特征指标的差异。
    1. 导航到 Analyze |非参数检验 |旧版对话框 |2 个独立样本
    2. 在对话框中,将连续变量(因变量)移动到 Test Variable List 字段中,并将分组变量(分类变量)移动到 Grouping Variable 字段中。
    3. 点击 Define Groups,输入分组变量的两个类别(例如 “1” 和 “2”),然后点击 Continue
    4. 窗口中,选择 Mann-Whitney U。确保未选中 Exact (如果 样本量较小,请选择此选项以提高准确性)。单击 “选项”,选择 “描述性”,然后单击 “继续”。
    5. 返回 窗口并单击 OK 执行 Mann-Whitney U 检验。
    6. 输出 窗口中,找到 Test Statistics 表:Mann-Whitney U 值表示检验统计量。 渐近 Sig. (2 尾) 值 表示 p 值。如果 p > 0.05,则组间不存在显著差异;如果 p ≤ 0.05,则组之间存在显著差异。
    7. 要确定哪个组具有较高的测量值,请检查 Ranks 表,该表显示每个组的平均排名和样本量。
  3. 主成分分析 (PCA)
    注:在确定了差异指标后,我们进行了 PCA 以进一步分析数据。PCA 是一种降维技术,可将原始数据转换为几个主要组件,以提取重要特征并简化分析。在 PCA 之前,统计软件会自动对数据进行标准化以消除维度效应。
    1. 导航到 Analyze |降维 |因子
    2. 在对话框中,将所有要分析的变量移动到 Variables 字段中。
    3. 单击 Descriptives 按钮,然后选择 KMO 和 Bartlett 球形度检验 以验证数据是否适合 PCA。单击 Continue(继续)。
    4. 提取 选项卡中,将 方法设置为主成分,选择 碎石图 以确定主成分的数量,并将 提取 设置为 大于 1 的特征值。单击 Continue(继续)。
    5. Rotation (旋转 ) 选项卡中,选择 None (无)。单击 Continue(继续)。
    6. Scores 选项卡中,选择 Save as variables 以将主成分分数保存到数据集。
    7. 返回 窗口并单击 OK 执行 PCA。
    8. KMO 和 Bartlett 检验:KMO 值≥ 0.6 表示数据适合 PCA。球形度 Sig. 值 < 0.05 的 Bartlett 检验表示变量之间存在显著相关性,使数据适合 PCA。
    9. 解释的总方差:查看每个主成分解释的特征值和方差。70%-85% 的累积方差解释率是理想的。
    10. 使用 碎石图 可以确定主分量的数量,通常在拐点之前选择分量。
    11. Component Matrix 或 Rotated Component Matrix:检查变量在每个主成分上的载荷系数。> 0.5 的系数被视为显著贡献。

5. SVM 和 RF 模型的构建

注意: 表 3 详细介绍了构建 SVM 和 RF 模型的具体方法框架。我们已将本研究中构建的用于哮喘检测的 SVM 和 RF 模型上传到 GitHub (https://github.com/Liteng811/Asthma-Detection)。下面将主要介绍如何从 GitHub 下载和运行代码。

  1. 克隆 GitHub 存储库。
    1. 打开命令行工具,并使用以下命令将存储库克隆到本地计算机:
      git clone https://github.com/Liteng811/Asthma-Detection.git
      注意:此命令会将 GitHub 存储库的内容下载到当前工作目录,并创建一个名为 Asthma-Detection 的文件夹。
  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 曲线等结果。

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

结果

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

本研究通过对语音信号的多层次分析,成功提取了 467 个语音特征指标。请参阅 上面的 GitHub URL 以获取 467 语音功能指示器。采用的分析方法包括时域分析、频域分析、MFCC 提取和基于中医诊断标准的特征转换。具体来说,时域分析反映了信号的基本波形特性和幅度变化,而频域分析揭示了信号的频率组成,有助于理解语音的频谱结构。MFCC 提取进一步捕获了语音信号的频谱特征,并将其转换为适合机器学习分析的形式。此外,本研究根据中医诊断标准转换了某些特征指标,以更好地符合本研究的特定需求和分析目标。最终,语音特征指数数据库包括 100 个语音样本(来自 50 名哮喘患者和 50 名健康对照者的数据),从中提取了 100 x 467 个语音特征指数。

数据分析结果

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

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

讨论

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

研究表明,SVM 和 RF 模型在测试集上都实现了 87% 的准确率,其中 SVM 模型的 AUC 值为 0.95,RF 模型的 AUC 值为 0.93。这可能是由于 SVM 模型对高维数据或非线性可分问题的建模能力更强,以及它对噪声或异常值的...

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

披露

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

作者没有需要声明的利益冲突。

致谢

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

本研究得到了国家自然科学基金青年科学基金项目(项目批准编号:82104739)和河北省中医药管理局科研计划(项目编号:B2025032)的支持。作者要感谢所有在实验过程中提供帮助的老师和学生。

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

材料

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

参考文献

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  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).

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

重印与许可

申请许可以重复使用本 JoVE 文章的文本或图表

申请许可

标签

Voice Feature AnalysisSupport Vector MachineRandom ForestAcoustic SensorsMATLAB AnalysisROC CurveNon Invasive Diagnosis

相关文章