先问任务需要什么,而不是先选技术
实时音高反馈要求几十毫秒到数百毫秒内更新画面,原始声音没有长期价值;完整声音报告则需要统一解码和更复杂的特征汇总,设备差异可能让纯浏览器计算难以保持一致。选择处理位置时,应同时回答延迟、计算量、一致性、故障恢复和数据最小化五个问题。
CVoice 家族的四种实际路径
| 应用 | 处理位置 | 为什么这样选 |
|---|---|---|
| FrostNote | 浏览器本地检测音高 | 需要即时轨迹;服务端不需要原始录音和逐帧数据 |
| MelodyCanvas | 浏览器本地合成与调度 | 输入是画线而非麦克风,播放应立即响应编辑 |
| CVoice | 上传后服务端分析 | 统一处理多种文件格式并生成完整声音印象报告 |
| CVoice Insight | 服务端排队分析 | 处理链路更长,需要任务恢复和一致的报告生成 |
“本地”不自动等于安全,“服务端”也不自动等于滥用。真正的区别在于是否只收集完成任务必需的数据,以及页面有没有诚实说明生命周期。
上传之后,责任才刚开始
服务端路径至少需要处理传输加密、临时文件命名、访问隔离、成功与失败清理、异常中断恢复和最长保留时间。CVoice 的原始录音只用于当次分析并在完成或失败后删除;Insight 为排队和异常恢复保留任务状态,意外遗留的原始文件设置最长清理边界。生成的结构化结果与原始声音也必须分开描述,不能用一句“保护隐私”笼统带过。
本地路径同样需要在不用时停止麦克风轨道、释放内存录音,并避免把设备特征用于无关识别。FrostNote 的匿名统计只包含卡片、时长、精度分段和去重信息,不包含原始录音、声纹或逐帧音高。
用户怎样判断一个声音网站是否透明
- 麦克风是在进入页面时自动申请,还是在明确操作后申请?
- 声音仅在浏览器处理,还是会发送到服务器?
- 原始录音、分析结果和匿名统计分别保留多久?
- 失败、关闭页面或服务器重启时怎样清理?
- 结果是否会公开播放、进入排行榜或提供给第三方?
我们的原则功能可以复杂,数据说明必须简单。无法用普通语言解释一项数据为什么需要、保存多久,就应该重新考虑是否收集。