FDE Transcription Pipeline
From mobile capture to replayable transcript and agent-ready material.
1) 两条路径怎么走
同一个会话中有两条链路并行:
- Live path(实时链): 录音开始后,移动端会产出短时片段并上报,Web 端通过
GET /api/v1/processes/{id}/stream(SSE)获取增量transcript.*,用于“录制中可见”与草稿高亮。 - Final path(最终链): 停录后,原始 WAV 进入不可变提交路径,后台生成带时间轴的稳定
transcript.final,用于回放、对账和归档。
2) 会话与录音边界(机制)
- Start → Stop = 一个 logical recording:会话以一次 Start/Stop 为粒度落地一个 logical session,后端记录完整元信息与事件序列。
- Field / Sealed 的统一展示:Recordings 列表合并显示同一逻辑会话的 Field 与 Sealed,关联键仍是
logical_session_id;底层保留分离的状态与来源:live ledger 与 sealed backup。 - 5 分钟片段解释:这是本地持久化分片与容错策略,不是单次录音时长上限。一次长录音会连续生成多个分片,最终归并到同一逻辑会话。
3) 进度条、回放和高亮
音频播放通过签名 URL 拉流,播放器与时间线共享同一时间轴。点击字幕片段会按片段偏移跳转;若存在缺口,播放器自动跳转到下一可播放片段并在时间线显示 gap 提示。高亮与滚动由当前播放时间驱动。
4) 真实场景里怎么用
- 手机端持续捕捉,桌面显示“正在进行中”;
- 停录后可立刻看到可回放资产;
- 最终转写完成后可继续追加智能层(摘要、任务、提纲等);原始音频与底层事实层保持原样,仅追加派生分析。
4.1) 导入已有音频
工作区左上角的上传入口支持 WAV、AIFC/AIFF、M4A/AAC、MP3、FLAC、OGG/Opus。浏览器先在本地解码并生成 16 kHz 单声道 PCM 转写副本,然后把原始文件与标准副本分别做 SHA-256 绑定并保存,上传完成立即启动转写。原始文件不会被标准副本覆盖。
网页直接导入当前限制为原文件 32 MB、标准副本 25 MB(约 13 分钟)。更长音频请使用手机连续捕捉,或在本地 Agent 中运行 fde-agent upload /absolute/path/to/audio --workspace <id>。
5) 核心 API(简化)
- GET /api/v1/processes/{id}/stream:SSE GET,订阅实时增量事件(transcript/process updates)。
- POST /api/v1/processes/{id}/playback:生成 process 分片可播放签名 URL。
- POST /api/v1/assets/{id}/playback:生成 asset 片段可播放签名 URL。
- GET /api/v1/processes / /api/v1/assets:分页列表与搜索。
- GET /api/v1/logical-sessions/{logical_session_id}:按逻辑会话聚合 canonical transcript 与 artifacts。
- GET /api/v1/logical-sessions/{logical_session_id}/export:导出 markdown(仅按逻辑会话);未就绪时前端会回退到本地生成版本。
6) 发言人治理与重叠语音
- 发言人区间:当前治理范围覆盖 0–13 的 cluster id,支持手工命名、合并与持久化草稿。
- 重叠语音:重叠(overlap)标注为可选实验能力;在未完成校验前仅保留可见层,不替代原始事实层。
7) 离线补偿与外部 Agent/MCP 边界
- 离线补偿:客户端保留事件快照,重连/刷新时先重放会话快照再做增量对齐,避免 transient 丢段。
- 边界控制:原始证据与原始音频为只读底座;Agent/MCP 仅消费导出与派生 artifact,不直接回写证据主链。
- 权限边界:敏感原始资产不直接回写外部模型,必须经过统一会话导出与可审计流程。
8) 实施约束
- 原始音频与转录结果一旦落地为资产默认不可变。
- 后续 AI 输出只做 append-only 的派生层(不回写原始转录与源音频)。
- 跨端账号绑定到同一个 FDE 身份;同一用户可在手机、网页之间共享。