Chạy OpenVoice V2 ngay trên trình duyệt

Tôi đã xây dựng một quy trình nhân bản giọng nói đa ngôn ngữ cục bộ cho Timeline Studio. Mọi thứ đều chạy ngay trong trình duyệt, vì vậy không có dữ liệu âm thanh hay bản ghi tham chiếu nào rời khỏi thiết bị của bạn. Điều này giúp dữ liệu của bạn luôn riêng tư và tốc độ xử lý nhanh chóng.

Hệ thống chạy OpenVoice V2 với FP16 ONNX, WebGPU và IndexedDB.

Cách thức hoạt động của quy trình

  • Chọn một ngôn ngữ và một giọng nói cơ bản.
  • Tạo giọng nói nguồn.
  • Tải lên hoặc ghi âm một giọng nói tham chiếu.
  • Trích xuất speaker embeddings.
  • Chạy chuyển đổi màu sắc âm sắc (tone-color conversion).
  • Xem trước và lưu kết quả.

Chi tiết kỹ thuật

Công cụ này được chia thành hai phần: một bộ mã hóa tham chiếu dựa trên WASM và một bộ chuyển đổi chạy bằng WebGPU. Nếu WebGPU không khả dụng, bộ chuyển đổi sẽ tự động chuyển sang sử dụng WASM để đảm bảo mọi người đều có thể sử dụng được.

Tôi đã chọn FP16 cho mô hình thực tế (production model). FP8 đã có nhưng hỗ trợ trên trình duyệt vẫn chưa ổn định. Hiện tại, FP16 mang lại sự kết hợp tốt nhất giữa tốc độ và chất lượng âm thanh.

Để giữ cho giao diện người dùng (UI) mượt mà, tôi đã chuyển toàn bộ luồng suy luận (inference path) vào một Web Worker. Điều này giúp ngăn trình duyệt bị treo trong quá trình xử lý nặng. Tôi sử dụng các ArrayBuffer có thể chuyển đổi (transferable) để truyền dữ liệu âm thanh mà không làm chậm hệ thống.

Các bước đảm bảo chất lượng âm thanh

  • Lấy mẫu lại (Resample) về 22,050 Hz.
  • Áp dụng STFT để chuyển đổi.
  • Tự động làm sạch phần đuôi âm thanh bằng cách sử dụng hoạt động RMS.
  • Giới hạn tín hiệu nhẹ (soft-limit) để tránh hiện tượng clipping ở âm lượng cao.

Lưu trữ

Tôi lưu trữ các hồ sơ người nói (speaker profiles) trong IndexedDB, cho phép bạn tái sử dụng một giọng nói cho nhiều ngôn ngữ khác nhau mà không cần chạy lại bộ mã hóa.

Tôi cũng đã thêm tính năng bộ nhớ đệm thông minh (smart caching). Mô hình sẽ được tải xuống song song từ Hugging Face hoặc ModelScope; nếu bộ nhớ đệm của trình duyệt đầy, hệ thống sẽ chạy mô hình trực tiếp từ bộ nhớ thay vì báo lỗi.

Dự án này không chỉ dừng lại ở một mô hình ONNX—đó là một hệ thống hoàn chỉnh để phân phối mô hình, dự phòng phần cứng và lưu trữ dữ liệu cục bộ.

Kho lưu trữ: https://github.com/MartinDelophy/ai-video-editor

Phân tích kỹ thuật đầy đủ: https://dev.to/martindelophy/running-openvoice-v2-in-the-browser-with-fp16-onnx-webgpu-and-indexeddb-50kl

Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi