Exécuter OpenVoice V2 dans le navigateur
J'ai conçu un flux de travail local et multilingue de clonage de voix pour Timeline Studio. Tout s'exécute directement dans le navigateur, de sorte qu'aucune donnée audio ou enregistrement de référence ne quitte votre appareil. Cela garantit la confidentialité et la rapidité de vos données.
Le système fait fonctionner OpenVoice V2 avec FP16 ONNX, WebGPU et IndexedDB.
Fonctionnement du flux de travail
- Choisissez une langue et une voix de base.
- Générez la parole source.
- Téléchargez ou enregistrez une voix de référence.
- Extrayez les embeddings du locuteur.
- Lancez la conversion de la couleur tonale.
- Prévisualisez et enregistrez le résultat.
Détails techniques
Le moteur se divise en deux parties : un encodeur de référence basé sur WASM et un convertisseur propulsé par WebGPU. Si WebGPU échoue, le convertisseur bascule sur WASM afin que tout le monde puisse l'utiliser.
J'ai choisi le FP16 pour le modèle de production. Le FP8 existe, mais le support par les navigateurs n'est pas encore stable. Le FP16 offre aujourd'hui le meilleur compromis entre vitesse et qualité audio.
Pour maintenir une interface fluide, j'ai déplacé l'intégralité du chemin d'inférence dans un Web Worker. Cela empêche le navigateur de se figer lors de traitements intensifs. J'utilise des ArrayBuffer transférables pour acheminer les données audio sans ralentir le système.
Étapes de qualité audio
- Rééchantillonner à 22 050 Hz.
- Appliquer la STFT pour la conversion.
- Nettoyer automatiquement les queues de signal en utilisant l'activité RMS.
- Appliquer un soft-limit au signal pour éviter l'écrêtage à haut volume.
Stockage
Je stocke les profils de locuteurs dans IndexedDB, ce qui vous permet de réutiliser une voix à travers différentes langues sans avoir à relancer l'encodeur.
J'ai également ajouté une mise en cache intelligente. Le modèle est téléchargé en parallèle depuis Hugging Face ou ModelScope ; si le cache du navigateur est plein, le système exécute le modèle à partir de la mémoire au lieu de renvoyer une erreur.
Ce projet est bien plus qu'un modèle ONNX : c'est un système complet pour la distribution de modèles, le repli matériel et la persistance locale des données.
Dépôt : https://github.com/MartinDelophy/ai-video-editor
Analyse technique complète : https://dev.to/martindelophy/running-openvoice-v2-in-the-browser-with-fp16-onnx-webgpu-and-indexeddb-50kl
Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi
