一边说话,
一边剪片。
Duplex Studio 是一个全双工语音驱动的 AI 视频剪辑系统:像对剪辑助理说话一样持续指挥——"把这段掐掉""节奏快一点"——可以随时插话、随时纠正、随时叫停,剪辑 Agent 在后台并行执行,每一步都可见、可干预、可撤销。基于开源项目 OpenChatCut 构建,我设计并实现了其上的全双工交互层与素材理解体验。
全双工的难点不在"同时听说",
在并发控制
-
对话式剪辑是"说完才动"
常见语音助手是串行的:说完、等、再看结果。但剪辑是并行创作——用户一边让 Agent 改轨道,一边还会问别的问题。黑盒式的后台执行让人不敢开口。
-
AI 会"谎报完成"
语音 Agent 最大的可信度杀手:模型说"好了",时间线上什么都没变。用户对"说完成了但没完成"的容忍度,远低于"多说一下正在应用"。
-
打断往往等于推倒重来
常见实现把打断当音频问题(cancel + rollback):用户说"换个节奏",连已经剪好的部分也被毁掉——这违背了剪辑的本能。
意图下行,状态上行
快路径只负责听、说、理解和路由(8 个非阻塞工具,承诺"永远先回应你");慢路径是带 120+ 编辑工具的后台 Agent(承诺"最终把时间线改对")。快慢分离,各自独立演进。
说话层:Live 返回 interrupted 即清空全部播放缓冲;意图层:纠正运行中的任务走 supersession——旧任务停止、已提交的修改保留,替换任务从最新时间线接续。
开口瞬间捕获编辑器焦点快照,"把这个删掉"的"这个"以快照为准;目标过期或歧义时显式拒绝而不是猜——破坏性操作下,宁可多问一句。
所有时间线写串行化,写操作携带 baseRevision,旧快照上的写必须显式 rebase 否则报错——永远不会静默写到错误的时间线上。这是和数据库同构的问题。
每个意图是一张任务卡,复合指令展开为最多 6 步的可见计划;语音可以暂停/恢复/取消任意后台任务,项目历史可搜索、刷新后可恢复。
视觉抽帧分段描述、本地 Whisper 转写(WebGPU 加速)、音乐节拍与情绪标签,一次任务覆盖三条模态并按内容哈希缓存——剪辑前自动 grounding,不删错素材。
体感流畅度
不是一个数字
首响延迟、打断反应、重规划延迟、首次剪辑落线——四个指标在 HUD 里直接可见。"感觉快"是多维的:首响快但打断反应慢,用户觉得"不听话";首响快但剪辑迟迟不落线,用户觉得"光说不做"。拆开测量,才能定位问题在哪一层。
它正好踩在这个方向的核心问题上
| Omni-Duplex 交互数据构建 | 结构化、可回放的意图信封 + 打断事件 + 纠错链 + revision 序列 |
|---|---|
| 用户打断、实时纠错、连接反馈 | 双层 barge-in、steerEdit supersession、焦点快照、运行时账本状态回注 |
| System 1 / 2 双系统与任务路由 | Live 快路径(8 工具)+ 后台 Agent 慢路径(120+ 工具)+ read / agent / write 三通道 |
| 前台持续交互、后台并行创作 | 并发通道 + Job/Task 两层任务系统 + 可见计划步进 + 语音随时暂停/恢复/取消 |
| 低延迟评测体系 | 首响 / 打断反应 / 重规划 / 首剪四维延迟指标内建 HUD |
开口,就是剪辑。
端到端可运行的桌面应用,支持导出 MP4 / 字幕 / FCPXML。