Skip to content
b-y-fPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

啪停 PopStop · MVP

手机优先的静态网页:在浏览器本地监听袋装微波爆米花的爆裂声,并在爆裂节奏变慢时提示用户亲自停止微波炉。

暂定名称

啪停 PopStop — 中文直观表达“听到啪声、提醒停下”,英文名简短、便于 GitHub Pages 项目名和未来品牌延展。这个名称仅为产品暂定名;发布或商业化前应另行做商标与域名检索。

MVP 做了什么

  • 手机端优先的单页体验;不需要后端、构建工具或账号。
  • 通过 Web Audio API 在设备本地建立并持续更新环境噪声基线,结合音量起跳、瞬时尖峰和频谱变化识别短促声学突发;微波炉启动后持续上升的风扇声会进入单独的基线追踪,不再被连续算成爆裂。
  • 爆声检测使用短冷却自动复位,不要求微波炉风扇底噪重新降到安静水平;较闷但仍有明显尖峰的爆声也可走独立判定通道。
  • 使用可测试的阶段状态机:须先在两个连续时间窗内确认密集爆裂,积累至少 30 个候选并观察足够长的活跃段;只有爆裂率显著跌出本轮高峰后才使用较短的尾段间隔,开头零星爆裂和中段偶发空隙不会解锁提前提醒。
  • 提供“少焦糊 / 平衡 / 多爆一些”三个偏好,以及“太早 / 刚好 / 太晚”本机反馈校准。
  • 带有演示模式,可不使用微波炉预览交互。
  • 不录音、不上传音频、不控制微波炉。

部署到 GitHub Pages

  1. 新建一个 GitHub 仓库,例如 popstop。
  2. 将本目录中的 index.html、styles.css、app.js、popping-logic.js 和 pop-audio-detector.js 上传到仓库根目录并提交。
  3. 在 GitHub 仓库中打开 Settings → Pages。
  4. 在 Build and deployment 选择 Deploy from a branch,分支选择 main,文件夹选择 /(root),然后保存。
  5. 等待 GitHub 给出页面地址;在手机上通过该 https:// 地址打开。

浏览器只会在 HTTPS(如 GitHub Pages)下允许网页申请麦克风。不要用手机文件管理器直接双击 index.html 测试听音功能。

使用提示与边界

  • 手机放在微波炉外、干燥稳定的台面,建议离炉门约 0.5–1 米;不要放在微波炉上或靠近热气。
  • 开始监听后,前两秒用于建立环境噪声基线。尽量关闭音乐、减少谈话和餐具碰撞。
  • 这是辅助提醒 MVP,不是自动断电器,也不承诺唯一“完美秒数”。品牌、玉米含水量、微波炉功率和厨房噪音都会影响判断。
  • 请始终在微波炉旁,看到提示后由用户亲自停止,并以气味、包装说明及实际情况为准。

下一步验证建议

用固定计时和人耳“爆声间隔”规则作为对照,在不同品牌、微波炉功率及安静/嘈杂厨房中记录:焦糊率、未爆粒比例、过早提醒率、提醒时间误差,以及用户反馈后的变化。这样才能判断通用模型是否真的优于简单规则。

判定保护逻辑

停机提醒只会在以下顺序成立时出现:

  1. 相邻两个 4 秒时间窗内各至少有 3 个候选爆裂,先确认进入活跃段;
  2. 至少积累 30 个候选,并观察活跃段约 18 秒,才允许发出停机提醒;
  3. 爆裂率降到本轮峰值约 40% 以下并持续约 0.35 秒后,进入尾段判断;
  4. 尾段距最后一次候选爆裂达到用户偏好的 1.3 / 1.5 / 1.8 秒阈值时提醒;若爆裂仍处于高频活跃段,则继续使用至少 2.1 秒的保护间隔,避免被中段偶发空隙提前触发。

本次录音校正

tests/popcorn.m4a 中,微波炉于 0:02 启动、2:22 停止,有效加热约 140 秒。按“约 +5% 过火”将目标前移约 7 秒后,平衡模式的回放提醒点为约 2:15.1:它早于 2:15.26 的下一次爆裂,也不会把 2:22 的关机声当成继续烹饪的爆裂。该结果是针对这台微波炉、这次摆放和录音链路的校正,其他设备仍应继续用实际成品反馈微调。

这不是对“每一声都一定是爆米花”的保证;重叠爆声、手机麦克风处理和厨房碰撞声都可能影响结果。它主要防止开头一两声或零散噪声直接触发提醒。

核心时序逻辑在 popping-logic.js,实时瞬态检测在 pop-audio-detector.js。可运行以下回归测试:

node tests/audio-detector.test.js
node tests/popping-logic.test.js

前者覆盖持续风扇底噪、启动升速、较闷的弱爆声、单声去重和背景自适应;后者包含本次完整录音导出的候选时间线,锁定约 2:15.1 的校正提醒点,并覆盖中段短空隙、突然停止和演示流程。真实设备调参仍应优先使用同一部手机、同一摆放位置录制的完整一炉原始音频,并标记漏检发生的大致时间。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages