ಬ್ರೌಸರ್‌ನಲ್ಲಿ OpenVoice V2 ಅನ್ನು ಚಲಾಯಿಸುವುದು

ನಾನು Timeline Studio ಗಾಗಿ ಸ್ಥಳೀಯ (local), ಬಹುಭಾಷಾ ಧ್ವನಿ-ಕ್ಲೋನಿಂಗ್ (voice-cloning) ಕಾರ್ಯವಿಧಾನವನ್ನು ನಿರ್ಮಿಸಿದ್ದೇನೆ. ಎಲ್ಲವೂ ಬ್ರೌಸರ್‌ನ ಒಳಗಡೆಯೇ ನಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಯಾವುದೇ ಆಡಿಯೊ ಡೇಟಾ ಅಥವಾ ರೆಫರೆನ್ಸ್ ರೆಕಾರ್ಡಿಂಗ್‌ಗಳು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಬಿಟ್ಟು ಹೊರಗೆ ಹೋಗುವುದಿಲ್ಲ. ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಗೌಪ್ಯವಾಗಿ ಮತ್ತು ವೇಗವಾಗಿಡುತ್ತದೆ.

ಈ ವ್ಯವಸ್ಥೆಯು FP16 ONNX, WebGPU ಮತ್ತು IndexedDB ನೊಂದಿಗೆ OpenVoice V2 ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ.

ಕಾರ್ಯವಿಧಾನವು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

  • ಒಂದು ಭಾಷೆ ಮತ್ತು ಮೂಲ ಧ್ವನಿಯನ್ನು (base voice) ಆರಿಸಿ.
  • ಮೂಲ ಭಾಷಣವನ್ನು (source speech) ಸೃಷ್ಟಿಸಿ.
  • ರೆಫರೆನ್ಸ್ ಧ್ವನಿಯನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರೆಕಾರ್ಡ್ ಮಾಡಿ.
  • ಸ್ಪೀಕರ್ ಎಂಬೆಡ್ಡಿಂಗ್‌ಗಳನ್ನು (speaker embeddings) ಹೊರತೆಗೆಯಿರಿ.
  • ಟೋನ್-ಕಲರ್ ಕನ್ವರ್ಷನ್ (tone-color conversion) ಅನ್ನು ಚಲಾಯಿಸಿ.
  • ಫಲಿತಾಂಶವನ್ನು ಪೂರ್ವಿಮಾವಣೆ (preview) ಮಾಡಿ ಮತ್ತು ಉಳಿಸಿ.

ತಾಂತ್ರಿಕ ವಿವರಗಳು

ಈ ಎಂಜಿನ್ ಎರಡು ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲ್ಪಟ್ಟಿದೆ: WASM ಆಧಾರಿತ ರೆಫರೆನ್ಸ್ ಎನ್‌ಕೋಡರ್ ಮತ್ತು WebGPU ಚಾಲಿತ ಕನ್ವರ್ಟರ್. WebGPU ವಿಫಲವಾದರೆ, ಕನ್ವರ್ಟರ್ WASM ಗೆ ಮರಳುತ್ತದೆ (falls back), ಇದರಿಂದ ಎಲ್ಲರೂ ಇದನ್ನು ಬಳಸಬಹುದು.

ನಾನು ಪ್ರೊಡಕ್ಷನ್ ಮಾಡೆಲ್‌ಗಾಗಿ FP16 ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ. FP8 ಲಭ್ಯವಿದೆ, ಆದರೆ ಬ್ರೌಸರ್ ಬೆಂಬಲವು ಇನ್ನೂ ಸ್ಥಿರವಾಗಿಲ್ಲ. ಇಂದು FP16 ವೇಗ ಮತ್ತು ಆಡಿಯೊ ಗುಣಮಟ್ಟದ ಅತ್ಯುತ್ತಮ ಮಿಶ್ರಣವನ್ನು ನೀಡುತ್ತದೆ.

UI ಅನ್ನು ಸುಗಮವಾಗಿಡಲು, ನಾನು ಇನ್ಫರೆನ್ಸ್ ಪಥವನ್ನೆಲ್ಲಾ (inference path) Web Worker ಗೆ ವರ್ಗಾಯಿಸಿದ್ದೇನೆ. ಇದು ಭಾರೀ ಪ್ರೊಸೆಸಿಂಗ್ ಸಮಯದಲ್ಲಿ ಬ್ರೌಸರ್ ಫ್ರೀಜ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ಸಿಸ್ಟಮ್ ವೇಗವನ್ನು ಕಡಿಮೆ ಮಾಡದೆ ಆಡಿಯೊ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲು ನಾನು transferable ArrayBufferಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.

ಆಡಿಯೊ ಗುಣಮಟ್ಟದ ಹಂತಗಳು

  • 22,050 Hz ಗೆ ರೀಸ್ಯಾಂಪಲ್ ಮಾಡಿ.
  • ಕನ್ವರ್ಷನ್ ಗಾಗಿ STFT ಅನ್ನು ಅನ್ವಯಿಸಿ.
  • RMS ಆಕ್ಟಿವಿಟಿಯನ್ನು ಬಳಸಿ ಟೇಲ್‌ಗಳನ್ನು (tails) ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕ್ಲೀನ್ ಮಾಡಿ.
  • ಹೆಚ್ಚಿನ ವಾಲ್ಯೂಮ್‌ನಲ್ಲಿ ಕ್ಲಿಪ್ಪಿಂಗ್ ಆಗುವುದನ್ನು ತಪ್ಪಿಸಲು ಸಿಗ್ನಲ್ ಅನ್ನು ಸಾಫ್ಟ್-ಲಿಮಿಟ್ ಮಾಡಿ.

ಸ್ಟೋರೇಜ್

ನಾನು ಸ್ಪೀಕರ್ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು IndexedDB ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತೇನೆ, ಇದು ಎನ್‌ಕೋಡರ್ ಅನ್ನು ಮತ್ತೆ ರನ್ ಮಾಡದೆಯೇ ವಿವಿಧ ಭಾಷೆಗಳಲ್ಲಿ ಧ್ವನಿಯನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ನಾನು ಸ್ಮಾರ್ಟ್ ಕ್ಯಾಷಿಂಗ್ ಅನ್ನು ಸಹ ಸೇರಿಸಿದ್ದೇನೆ. ಮಾಡೆಲ್ Hugging Face ಅಥವಾ ModelScope ನಿಂದ ಸಮಾಂತರವಾಗಿ (parallel) ಡೌನ್‌ಲೋಡ್ ಆಗುತ್ತದೆ; ಬ್ರೌಸರ್ ಕ್ಯಾಶ್ ತುಂಬಿದರೆ, ಸಿಸ್ಟಮ್ ಎರರ್ ತೋರಿಸುವ ಬದಲು ಮೆಮೊರಿಯಿಂದ ಮಾಡೆಲ್ ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ.

ಈ ಪ್ರಾಜೆಕ್ಟ್ ಕೇವಲ ಒಂದು ONNX ಮಾಡೆಲ್ ಮಾತ್ರವಲ್ಲ—ಇದು ಮಾಡೆಲ್ ಡೆಲಿವರಿ, ಹಾರ್ಡ್‌ವೇರ್ ಫಾಲ್‌ಬ್ಯಾಕ್ ಮತ್ತು ಲೋಕಲ್ ಡೇಟಾ ಪರ್ಸಿಸ್ಟೆನ್ಸ್ (local data persistence) ಗಾಗಿ ಸಂಪೂರ್ಣ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ.

ರಿಪೊಸಿಟರಿ: 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