整段平均振幅过滤
30秒片段抽样约1000点,计算平均绝对振幅。低于阈值直接跳过上传,解决完全安静片段浪费 AI 调用的问题。
avgAbs < 0.005 → SILENT它把分散的声音、照片和视频整理成可验证、可修正、可回看的家庭生活事件:几点起床、一天做了什么、孩子什么时候哭过和笑过,以及当天说过的话。
音频、照片和视频是证据;用户最终看到的是一天的生活时间线。
起床和入睡显示置信度、证据来源,并允许家人一键修正。
采集、媒体、数据库和任务队列常驻;Web/PWA 与电视关闭也不会中断。
边缘端先做 VAD;没有价值的空白声音不进入长期档案。
由群晖直接提供主界面;Mac、Windows、iPhone 和 iPad 访问同一份时间线。
上午在家活动,下午短暂午睡,晚上有较长的亲子互动。
起床已确认 · 入睡待确认
17段有效语音 · 已全部转写
3张事件照片 · 1段短视频
早上七点多起床,早餐后在客厅搭积木。十点左右因为玩具短暂哭闹,安抚后继续玩耍。午后睡了约一小时,傍晚和家人在客厅玩球,多次大笑。晚上八点半开始洗漱和讲故事,九点半后房间趋于安静。
连续环境声、人声和客厅活动共同指向起床。
“今天我们先吃鸡蛋,吃完再去搭积木。”
持续约46秒,随后检测到安抚对话,3分钟后情绪恢复。
12:42后活动和人声显著降低,13:51重新出现持续活动。
检测到6次清晰笑声;保存一张照片和12秒视频。
讲故事结束后持续安静,卧室没有新的声音或活动证据。
电视端不承担后台采集,只负责大屏回忆、播放和少量控制。
早上七点多起床,下午睡了一个小时,傍晚在客厅玩球时笑得很开心。
照片、视频与当时的声音已经关联到同一个事件。
不是把桌面程序搬到群晖,而是让每种设备只承担自己擅长的角色。
客厅 C270 通过 USB 直插客厅 Tower,只是固定音视频输入;Living-room Edge 与 Hub 都运行在 Tower。Action 5 Pro 是 Roaming Sensor;手机既是 Sensor,也是 Action 素材的移动桥。
Action 今天在卧室、明天在旅行,设备 ID 不变;每次采集单独记录 room、trip、GPS 或 unknown。
摄像头没有独立计算或网络上传节点;Tower直接读取音视频设备。
Edge负责滚动缓冲、VAD与封口;Hub负责数据库、媒体和任务状态。
云API调用留群晖;视频和本地模型交给Mac。
Web/PWA 和电视只通过API访问;卸载客户端也不影响历史。
算法运行在群晖 Edge,不依赖浏览器常驻;Web/PWA 只负责查看诊断、调参和回放验收。
客厅麦克风永远存在空调、风扇、电视和电子底噪。单纯判断样本是否非零没有意义;必须先在 Edge 上完成底噪估计、语音段判定和最短有效时长过滤。
保存的是带前后文的事件原片;给 AI 的是单独生成的修剪分析副本。旧网页版“拼接活跃段”的经验继续用于节省转写成本,但不覆盖原件。
这些不是重新想象的参数,而是仓库历史中已经运行过的实现。
30秒片段抽样约1000点,计算平均绝对振幅。低于阈值直接跳过上传,解决完全安静片段浪费 AI 调用的问题。
avgAbs < 0.005 → SILENT逐10ms块取峰值;连续静音结束当前活跃段,统计总有效语音,小于最短时长不上传,最终只编码活跃段。
peak > 0.04 · silence 0.1s · active ≥ 2s当前 writer 仅在0帧或全部 PCM 样本为0时删除文件;真实麦克风底噪必然非零,所以空房片段仍会封口并创建转写任务。
nonzero_samples == 0 → DROP;其它全部 SEALED第一版不用一上来引入重型模型。先实现可解释、可回放、可按设备校准的能量 VAD;边界片段再交给 WebRTC/Silero VAD 复核。
内存保留最近30–60秒,不持续写盘。
有帧但全零持续2.5秒,判权限/静音故障。
每块计算 RMS、Peak;不在实时回调做磁盘或网络。
用最近30–60秒非语音块的低分位更新 noise floor。
开始阈值高、持续阈值低,避免风扇边缘反复开关。
短静音不截断句子;保留3秒前文和5秒后文。
有效语音不足2秒默认不进入转写。
原始事件片段+静音修剪分析副本。
| 参数 | 保留的历史基线 | 新方案 | 确定方式 |
|---|---|---|---|
| 分析窗口 | 10ms block | 继续使用10ms RMS+Peak | 固定,不按设备变化 |
| 固定振幅阈值 | peak 0.04 | 仅作兼容回退,不作唯一判据 | 旧录音回放对照 |
| 底噪阈值 | 无 | 相对 noise floor 的开始/持续双阈值 | 每个设备滑动校准 |
| 静音切段 | 0.1s | 保留为历史起点,在0.1–0.5秒范围回放调优 | 不能切碎中文短句 |
| 最短有效语音 | 2s | 默认2秒;哭笑等非语言事件走独立规则 | 按事件类型配置 |
| 事件上下文 | 无 | Pre-roll 3秒 · Post-roll 5秒 | 覆盖突然开口和情绪恢复 |
| 全零故障 | 无 | 帧增长但全零2.5秒进入 Error | 沿用当前 Rust watchdog |
不能只对着一段样本调到“看起来正确”。每次参数修改都要重放同一组带人工标签的场景,比较漏录与误触发。
至少30分钟,不应生成长期语音片段。
持续机械声不得被误判成连续讲话。
作为独立来源标记,不能自动当作家庭成员对话。
验证自适应阈值不会漏掉小声和远场语音。
语音最短时长不能把短促哭笑事件过滤掉。
Pre-roll必须保住句首,切段不能破坏语义。
数据库和内部对象库隐藏;共享目录只展示已经整理好的家庭事件和导出。
数据库不能放在 SMB 共享目录里被直接修改;媒体原件按哈希保存,用户需要时生成按日期整理的可读视图。
媒体、推断、用户修正和每日总结必须分开,避免AI改写历史。
设备身份与能力,不把移动相机永久绑定房间。
一次采集的房间、旅行、时间与隐私上下文。
原始音频、图片、视频和传感信号。
哭、笑、起床、入睡、活动与对话等解释层。
转写、摘要、标签及其模型和版本。
AI只生成候选事件;高影响推断要经过证据检查和家人确认。
只保留最近30–60秒
语音、哭笑或手动保存
媒体哈希与原子写入
声音转文字、图片理解
时间、人物、活动、情绪
置信度、回放、人工修正
Web/PWA 与电视统一展示
先跑通一条黄金链路,再增加手机、Action 和 Apple TV;不同时重构全部系统。
第一阶段只要求:客厅声音进入群晖,空白被过滤,有效语音完成转写,Web/PWA 出现带证据的每日事件。
冻结 Device、Session、Observation、LifeEvent、DerivedArtifact、Evidence 和 Correction 数据契约;定义采集时段、保留期限和隐私开关。
建立原生 Rust 服务、SQLite、媒体对象库、幂等任务队列、Ingest API、健康检查和开机守护。
Edge Runtime与Hub同机运行在客厅Tower,直接读取C270 USB音视频;迁移网页版10ms分块、最短2秒、无缝换缓冲等经验,并增加自适应底噪、迟滞、3秒前录/5秒后录和Source/Analysis双产物。
实现 .partial、原子改名、SHA-256、对象存储、缩略图、用户可见导出和空间保留策略。
Analysis Clip 进入转写 Worker;结果记录说话人片段、时间戳、模型版本和到 Source Clip 的时间映射,失败可重试且不阻塞采集。
识别哭、笑、对话、活动开始/结束;以多信号推断起床、午睡、入睡,输出置信度和候选证据。
按本地日历日聚合事件,形成起居节律、做过的事情、情绪时刻和完整文本摘要;保留人工修订历史。
实现每日事件、时间线、全文搜索、媒体回放、推断确认、设备状态和隐私设置;Mac 可添加到程序坞,不再依赖固定 Tauri 主界面。
首版接 Synology Photos Connector;后续 GrowLog Mobile Bridge 支持后台队列、家庭 Wi-Fi、充电策略和断点上传。
旅行时经手机桥接;回家后通过 USB/SD Import Dock 自动导入原片。CaptureSession 动态记录 trip、room 或 unknown。
实现今日摘要、事件时间线、照片视频播放、声音文本字幕、保存成长时刻和隐私模式快捷控制。
执行断网、AI超时、群晖重启、磁盘逼近阈值、设备掉线、重复上传和权限攻击测试;建立备份、恢复及保留策略。
推断、证据、修正边界明确
VAD、封口、重启恢复
文本、事件、摘要可复核
手机与Action双通道去重
桌面、电视、隐私与恢复