纪律监督 — 静音监控系统
本技能实现一套完整的静音监控方案:通过麦克风实时采集音频,分析音量级别,检测说话/噪音事件,并自动发出提醒。适用于自习室、考场、图书馆、课堂等需要维持安静秩序的场景。
核心能力
- 实时静音监控 — 持续采集麦克风音频,基于 RMS 能量检测噪音事件
- 灵活阈值配置 — 可自定义噪音阈值(分贝)、最小噪音持续时长、冷却时间
- 多级提醒策略 — 首次提醒(温和提示)→ 再次提醒(严肃警告)→ 持续噪音(严厉警告),逐级升级
- 噪音事件日志 — 完整记录每次噪音事件的时间、持续时长、音量等级
- 监控报告生成 — 会话结束后生成纪律监控报告(HTML 格式),包含统计图表和事件详情
- 声音波形可视化 — 生成监控期间的音量变化波形图
使用方式
启动静音监控
告诉用户运行以下命令启动监控:
python3 scripts/monitor.py start [选项]
常用选项:
- --threshold 30 — 噪音阈值(RMS 分贝,默认 30,范围 0-100,值越小越灵敏)
- --duration 1.0 — 持续超过阈值多少秒才算噪音事件(默认 1.0 秒)
- --cooldown 10 — 两次提醒之间的最短冷却时间(秒,默认 10)
- --session-name "晚自习" — 监控会话名称
- --record — 同时录音保存证据(保存到 recordings/ 目录)
示例:
# 使用默认参数启动
python3 scripts/monitor.py start --session-name "晚自习"
# 高灵敏度模式(适合要求极度安静的考场)
python3 scripts/monitor.py start --threshold 20 --duration 0.5 --session-name "期末考试"
# 低灵敏度模式(允许轻微翻书声的图书馆)
python3 scripts/monitor.py start --threshold 40 --duration 2.0 --session-name "图书馆3楼"
停止监控
python3 scripts/monitor.py stop
停止后会自动生成监控报告。
查看监控状态
python3 scripts/monitor.py status
生成监控报告
python3 scripts/monitor.py report [--session-id <id>]
快速测试麦克风
python3 scripts/monitor.py test-mic [--duration 5]
录制 5 秒音频并显示音量级别,帮助用户校准阈值。
噪音检测原理
系统通过以下步骤检测噪音:
- 以 16000 Hz 采样率从麦克风采集音频块(每块 0.5 秒)
- 计算每个音频块的 RMS(均方根)能量值
- 将 RMS 转换为分贝标度(0-100 范围)
- 当分贝值持续超过阈值达指定时长,判定为噪音事件
- 噪音事件触发后进入冷却期,避免重复提醒
阈值参考
| 场景 | 推荐阈值 | 说明 |
|---|---|---|
| 考场 | 15-25 | 极度安静,任何说话都能检测到 |
| 自习室 | 25-35 | 允许轻微翻书、写字声 |
| 图书馆 | 30-40 | 允许正常走动的脚步声 |
| 课堂 | 35-45 | 允许老师讲课,只检测学生喧哗 |
提醒策略
系统采用三级递进提醒:
-
第一级(温和提示) — 首次检测到噪音
- 桌面通知 + 轻柔提示音
- 提示文字:「检测到噪音,请保持安静」 -
第二级(严肃警告) — 冷却期后再次检测到噪音
- 桌面通知 + 警告音
- 提示文字:「再次检测到噪音,请自觉遵守纪律」 -
第三级(严厉警告) — 第三次及以上
- 桌面通知 + 急促警告音
- 提示文字:「多次检测到噪音!请立即保持安静」
每级提醒的显示时长和音量逐级增加。
监控报告
会话结束后自动生成 HTML 报告,包含:
- 会话概览:监控时长、噪音事件总数、平均噪音水平
- 音量波形图:整个监控期间的音量变化曲线
- 噪音事件时间线:每次噪音事件的时间、持续时长、音量等级
- 纪律评估:根据噪音频率和严重程度给出评分(A/B/C/D)
- 建议:针对监控结果的改进建议
文件结构
silence-monitor/
├── SKILL.md — 本文件
└── scripts/
├── monitor.py — 主监控脚本(启动/停止/报告)
├── audio_analyzer.py — 音频分析模块(RMS 计算、分贝转换)
├── alerter.py — 提醒模块(桌面通知、声音提示)
├── report_generator.py — 报告生成模块(HTML 报告 + 图表)
└── utils.py — 工具函数
注意事项
- 监控需要麦克风权限,确保系统已授权
--record选项会保存录音文件,请注意隐私合规- 在 Linux 系统上,桌面通知依赖
notify-send(如未安装会自动降级为终端输出) - 建议先用
test-mic命令测试环境噪音水平,再据此设置合适的阈值 - 长时间监控(超过 2 小时)建议使用
--cooldown 30增加冷却时间,避免提醒过于频繁