1. 引言
阻塞性睡眠呼吸暂停综合征(OSAS)是最常见和最具特征性的睡眠障碍,其主要特征是由于上气道在睡眠期间发生完全或部分阻塞,导致呼吸暂停或低通气,进而引发间歇性低氧[1] [2]。成人阻塞性睡眠呼吸暂停综合征(OSAS)的潜在风险因素包括超重肥胖、颈围较大以及颅面和上呼吸道结构异常等[3]。该疾病不仅会导致白天过度嗜睡、注意力不集中等症状,还容易引发高血压、冠心病等心脑血管疾病,严重影响个体的睡眠质量以及身心健康[4]。OSAS的研究分为诊断和治疗两个方面。多导睡眠监测(PSG)是诊断OSAS的“金标准”,然而PSG需要在医疗环境中进行,患者需整夜佩戴多个传感器,可能导致不适,而且操作复杂。对于治疗,OSAS的治疗方法包括气道正压通气(positive airway pressure, PAP)、口腔矫治装置、手术治疗、体位治疗、运动与减肥以及肌功能训练等。强制性的治疗方法,譬如手术治疗可以降低OSA的影响,但是依从性低[5]。
针对以上临床问题及挑战,Sillaparaya等人[6]提出了一种基于鼾声对OSA进行分类的深度学习模型,将音频片段的MFCC的平均值作为模型的特征输入,模型输出包括非鼾声、与OSA有关的鼾声和正常的鼾声。Shang等人[7]提出了一种基于深度学习的鼾声分析OSA的检测方法,对鼾声信号进行预处理,使用MFCC进行特征提取,然后利用提取的特征训练神经网络模型,用于从鼾声和呼吸声中检测出与OSA有关的鼾声。罗淮文[8]设计了一种可以检测打鼾和OSA事件的实时监测系统,利用机器学习模型用于将夜间音频分类为非打鼾、打鼾或与OSA相关的打鼾。针对治疗方面,体位治疗是一种手术以外的治疗OSAS的方式,简单、方便,但是依从性不高[9]。Zuberi等人[10]在临床上证明了止鼾枕对轻度的OSA有效果。曹娟等人[11]证明体位干预枕对阻塞性睡眠呼吸暂停低通气综合征患者的AHI有明显影响。传统的体位治疗依从性较低,患者往往难以保持特定的睡姿。
针对以往研究的局限性,有些研究设计对OSAS只具备检测功能而无干预措施,以及对呼吸暂停事件的干预效果较差。因此,本文设计了一种基于鼾声识别的睡眠呼吸暂停监测与体位干预系统。该系统由智能枕头及其相应的控制器组成,枕头配备有头部检测模块,采用Android手机内置麦克风进行音频采集,经过音频信号输入、MFCC (梅尔倒谱系数)特征提取、声压变化率(SPL)提取等过程,通过MFCC-SPL-CNN模型预测鼾声和睡眠呼吸暂停事件,然后通过蓝牙通讯传输至体位干预端,云端结合头部位置及其他睡眠数据做出干预并发送指令至体位干预端,干预端内置的芯片会启动气泵,驱动枕头内的气囊模块,气囊会根据预设的干预策略进行充气,改变枕头高度及形态,调整使用者头位高度或睡姿,反复监测、动态调节,形成实时监控和干预闭环。
2. 系统整体设计
本系统根据功能需求与实际可行性分析,设计分为检测端与干预端两部分。检测端由智能手机APP实现,负责声音信号采集与分析,完成鼾声识别和睡眠呼吸暂停(OSA)事件检测。干预端基于ESP32-WROOM-32E芯片实现,包含干预控制模块、头部位置判定模块和通信模块。检测端实时采集和处理声音信号,识别鼾声或OSA事件后,通过蓝牙将结果发送至干预端。干预端根据接收到的信息,结合头部位置判定与当前干预状态,动态决策并执行个性化干预。检测端与干预端的分工协同与实时通信,确保系统高效运行并实现OSA事件的及时干预。系统整体设计流程如图1所示。
Figure 1. Flow of system overall design
图1. 系统整体设计流程图
2.1. OSAS检测端
检测端是整个系统的核心部分,负责采集睡眠环境中的各种声音信号,确保数据可靠、高效地发送到云端进行处理,从而实现对睡眠呼吸暂停的实时监测和干预。该模块使用Android智能手机内置麦克风进行声音信号采集,采样率设定为8 KHz,量化精度为16-bit,并使用单通道(Mono)录音模式。此设置在保证音频信号质量的同时,减少了数据处理的计算负担,保证声音数据的精度,同时优化存储空间,适合后续在手机端进行实时处理与模型推理。
2.2. OSAS体位干预端
体位干预端通过枕芯中的柔性气囊实现非侵入式干预,以调整用户头部的位置。该系统基于鼾声和呼吸暂停事件的实时监测结果,通过蓝牙接收检测端传输的数据,并结合头部压力分布的反馈信息,动态调节枕头形状和高度,从而改变用户睡姿以缓解阻塞性睡眠呼吸暂停综合征(OSAS)的症状。系统设计避免了干预过程中大幅度调整导致用户觉醒,从而保证干预的有效性与舒适性。体位干预枕结构如图2所示。
Figure 2. Diagram of postural intervention pillow
图2. 体位干预枕结构图
3. 基于Mel倒谱系数和声压变化率的卷积神经网络鼾声识别模型
3.1. Mel倒谱系数
Mel倒谱系数(Mel-frequency Cepstral Coefficients, MFCC)是从音频信号中提取频谱特征的常用方法,特别适用于语音和声音分类任务。MFCC将时间序列的声波信号通过傅里叶变换转化为频域表示,然后通过Mel滤波器组将频谱进行处理,模拟人类听觉系统对不同频率的感知。接着,对经过Mel滤波的信号取对数,最后通过离散余弦变换(DCT)提取倒谱系数,得到一组用于表征音频信号特征的低维向量。这种特征提取方式能够有效地捕捉音频信号中的时频特征,尤其是在鼾声识别任务中,MFCC提供了对不同声学模式的精确表征,有助于区分正常呼吸与异常鼾声。MFCC的特征提取流程如图3所示。
3.2. SPL能量变化率
SPL能量变化率是衡量音频信号中每帧声压级变化速度的特征,能够反映声音能量随时间的动态变化。首先,声压级(SPL, Sound Pressure Level)通过以下公式计算:
(1)
其中PPP表示当前帧的声压,通常与音频信号的幅值成正比,P0为参考声压,通常取20 μPa (人耳听觉的最低可闻声压)。SPL能量变化率定义为相邻帧之间声压级的差异,公式为:
(2)
其中SPLt为当前帧的声压级,SPLt+1为下一帧的声压级,Δt为帧与帧之间的时间间隔。SPL能量变化率能够捕捉声音强度的时变信息,在打鼾检测中尤为重要,因为打鼾声通常伴随声压级的剧烈波动。通过将SPL能量变化率作为额外特征,模型可以更好地捕捉打鼾过程中的能量动态,有助于提高打鼾识别的准确性。
Figure 3. Flow of MFCC feature extraction
图3. MFCC特征提取流程图
3.3. MFCC-SPL-CNN模型构建
本文提出了基于MFCC-SPL特征提取的卷积神经网络(CNN)的鼾声识别模型。该模型共包含三层卷积层(Book1~Book3)和两层全连接层(FC1~FC2),并结合池化层和Dropout层以防止过拟合。模型的输入为二维的Mel频率倒谱系数(MFCC),大小为31 × 14,对应1024秒的音频片段。模型的具体结构如图4所示。
Figure 4. Diagram of MFCC-SPL-CNN model structure
图4. MFCC-SPL-CNN模型结构图
模型的卷积层采用3 × 3大小的卷积核,激活函数均为ReLU,每一层卷积操作后,模型逐步增加卷积核的数量,以提取更多高级的时频特征。在第二层卷积和第三层卷积之后,分别加入了最大池化层(MaxPooling),池化核大小为2 × 2,用于缩减特征图的空间维度,在卷积和池化操作之后,模型将三维特征图展平为一维向量,输入到全连接层中。全连接层使用了ReLU激活函数,逐步将特征压缩为较小的维度。在全连接层2后加入了Dropout层,丢弃30%的神经元。模型的最终输出层为一个二分类任务,使用Sigmoid激活函数,输出一个介于[0, 1]之间的概率值,用于判断输入片段是否含有鼾声。优化算法采用Adam优化器,初始学习率为0.001,损失函数模型采用二分类交叉熵(binary cross entropy),适用于二分类任务。在训练和验证过程中,模型使用准确率(accuracy)作为主要评估指标,以衡量模型的分类性能。网络模型具体参数如表1所示。
Table 1. Specific parameters of network model
表1. 网络模型具体参数
网络层 |
输出特征参数 |
卷积核大小 |
步长 |
参数数量 |
卷积层1 |
29 × 11 × 32 |
3 × 3 |
1 |
320 |
卷积层2 |
27 × 9 × 64 |
3 × 3 |
1 |
18,432 |
池化层1 |
13 × 4 × 64 |
2 × 2 |
2 |
0 |
卷积层3 |
11 × 2 × 128 |
3 × 3 |
1 |
73,856 |
池化层2 |
5 × 1 × 128 |
2 × 2 |
2 |
0 |
展平层(Flatten) |
640 |
|
|
0 |
全连接层1 |
128 |
|
|
82,048 |
全连接层2 |
64 |
|
|
8256 |
Dropout层 |
64 |
|
|
0 |
输出层 |
1 |
|
|
65 |
4. 呼吸暂停检测与干预
图5所示为发生呼吸暂停时原始音频和呼吸暂停时间区间100秒的SPL声压值以及当前时间点是否有鼾声的二维数据矩阵图。当SPL声压在发生打鼾时,明显有声压数据波动。而发生呼吸暂停时,波动率明显减小。通过基于时间序列的二维数据矩阵提取呼吸暂停算法的特征样本,进行后续的模型训练。
Figure 5. Diagram of apnea data feature
图5. 呼吸暂停数据特征图
4.1. 检测流程
在进行睡眠呼吸暂停检测时,基于对鼾声信号的分析以及相关文献的研究,明确了鼾声与睡眠呼吸暂停事件之间的关联。睡眠呼吸暂停的定义是当呼吸暂停持续超过10秒时,通常伴随着声压变化的停止和强烈的声压波动,最长可持续90秒。从原始鼾声信号到呼吸暂停检测的整个过程如图6所示。输入的连续的鼾声信号,计算每秒SPL声压值,通过预处理,标记每秒是否存在鼾声,用二进制标记(0表示无鼾声,1表示有鼾声)。生成一个包含100秒时长的二维矩阵,用来检测睡眠呼吸暂停事件。该矩阵的两个维度分别表示:SPL声压值:每秒的声压级(SPL)是对这100秒音频数据的能量计算,反映了鼾声的强度变化。鼾声有无标记,从当前检测点前推100秒,以捕捉呼吸暂停发生前的声压特征以及鼾声的存在情况。选择XGBoost作为主要的分类模型,确保了最终模型的高效性和可移植性,使得它能够在移动端设备上应用,为用户提供实时的睡眠呼吸暂停检测和体位干预反馈。
Figure 6. Diagram of apnea detection structure
图6. 呼吸暂停检测结构图
4.2. 体位干预过程
Figure 7. Flow chart of apnea postural intervention
图7. 呼吸暂停体位干预流程图
干预端通过CECS传感器检测使用者在枕头上的压力,计算头部位置并实时调整干预策略。当检测到呼吸暂停事件且干预尚未启动时,系统会对头部位置对应的气囊进行充气,抬高头部以促使自然侧转;若干预已启动,则判断头部位置是否发生移动:若头部未移动,则继续对当前气囊充气,逐步加大干预力度;若头部已移动,则先对前次充气气囊放气,再对新位置对应气囊充气。干预策略一旦启动,将持续3~5分钟。在此期间,枕头会持续调整气囊的状态,逐步促使使用者改变睡姿。若气囊达到最高位置后呼吸暂停未改善,系统将调整干预方向,使头部侧转朝另一方向进行干预。该过程可反复执行,直至打鼾或呼吸暂停情况显著改善。同时,系统在硬件设计中对气泵和气阀进行了全静音处理,避免干预噪音对用户造成不适或觉醒,保障干预的舒适性和有效性。呼吸暂停体位干预流程如图7所示。
5. 实验设置与结果分析
5.1. 数据集描述
本文实验所采用的数据集来源于复旦大学附属中山医院整夜实录的鼾声音频数据集。音频数据的采样率为8 kHz,并对原始音频进行了预处理,将其分割为1秒的片段,最终得到10,897个音频片段。这些片段经过人工标注,分为两类:含有鼾声的片段和无鼾声的片段。实验还选取了40个病人整夜呼吸暂停事件中的2000条样本数据,与多导睡眠监测PSG数据一一对应,其中包含1000条无呼吸暂停样本和1000条有呼吸暂停事件的样本,每条样本数据都包含100秒的SPL声压值和鼾声标记。具体数据集的划分情况如表2、表3所示:
Table 2. Snore dataset
表2. 鼾声数据集
样本类型 |
标签 |
训练集 |
测试集 |
有鼾声片段 |
1 |
3045 |
762 |
无鼾声片段 |
0 |
5672 |
1418 |
Table 3. Apnea dataset
表3. 呼吸暂停数据集
样本类型 |
标签 |
训练集 |
测试集 |
有呼吸暂停事件 |
1 |
200 |
800 |
无呼吸暂停事件 |
0 |
200 |
800 |
MFCC特征的二维图像在时频域上清晰地反映了不同类型音频片段的特征差异,本文将原始的一维音频信号通过梅尔频率倒谱系数(MFCC)进行特征提取,并转换为31 × 14的二维特征图。MFCC特征能够有效捕捉音频信号的时频变化,不同类别的音频片段(有鼾声和无鼾声)在MFCC特征图上表现出的区别明显,有助于模型对不同片段进行分类。不同类型音频的MFCC特征图如图8所示。
5.2. 实验结果与分析
为了验证所提出鼾声识别模型的性能,将预处理后的有鼾声和无鼾声的音频片段输入到卷积神经网络(CNN)模型中进行训练和测试。图9(a)和图9(b)分别展示了训练集样本在模型中的准确率曲线和损失值(Loss)曲线。训练过程中,模型的准确率和损失值随着迭代次数的增加逐渐改善,并在一定迭代次数后趋于稳定。在模型训练的第25个周期时,训练集的准确率达到了99.2%,同时损失值下降到0.09以下。此后,模型的准确率基本保持稳定,而损失值也维持在较低水平,表明模型在训练集上的性能达到了较为理想的状态。图9(c)和图9(d)分别展示了测试集样本数据在模型中的准确率曲线和损失值曲线。在第25个周期时,测试集的准确率达到了98.5%,损失值也下降至0.12以下。随着迭代次数的进一步增加,测试集的准确率和损失值变化较小,曲线趋于平缓,模型进入了稳定收敛状态。
Figure 8. MFCC feature images for different types of audio
图8. 不同类型音频的MFCC特征图
Figure 9. Snore recognition model diagnosis result graph
图9. 鼾声识别模型诊断结果曲线图
为了验证呼吸暂停检测模型的性能,将预处理后的有呼吸暂停和无呼吸暂停的音频片段输入到AdaBoost模型中进行训练和测试。图10(a)和图10(b)分别展示了训练集样本在模型中的准确率曲线和损失值(Loss)曲线。训练过程中,模型的准确率和损失值随着迭代次数的增加逐渐改善,并在一定迭代次数后趋于稳定。在模型训练的第20个周期时,训练集的准确率达到了96.7%,同时损失值下降到0.17以下。此后,模型的准确率基本保持稳定,而损失值也维持在较低水平,表明模型在训练集上的性能达到了较为理想的状态。图10(c)和图10(d)分别展示了测试集样本数据在模型中的准确率曲线和损失值曲线。在第20个周期时,测试集的准确率达到了95.6%,损失值也下降至0.26以下。随着迭代次数的进一步增加,测试集的准确率和损失值变化较小,曲线趋于平缓,模型进入了稳定收敛状态。
Figure 10. Apnea recognition model diagnosis result graph
图10. 呼吸暂停识别模型诊断结果曲线图
5.3. 临床实验验证
本研究在复旦大学附属中山医院睡眠呼吸障碍与鼾症诊治中心进行临床实验,选取了20名患有轻中度阻塞性睡眠呼吸暂停综合征(OSAS)的患者,该研究得到了复旦大学附属中山医院伦理委员会的批准(批号:No. B2012-073R),所有患者均获得知情同意。患者的年龄均控制在60岁以下,干预前后均进行实验室多导睡眠监测(PSG),记录相关睡眠呼吸参数,连续3天使用干预系统,对干预前后的AHI进行比较。20名患者的AHI干预前后的变化情况如图11所示,其中16名患者的AHI显著下降,另外4名患者未得到明显改善,体位干预系统的治疗有效率为80%。尤其是那些仰卧位睡眠时症状较重的患者,AHI下降率尤为显著。
Figure 11. AHI changes before and after intervention
图11. AHI干预前后变化示意图
6. 检测端应用程序展示
为方便用户数据的记录与分析,本研究设计开发了一款OSAS检测端应用程序,通过数据可视化功能直观展示使用者睡眠过程中采集的多维数据,了解自身的打鼾与呼吸暂停情况以及体位干预效果,应用程序的数据可视化模块侧重于以下两个维度,检测端应用程序如图12所示:
Figure 12. Schematic diagram of detection application
图12. 检测端应用程序示意图
1) 打鼾分析与趋势:
通过柱状图和音频波形图展示使用者在不同时间段内的打鼾频率、持续时间及强度。根据打鼾强度分为未打鼾、轻度打鼾、中度打鼾、重度打鼾四个等级。关键指标还包括(如总打鼾次数、打鼾时长、鼾声平均分贝等),根据打鼾次数进行等级评分,为后续干预效果的量化分析提供参考。
2) 呼吸暂停及低通气风险评估:
通过柱状图和音频波形图展示不同时间段的睡眠呼吸暂停事件和低通气事件次数以及呼吸暂停发作的持续时间),根据呼吸暂停事件发生次数进行风险等级评分,严重程度分为:轻度:5次 ≤ AHI < 15次/h,中度:15次 ≤ AHI < 30次/h,重度 ≥ 30次/h,这一功能有助于使用者评估其睡眠呼吸暂停综合症(OSAS)风险。
7. 结论
本文提出了一种基于鼾声信号的阻塞性睡眠呼吸暂停综合征(OSAS)检测与体位干预系统,通过检测端与干预端的协同工作,实现了对轻中度OSAS患者的非侵入式、个性化干预。通过研究得到了以下结论:
1) 检测端采用了基于MFCC-SPL特征提取的CNN模型进行鼾声检测,训练集准确率达到98.5%。对于呼吸暂停事件的检测,采用XGBoost算法,训练集准确率达到95.6%。结果表明,本系统能够准确捕获睡眠过程中的鼾声与呼吸暂停事件,为干预端提供了高效、可靠的输入数据。
2) 干预端通过动态调节枕头气囊高度与形状,改变用户的睡姿,减少鼾声及睡眠呼吸暂停事件的发生。本研究选取的20名患者在体位干预后AHI值下降,特别是在仰卧位睡眠时症状较重的患者中,AHI下降率尤为显著。体位干预枕的治疗有效率达到80%。
3) 系统通过检测端与干预端的蓝牙通信,形成了一个实时闭环的打鼾监测与干预解决方案。干预端根据睡眠阶段与鼾声强度智能调节气囊的干预力度与时长,避免了用户的觉醒,为实现无觉醒干预提供了一种新的技术路径。实验结果进一步表明,该系统不仅在干预有效性方面优于现有方法,还在用户舒适性方面表现出良好的反馈。
综上所述,本文研究的基于鼾声信号的OSAS检测与体位干预系统,为轻中度OSA患者提供了一种精确、非侵入式、个性化的治疗方案。未来的研究可进一步优化算法性能,拓展干预端的功能设计,并通过更大规模的临床实验验证系统的通用性和有效性。
NOTES
*通讯作者。