تشغيل OpenVoice V2 في المتصفح

لقد قمت ببناء سير عمل محلي متعدد اللغات لاستنساخ الصوت لـ Timeline Studio. كل شيء يعمل داخل المتصفح، لذا لا تخرج أي بيانات صوتية أو تسجيلات مرجعية من جهازك أبدًا. هذا يحافظ على خصوصية بياناتك وسرعتها.

يعمل النظام باستخدام OpenVoice V2 مع FP16 ONNX وWebGPU وIndexedDB.

كيف يعمل سير العمل

  • اختر لغة وصوتًا أساسيًا.
  • قم بتوليد الكلام المصدر.
  • ارفع أو سجل صوتًا مرجعيًا.
  • استخرج تضمينات المتحدث (speaker embeddings).
  • قم بتشغيل تحويل لون النغمة (tone-color conversion).
  • عاين النتيجة واحفظها.

التفاصيل التقنية

ينقسم المحرك إلى جزأين: مشفر مرجعي يعتمد على WASM ومحول مدعوم بـ WebGPU. إذا فشل WebGPU، ينتقل المحول تلقائيًا إلى WASM ليتمكن الجميع من استخدامه.

لقد اخترت FP16 لنموذج الإنتاج. يوجد FP8، لكن دعم المتصفحات له ليس مستقرًا بعد. يوفر FP16 أفضل مزيج من السرعة وجودة الصوت اليوم.

للحفاظ على سلاسة واجهة المستخدم، قمت بنقل مسار الاستدلال (inference path) بالكامل إلى Web Worker. هذا يمنع المتصفح من التجمد أثناء المعالجة الثقيلة. أستخدم ArrayBuffers قابلة للنقل لنقل البيانات الصوتية دون إبطاء النظام.

خطوات جودة الصوت

  • إعادة أخذ العينات (Resample) إلى 22,050 هرتز.
  • تطبيق STFT للتحويل.
  • تنظيف الذيول (tails) تلقائيًا باستخدام نشاط RMS.
  • وضع حد ناعم (Soft-limit) للإشارة لتجنب التشويه (clipping) عند مستويات الصوت العالية.

التخزين

أقوم بتخزين ملفات تعريف المتحدث في IndexedDB، مما يتيح لك إعادة استخدام الصوت عبر لغات مختلفة دون الحاجة لإعادة تشغيل المشفر.

أضفت أيضًا ذاكرة تخزين مؤقت ذكية. يتم تنزيل النموذج بالتوازي من Hugging Face أو ModelScope؛ وإذا امتلأت ذاكرة التخزين المؤقت للمتصفح، يقوم النظام بتشغيل النموذج من الذاكرة بدلاً من إظهار خطأ.

هذا المشروع هو أكثر من مجرد نموذج 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