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.jswhisper-base_timestamped (WebGPU,带 WASM 回退方案)
说话人标签 pyannote-segmentation-3.0 (ONNX)
媒体处理 用于音频提取和导出的多线程 ffmpeg.wasm
状态管理 zustand

编辑工作流原理

应用程序通过四个阶段的流水线处理视频:

  1. 提取: ffmpeg.wasm 将音频轨道解码为单声道 16 kHz PCM。
  2. 转录: Whisper 在 Web Worker 中运行,并带有 return_timestamps: "word" 参数,在生成文本的同时进行流式传输,同时 pyannote 为单词分配说话人。
  3. 编辑: 删除单词会创建原始媒体的“剪切范围”。这些范围在时间轴上以红色高亮显示,并在播放时被跳过。 | 4. 导出: 应用程序使用 ffmpeg 滤镜图来裁剪并拼接保留的范围,使用 libx264aac 对最终结果进行重新编码,以实现单词级的精确剪切。

浏览器要求

为了获得最佳性能,建议使用基于 Chromium 的浏览器。应用程序需要 SharedArrayBuffer(必须通过 COOP/COEP 头部进行提供),并在可用时利用 WebGPU 进行推理,否则回退到 WASM。

社区反馈与评论

在 Hacker News 上发布后,Rescript 收到了针对其开发理念和当前稳定性的褒贬不一的反应:

  • 开发速度: 一些用户注意到开发速度——据报道使用 Cursor AI 编辑器仅用了 4 小时和 20 次提交——这既是一个兴趣点,也是关于 AI 生成软件质量的一个争论点。
  • 可用性担忧: 一些用户报告了转录准确性问题、在某些硬件上的性能缓慢,以及在浏览 UI 时编辑内容缺乏持久化的问题。
  • 命名冲突: 有人指出 "Rescript" 这个名字与现有的与 OCaml 和 ReasonML 相关的编程语言冲突。
  • 价值主张: 关于将该项目定位为付费服务的省钱替代方案展开了讨论,一些批评者认为,构建免费替代方案所投入的时间超过了专业工具的月度订阅成本。

Sources