在浏览器中运行 OpenVoice V2

我为 Timeline Studio 构建了一个本地、多语言的语音克隆工作流。一切都在浏览器内部运行,因此音频数据或参考录音永远不会离开您的设备。这确保了您的数据既私密又快速。

该系统通过 FP16 ONNX、WebGPU 和 IndexedDB 运行 OpenVoice V2。

工作流原理

  • 选择一种语言和基础声音。
  • 生成源语音。
  • 上传或录制参考声音。
  • 提取说话人嵌入。
  • 进行音色转换。
  • 预览并保存结果。

技术细节

引擎分为两个部分:基于 WASM 的参考编码器和由 WebGPU 驱动的转换器。如果 WebGPU 运行失败,转换器会回退到 WASM,以便所有人都能使用。

我为生产模型选择了 FP16。虽然存在 FP8,但浏览器的支持尚不稳定。目前,FP16 在速度和音频质量之间提供了最佳的平衡。

为了保持 UI 流畅,我将整个推理路径移到了 Web Worker 中。这可以防止浏览器在进行繁重处理时发生冻结。我使用可转移的 ArrayBuffer 来传输音频数据,而不会降低系统速度。

音频质量处理步骤

  • 重采样至 22,050 Hz。
  • 应用 STFT 进行转换。
  • 使用 RMS 活动自动清理尾音。
  • 对信号进行软限制(soft-limit),以避免在高音量时出现削波(clipping)。

存储

我将说话人配置文件存储在 IndexedDB 中,让您可以在不同语言之间重复使用同一种声音,而无需重新运行编码器。

我还添加了智能缓存。模型会从 Hugging Face 或 ModelScope 并行下载;如果浏览器缓存已满,系统将从内存中运行模型,而不是抛出错误。

这个项目不仅仅是一个 ONNX 模型——它是一个涵盖模型交付、硬件回退和本地数据持久化的完整系统。

仓库: https://github.com/MartinDelophy/ai-video-editor

完整技术详解: https://dev.to/martindelophy/running-openvoice-v2-in-the-browser-with-fp16-onnx-webgpu-and-indexeddb-50kl

可选学习社区: https://t.me/GyaanSetuAi