第一步永远是权限
网页通过 Media Capture and Streams 接口请求音频输入。浏览器应向用户显示权限提示,页面只能在授权后获得媒体流。权限并不意味着网站必须上传录音:流可以只连接本地处理节点,也可以经用户明确操作后编码并发送。
安全设计需要同时说明“使用麦克风”和“数据去哪里”。只显示浏览器权限图标,不足以解释保存、公开或删除规则。
Web Audio 是一张音频图
Web Audio 使用节点连接来表示处理流程:麦克风或音频文件是源,增益、滤波器与分析器是中间节点,扬声器或内存缓冲是输出。AnalyserNode 可以提供最近一段信号的时域数据和经 FFT 得到的频域数据;FFT 大小越大,频率分辨率通常越细,但计算与时间窗口也更大。
MelodyCanvas 没有麦克风输入,它用采样缓冲、音高移调和时间调度合成音乐。FrostNote 则读取麦克风帧,在浏览器本地估计 F0,并把即时结果画到界面。
本地处理与服务端处理怎样选择
| 方式 | 优势 | 限制与责任 |
|---|---|---|
| 浏览器本地 | 低延迟,原始音频可不离开设备,适合即时反馈与合成。 | 受设备性能、浏览器差异和页面生命周期限制,复杂模型较难运行。 |
| 服务端 | 工具链统一,可运行统一的音频解码、声学特征提取或较大模型。 | 必须传输数据,需要明确保留时间、访问控制、错误清理和公开范围。 |
CVoice 与 Insight 选择服务端分析以保持特征实现一致;FrostNote 与 MelodyCanvas 选择本地路径以获得即时互动。不存在对所有场景都最优的单一方案。
“本地”也需要隐私意识
本地分析减少上传,并不等于没有风险。页面仍应只在需要时请求权限、停止不用的媒体轨道、释放内存录音,并避免用音频设备特征做跨站识别。W3C 规范也指出,音频处理能力可能暴露设备特征,因此不应采集与产品目的无关的信息。
判断一个声音网页是否透明查看它是否说明:何时请求权限、原始音频是否上传、结果保留多久、是否公开播放、怎样删除,以及拒绝授权后还能否使用其他功能。