ব্রাউজারে OpenVoice V2 চালানো
আমি Timeline Studio-র জন্য একটি লোকাল, বহুভাষিক ভয়েস-ক্লোনিং ওয়ার্কফ্লো তৈরি করেছি। সবকিছু ব্রাউজারের ভেতরেই চলে, তাই কোনো অডিও ডেটা বা রেফারেন্স রেকর্ডিং আপনার ডিভাইস থেকে বাইরে যায় না। এটি আপনার ডেটাকে গোপনীয় এবং দ্রুত রাখে।
সিস্টেমটি FP16 ONNX, WebGPU এবং IndexedDB ব্যবহার করে OpenVoice V2 চালায়।
ওয়ার্কফ্লোটি যেভাবে কাজ করে
- একটি ভাষা এবং একটি বেস ভয়েস বেছে নিন।
- সোর্স স্পিচ জেনারেট করুন।
- একটি রেফারেন্স ভয়েস আপলোড বা রেকর্ড করুন।
- স্পিকার এমবেডিং (speaker embeddings) এক্সট্র্যাক্ট করুন।
- টোন-কালার কনভার্সন চালান।
- ফলাফল প্রিভিউ এবং সেভ করুন।
প্রযুক্তিগত বিবরণ
ইঞ্জিনটি দুটি অংশে বিভক্ত: একটি WASM-ভিত্তিক রেফারেন্স এনকোডার এবং একটি WebGPU-চালিত কনভার্টার। যদি WebGPU কাজ না করে, তবে কনভার্টারটি WASM-এ ফিরে যায় যাতে সবাই এটি ব্যবহার করতে পারে।
আমি প্রোডাকশন মডেলের জন্য FP16 বেছে নিয়েছি। FP8 থাকলেও ব্রাউজার সাপোর্ট এখনও স্থিতিশীল নয়। বর্তমানে গতি এবং অডিও কোয়ালিটির সেরা সমন্বয় দেয় FP16।
UI স্মুথ রাখার জন্য, আমি সম্পূর্ণ ইনফারেন্স পাথটি (inference path) একটি Web Worker-এ সরিয়ে নিয়েছি। এটি ভারী প্রসেসিং চলাকালীন ব্রাউজার ফ্রিজ হওয়া রোধ করে। সিস্টেমের গতি না কমিয়ে অডিও ডেটা আদান-প্রদান করার জন্য আমি ট্রান্সফারেবল ArrayBuffer ব্যবহার করি।
অডিও কোয়ালিটির ধাপসমূহ
- 22,050 Hz-এ রিস্যাম্পল করুন।
- কনভার্সনের জন্য STFT প্রয়োগ করুন।
- RMS অ্যাক্টিভিটি ব্যবহার করে স্বয়ংক্রিয়ভাবে টেলস (tails) ক্লিন আপ করুন।
- উচ্চ ভলিউমে ক্লিপিং এড়াতে সিগন্যালকে সফট-লিমিট করুন।
স্টোরেজ
আমি স্পিকার প্রোফাইলগুলো IndexedDB-তে সংরক্ষণ করি, যা আপনাকে এনকোডার পুনরায় না চালিয়েই বিভিন্ন ভাষায় একটি ভয়েস পুনরায় ব্যবহার করার সুযোগ দেয়।
আমি স্মার্ট ক্যাশিংও যোগ করেছি। মডেলটি Hugging Face বা ModelScope থেকে প্যারালালভাবে ডাউনলোড হয়; যদি ব্রাউজার ক্যাশ পূর্ণ হয়ে যায়, তবে সিস্টেমটি এরর না দেখিয়ে মেমরি থেকে মডেলটি চালায়।
এই প্রজেক্টটি কেবল একটি ONNX মডেল নয়—এটি মডেল ডেলিভারি, হার্ডওয়্যার ফলব্যাক এবং লোকাল ডেটা পারসিস্টেন্সের জন্য একটি পূর্ণাঙ্গ সিস্টেম।
Repository: https://github.com/MartinDelophy/ai-video-editor
Full technical breakdown: https://dev.to/martindelophy/running-openvoice-v2-in-the-browser-with-fp16-onnx-webgpu-and-indexeddb-50kl
Optional learning community: https://t.me/GyaanSetuAi
