在浏览器中运行 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://t.me/GyaanSetuAi
