Rescript:一款开源的、基于浏览器的 Descript 替代方案
Rescript:一款开源的、基于浏览器的 Descript 替代方案
Rescript 是一款开源的、基于转录文本的视频编辑器,使用户能够像编辑文本文档一样编辑视频文件。通过删除生成的转录文本中的单词,视频中相应的片段会被自动剪切,提供了一种完全在浏览器端本地运行的流线型工作流。
本地处理与隐私
Rescript 在设计上默认保护隐私,确保媒体文件和转录文本永远不会离开用户的设备。不需要任何服务端处理、身份验证或文件上传。
虽然 AI 模型(约 90 MB)会在首次转录时从 Hugging Face Hub 下载并缓存到浏览器存储中,但所有后续操作——包括转录、编辑和导出——都可以在无网络连接的情况下运行。该应用程序发出的唯一外部请求是通过 Google Analytics 进行的匿名页面分析,当用户离线时,该请求会静默失败。
核心技术特性
Rescript 提供了一套用于基于文本的视频处理和自动清理的工具:
- 单词级编辑: 用户可以选中特定单词并按下退格键,从而从视频中移除相应的剪辑。
- 语气词移除: 一键式功能可识别并移除常见的语气词,如 "um" 和 "uh"。
- 逐字模式: 此模式会提示转录引擎在转录文本中保留语气词,以便进行手动编辑。
- 说话人日志(Speaker Diarization): 转录文本会按说话人自动分组,以组织对话内容。
- 实时预览: 播放引擎会实时跳过剪切区域,允许立即查看编辑效果。
- 浏览器内导出: 应用程序使用
ffmpeg.wasm在本地执行高精度的 MP4 渲染。
技术栈
Rescript 利用现代 Web 技术栈将繁重的媒体处理转移到客户端浏览器中:
| 组件 | 技术 |
|---|---|
| 框架 | Next.js, React, TypeScript, Tailwind |
| 转录 | 在 Web Worker 中运行 transformers.js 的 whisper-base_timestamped (WebGPU,带 WASM 回退方案) |
| 说话人标签 | pyannote-segmentation-3.0 (ONNX) |
| 媒体处理 | 用于音频提取和导出的多线程 ffmpeg.wasm |
| 状态管理 | zustand |
编辑工作流原理
应用程序通过四个阶段的流水线处理视频:
- 提取:
ffmpeg.wasm将音频轨道解码为单声道 16 kHz PCM。 - 转录: Whisper 在 Web Worker 中运行,并带有
return_timestamps: "word"参数,在生成文本的同时进行流式传输,同时pyannote为单词分配说话人。 - 编辑: 删除单词会创建原始媒体的“剪切范围”。这些范围在时间轴上以红色高亮显示,并在播放时被跳过。
| 4. 导出: 应用程序使用 ffmpeg 滤镜图来裁剪并拼接保留的范围,使用
libx264和aac对最终结果进行重新编码,以实现单词级的精确剪切。
浏览器要求
为了获得最佳性能,建议使用基于 Chromium 的浏览器。应用程序需要 SharedArrayBuffer(必须通过 COOP/COEP 头部进行提供),并在可用时利用 WebGPU 进行推理,否则回退到 WASM。
社区反馈与评论
在 Hacker News 上发布后,Rescript 收到了针对其开发理念和当前稳定性的褒贬不一的反应:
- 开发速度: 一些用户注意到开发速度——据报道使用 Cursor AI 编辑器仅用了 4 小时和 20 次提交——这既是一个兴趣点,也是关于 AI 生成软件质量的一个争论点。
- 可用性担忧: 一些用户报告了转录准确性问题、在某些硬件上的性能缓慢,以及在浏览 UI 时编辑内容缺乏持久化的问题。
- 命名冲突: 有人指出 "Rescript" 这个名字与现有的与 OCaml 和 ReasonML 相关的编程语言冲突。
- 价值主张: 关于将该项目定位为付费服务的省钱替代方案展开了讨论,一些批评者认为,构建免费替代方案所投入的时间超过了专业工具的月度订阅成本。