ബ്രൗസറിൽ OpenVoice V2 പ്രവർത്തിപ്പിക്കുന്നു
Timeline Studio-യ്ക്കായി ഞാൻ ഒരു ലോക്കൽ, മൾട്ടി ലിംഗ്വൽ വോയ്സ്-ക്ലോണിംഗ് വർക്ക്ഫ്ലോ നിർമ്മിച്ചു. എല്ലാം ബ്രൗസറിനുള്ളിൽ തന്നെ പ്രവർത്തിക്കുന്നതിനാൽ, ഓഡിയോ ഡാറ്റയോ റെഫറൻസ് റെക്കോർഡിംഗുകളോ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് പുറത്തേക്ക് പോകില്ല. ഇത് നിങ്ങളുടെ ഡാറ്റാ സ്വകാര്യതയും വേഗതയും ഉറപ്പാക്കുന്നു.
ഈ സിസ്റ്റം FP16 ONNX, WebGPU, IndexedDB എന്നിവ ഉപയോഗിച്ച് OpenVoice V2 പ്രവർത്തിപ്പിക്കുന്നു.
വർക്ക്ഫ്ലോ എങ്ങനെ പ്രവർത്തിക്കുന്നു
- ഒരു ഭാഷയും അടിസ്ഥാന ശബ്ദവും (base voice) തിരഞ്ഞെടുക്കുക.
- സോഴ്സ് സ്പീച്ച് ജനറേറ്റ് ചെയ്യുക.
- ഒരു റെഫറൻസ് വോയ്സ് അപ്ലോഡ് ചെയ്യുകയോ റെക്കോർഡ് ചെയ്യുകയോ ചെയ്യുക.
- സ്പീക്കർ എംബെഡിംഗുകൾ (speaker embeddings) എക്സ്ട്രാക്ട് ചെയ്യുക.
- ടോൺ-കളർ കൺവേർഷൻ പ്രവർത്തിപ്പിക്കുക.
- റിസൾട്ട് പ്രിവ്യൂ ചെയ്യുകയും സേവ് ചെയ്യുകയും ചെയ്യുക.
സാങ്കേതിക വിവരങ്ങൾ
എൻജിൻ രണ്ട് ഭാഗങ്ങളായി വിഭജിക്കപ്പെട്ടിരിക്കുന്നു: ഒരു WASM-അധിഷ്ഠിത റെഫറൻസ് എൻകോഡറും (reference encoder) WebGPU ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന ഒരു കൺവെർട്ടറും. WebGPU പരാജയപ്പെട്ടാൽ, കൺവെർട്ടർ WASM-ലേക്ക് മാറുന്നു, അതിനാൽ എല്ലാവർക്കും ഇത് ഉപയോഗിക്കാൻ സാധിക്കും.
പ്രൊഡക്ഷൻ മോഡലിനായി ഞാൻ FP16 ആണ് തിരഞ്ഞെടുത്തത്. FP8 ലഭ്യമാണെങ്കിലും, ബ്രൗസർ സപ്പോർട്ട് നിലവിൽ സ്ഥിരതയുള്ളതല്ല. ഇന്നത്തെ സാഹചര്യത്തിൽ വേഗതയും ഓഡിയോ ഗുണനിലവാരവും ഒത്തുചേരുന്ന മികച്ച ഓപ്ഷൻ FP16 ആണ്.
UI സുഗമമായി നിലനിർത്തുന്നതിനായി, ഞാൻ ഇൻഫറൻസ് പാത്ത് (inference path) മുഴുവനായി ഒരു Web Worker-ലേക്ക് മാറ്റി. ഇത് കനത്ത പ്രോസസ്സിംഗ് സമയത്ത് ബ്രൗസർ ഫ്രീസ് ആകുന്നത് തടയുന്നു. സിസ്റ്റത്തിന്റെ വേഗത കുറയ്ക്കാതെ ഓഡിയോ ഡാറ്റ കൈമാറുന്നതിനായി ഞാൻ ട്രാൻസ്ഫറബിൾ ArrayBufferകൾ ഉപയോഗിക്കുന്നു.
ഓഡിയോ ഗുണനിലവാരത്തിനായുള്ള ഘട്ടങ്ങൾ
- 22,050 Hz-ലേക്ക് റീസാമ്പിൾ ചെയ്യുക.
- കൺവേർഷനായി STFT ഉപയോഗിക്കുക.
- RMS ആക്ടിവിറ്റി ഉപയോഗിച്ച് ടെയിലുകൾ (tails) സ്വയമേവ ക്ലീൻ ചെയ്യുക.
- ഉയർന്ന വോളിയത്തിൽ ക്ലിപ്പിംഗ് ഒഴിവാക്കാൻ സിഗ്നൽ സോഫ്റ്റ്-ലിമിറ്റ് ചെയ്യുക.
സ്റ്റോറേജ്
ഞാൻ സ്പീക്കർ പ്രൊഫൈലുകൾ IndexedDB-യിൽ സൂക്ഷിക്കുന്നു, ഇത് എൻകോഡർ വീണ്ടും പ്രവർത്തിപ്പിക്കാതെ തന്നെ വിവിധ ഭാഷകളിൽ ഒരേ ശബ്ദം വീണ്ടും ഉപയോഗിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
ഞാൻ സ്മാർട്ട് കാഷിംഗും (smart caching) ചേർത്തിട്ടുണ്ട്. മോഡൽ Hugging Face അല്ലെങ്കിൽ ModelScope എന്നിവയിൽ നിന്ന് സമാന്തരമായി (parallel) ഡൗൺലോഡ് ചെയ്യുന്നു; ബ്രൗസർ കാഷ് നിറയുകയാണെങ്കിൽ, എറർ കാണിക്കുന്നതിന് പകരം സിസ്റ്റം മോഡൽ മെമ്മറിയിൽ നിന്ന് പ്രവർത്തിപ്പിക്കുന്നു.
ഈ പ്രോജക്റ്റ് വെറുമൊരു ONNX മോഡൽ മാത്രമല്ല—ഇത് മോഡൽ ഡെലിവറി, ഹാർഡ്വെയർ ഫോളബാക്ക് (hardware fallback), ലോക്കൽ ഡാറ്റാ പെർസിസ്റ്റൻസ് എന്നിവയ്ക്കായുള്ള ഒരു സമ്പൂർണ്ണ സിസ്റ്റമാണ്.
റിപ്പോസിറ്ററി: 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
