暂停后真正停止设备采集
停止音轨 → 暂停录音与转写 → 重新申请设备 → 恢复会话
暂停释放浏览器麦克风输入,继续时重新取得原设备。权限拒绝或恢复失败时维持暂停状态,不以计时器继续运行伪装录音成功。系统共享无音轨时拒绝开始,不静默切回麦克风。
从实时转写到可回听的会议记录
声纪把录音视为会议记录的原始资料:实时转写用于跟随发言,会议结束后还能回听、校对、整理行动项和生成纪要。产品支持浏览器实时采集与文件任务,后端使用 Rust / Axum,会议数据、版本和任务记录保存到 SQLite。
可靠性的重点在录音长时间运行及失败之后。采集授权、音轨、录音分片、ASR 连接和总结请求会分别失败,页面需要准确呈现每个状态;本机备份、服务端归档和可撤销分享则决定用户能否恢复和安全交付会议资料。
单音源采集、分片备份、转写跟随、校对和恢复草稿。
统一会议权限、ASR 接入、文件任务和总结;运行目录与私有数据分离。
录音按片写入和按 Range 读取,文件解码分段,备份使用数据库一致性快照。
Web 提供试用工作流;Android 麦克风前台服务与桌面壳分别适配采集和恢复。
停止音轨 → 暂停录音与转写 → 重新申请设备 → 恢复会话
暂停释放浏览器麦克风输入,继续时重新取得原设备。权限拒绝或恢复失败时维持暂停状态,不以计时器继续运行伪装录音成功。系统共享无音轨时拒绝开始,不静默切回麦克风。
输入 + 任务落库 → FFmpeg 分段 → ASR → 分段保存 → 纪要
上传的文件和任务原子保存,后台逐段处理;页面关闭不会丢掉已经接收的任务,失败重试保留已确认结果。会议回听只使用可靠的时间偏移,缺少逐句时间的片段不伪装成精确字幕定位。
长会议可能遇到页面关闭、弱网和服务重启,整段音频只放在浏览器内存或只在结束时上传都会扩大数据丢失范围。
浏览器按片备份与上传,服务端归档逐片校验并写入增量 BLOB。未归档分片存在时拒绝直接结束会议;异常后根据本机副本和服务端残片继续保存,仍在写入的音频不强制归档。
录音保存失败和转写失败可以分别恢复;大音频播放使用 Range 按需读取,避免先下载整场会议。
会议校对可能与其他页面更新并发,重新生成纪要也可能使用已经变化的转写。覆盖最新数据会破坏可回溯性。
文字校对保留首次识别和本机草稿,保存校验会议版本;冲突时保留草稿。纪要生成时对输入版本做关联,转写或笔记变化后标记需要更新,并保留历史纪要版本用于恢复。
原始识别、人工修订与生成内容可以区分,用户能判断当前纪要是否对应最新会议。
一次打开分享页面后,如果播放器仍持有长期公开文件地址,撤销分享无法阻止后续音频请求。
音频通过短期授权流读取,每次请求检查分享权限和保存期限。页面周期复查分享状态,撤销、过期或网络异常后清除内容和播放源;恢复会议不恢复已经撤销的旧链接。
分享权限与实际数据读取保持一致;已经被接收者下载的内容仍属于独立副本。
同一会议模型承接实时采集和持久文件任务,保存与恢复逻辑共享。
按音频区间鉴权和读取,与分片存储、回听及字幕时间语义配合。
校对草稿、原始识别与纪要历史都有独立状态,不静默覆盖并发修改。