[i=s] 本帖最后由 current-hu 于 2025-11-19 09:59 编辑 [/i]
【英飞凌 CY8CKIT-062S2-AI评测】英飞凌PSOC6 AI评估套件的智能鼾声监测系统评测
1. 项目概述
英飞凌PSOC™6人工智能评估套件是一款专为边缘AI应用设计的创新开发平台。该套件有着完整的AI开发生态,使用配套的DEEPCRAFT**™Studio平台,可以完成端到端的AI模型开发、优化和部署。当然硬件本身也是很抗打。双核MCU,兼顾高性能和低功耗需求。除此之外,接口丰富,可以对接多种传感器,原生支持数字麦克风、雷达、压力传感器等多种传感器,免去很多硬件配置的麻烦。最重要的是,有这么多功能,这款板子仍然小巧,实在是适合很多硬件AI产品的开发。此次拿到评估套件后,使用了鼾声检测模型来检测开发板的性能,接下来就是该项目的详细内容,一起来看看吧。
2. 硬件平台深度评测
2.1 开发板规格参数
| 参数类别 |
规格详情 |
测试结果 |
| 处理器 |
PSOC6 MCU (双核ARM Cortex-M4/M0+) |
处理性能优秀,满足实时AI推理需求 |
| 存储容量 |
8MB QSPI Flash |
足够存储复杂AI模型和运行数据 |
| 功耗表现 |
运行模式: 28.3mW低功耗模式: 6.7mW |
续航表现优异,适合长时间监测 |
| 接口支持 |
I2S、PDM、I2C、SPI、UART |
传感器兼容性良好 |
| 尺寸规格 |
35mm × 45mm |
紧凑便携,易于集成 |
2.2 物料清单
3. 相关平台软件安装步骤和使用
3.1 安装开发环境
1. 下载ModusToolbox(英飞凌官方开发工具)
访问:https://www.infineon.com/modustoolbox
下载对应操作系统的版本(约2GB)
2. 安装过程
- 双击安装包
- 选择默认安装路径
- 等待自动安装完成(约15分钟)
3.2 安装DEEPCRAFT**™**Studio
1. 注册英飞凌开发者账号
访问:https://www.infineon.com/deepcraft
点击"Sign Up"注册
2. 下载DEEPCRAFT™Studio
登录后进入控制台,下载AI开发平台
3.使用DEEPCRAFT™Studio创建项目
4.部署代码到硬件
- 打开modustoolbox
- 导入生成的项目:选择DEEPCRAFT™Studio生成的项目文件夹
- 配置硬件参数
- 编译项目
- 烧录到开发板
3连接开发板
- 用USB-C线连接开发板和电脑
- 等待电脑识别设备
- 检查设备管理器,确认串口出现
3.2 软件架构设计
采用分层架构和模块化设计,确保系统可维护性和扩展性:
- 数据采集层:串口通信、数据解析
- 业务逻辑层:鼾声检测算法、会话管理
- GUI层:GUI界面、数据可视化
- 服务层:数据持久化、报警管理
4. 软件系统实现
4.1 设计思路
- 硬件负责音频输入和AI运算,能够检测是否有鼾声;
- 数据通过串口上传给上位机软件;
- 上位机软件记录鼾声次数和持续时间,超过特定时间进行鼾声报警;
4.2 软件架构设计
采用分层架构和模块化设计,确保系统可维护性和扩展性:
- 数据采集层:串口通信、数据解析
- 业务逻辑层:鼾声检测算法、会话管理
- GUI层:GUI界面、数据可视化
- 服务层:数据持久化、报警管理
4.2 界面布局
- 开始停止功能
- 鼾声次数记录
- 持续鼾声报警功能
- 鼾声活动检测图像

4.3 核心功能模块
4.3.1 单次鼾声信号处理
每次检测到"snore"信号就记录当前时间戳
更新最后鼾声时间,用于超时检测
调用鼾声检测算法判断是否构成持续打鼾
def process_snore_signal(self):
"""处理snore信号"""
current_time = time.time()
self.snore_timestamps.append(current_time) # 记录时间戳
self.last_snore_time = current_time # 更新最后鼾声时间
self.total_snore_signals += 1 # 总计数+1
# 通知图表更新
if self.chart_callback:
self.chart_callback(current_time, 1.0)
# 检测呼噜会话
is_session, confidence, interval = self.detect_snore_session()
if is_session and not self.is_snoring:
# 开始新的呼噜会话
self.is_snoring = True
self.snore_session_start = current_time
self.total_snore_sessions += 1
print(f"检测到打鼾会话! 置信度: {confidence:.1f}%")
elif self.is_snoring:
# 更新正在进行的呼噜会话
session_duration = current_time - self.snore_session_start
print(f"持续打鼾中... 时长: {session_duration:.1f}秒")
4.3.2 鼾声持续检测
窗口大小:15秒
最小鼾声数:MIN_SNORES_FOR_SESSION(默认3次)
判断条件:在15秒窗口内至少有3次鼾声信号
def detect_snore_session(self):
"""检测呼噜持续"""
if len(self.snore_timestamps) < self.MIN_SNORES_FOR_SESSION:
return False, 0, 0
current_time = time.time()
time_window = 15.0 # 时间窗口大小
# 获取时间窗口内的呼噜信号
recent_snores = [t for t in self.snore_timestamps
if current_time - t <= time_window]
if len(recent_snores) >= self.MIN_SNORES_FOR_SESSION:
# 简单置信度计算
confidence = min(80 + (len(recent_snores) - self.MIN_SNORES_FOR_SESSION) * 10, 100)
# 计算平均间隔
intervals = []
for i in range(1, len(recent_snores)):
intervals.append(recent_snores[i] - recent_snores[i - 1])
avg_interval = np.mean(intervals) if intervals else 0
return True, confidence, avg_interval
return False, 0, 0
4.3.3超时检测
最大间隔:MAX_SNORE_INTERVAL(默认5秒)
最小会话时长:MIN_SESSION_DURATION(默认10秒)
结束条件:超过5秒没有新的鼾声信号
def check_session_timeout(self):
"""检查会话超时"""
if not self.is_snoring:
return
current_time = time.time()
silence_duration = current_time - self.last_snore_time # 静默时长
if silence_duration > self.MAX_SNORE_INTERVAL:
# 会话结束
session_duration = current_time - self.snore_session_start
if session_duration >= self.MIN_SESSION_DURATION and self.ui_callback:
# 准备会话信息
session_info = {
'start_time': datetime.fromtimestamp(self.snore_session_start).isoformat(),
'duration': session_duration,
'snore_count': len([t for t in self.snore_timestamps
if self.snore_session_start <= t <= current_time]),
'end_time': datetime.fromtimestamp(current_time).isoformat(),
'avg_interval': self.calculate_avg_interval()
}
# 回调UI触发报警
self.ui_callback(session_info)
print(f"呼噜会话结束: 持续{session_duration:.1f}秒")
self.is_snoring = False
5.常见问题及解决方案
5.1 开发板无法连接
✅ 解决方案:
1. 检查USB线是否插好
2. 尝试不同的USB端口
3. 重启电脑
4. 检查设备管理器中的串口编号
5.2 AI模型不准确
✅ 解决方案:
1. 重新训练模型,使用更多数据
2. 调整模型参数
3. 收集真实的鼾声数据进行微调
4. 检查音频预处理步骤
6.实现结果和结论
最终效果:就是当检测到鼾声时会显示鼾声预警;当持续十秒检测到多于5次鼾声时会出现音频报警。

测试效果还算可以,不过由于我使用的的是已经训练好的模型,所以在测试的时候,使用了不同的鼾声数据来对比,发现模型在鼾声特殊频率时会有更高效的检测结果,而在鼾声呼气阶段时会无数据输出;并且模型有时会在持续鼾声下显示未检测到。
我猜测可能是两个原因:①鼾声检测可能主要以特殊频率为特征量数据,所以鼾声吸气时会比呼气易检测②设置的参数不是很好,需要多次调整来适应。不过就目前来看,这个检测率还是比较高的,可以配合适当的软件算法也可以有很好的效果