هذا هو تنفيذ عينة WebApp لـ Openai Whisper ، وهو نظام التعرف على الكلام التلقائي (ASR) ، باستخدام Next.js.
إنه يسجل بيانات الصوت تلقائيًا وتحميل بيانات الصوت إلى الخادم لنسخ/ترجمة ثم يرسل النتيجة إلى الواجهة الأمامية. من الممكن أيضًا تشغيل الصوت المسجل للتحقق من الإخراج.
تحديث: إذا كنت تريد استخدام
Next 13مع تمكين الميزة التجريبية (APPDIR) ، فيرجى التحقق من Openai-Whisper-API بدلاً من ذلك. فقط اضبط العلم لاستخدام وحدة Python Whisper بدلاً من API Whisper.
باستخدام OpenAI Speech to Text API ، يرجى التحقق من Openai-Whisper-Api
إذا كنت تبحث عن تطبيق صوتي-Chat باستخدام Whisper ، فيرجى التحقق من Openai-Whisper-Talk.
لإصدار Nuxt.js ، يرجى التحقق من Openai-Chatterbox.
لقد قيل أن Whisper بحد ذاته غير مصمم لدعم مهام البث في الوقت الفعلي في حد ذاته ، لكن هذا لا يعني أننا لا نستطيع المحاولة ، دون جدوى ، LOL.
لذا فإن هذا المشروع هو محاولتي لجعل تطبيق ويب لنسخة المحاكاة في الوقت الفعلي تقريبًا باستخدام Openai Whisper . تعتمد فعالية ذلك على مدى سرعة نسخ الخادم/ترجمة الصوت.
لقد استخدمت Next.js حتى لا أضطر إلى صنع تطبيقات خلفية وواجهة منفصلة.
أما بالنسبة للواجهة الخلفية ، فقد استخدمت exec لتنفيذ أمر shell الذي يستدعي Whisper . لم أجد بعد طريقة import كوحدة node.js يبدو أن جميع الأمثلة مع import تستخدم python Server.
import { exec } from 'child_process'
exec ( `whisper './ ${ filename } ' --model tiny --language Japanese --task translate` , ( err , stdout , stderr ) => {
if ( err ) {
console . log ( err )
} else {
console . log ( stdout )
console . log ( stderr )
}
} ) لاحظ أنني فقط أستخدم النموذج tiny لأداء مهمة نسخ سريعة للغاية. هذا هو كل ما يمكن أن يعالجه نظامي وإلا فإنه سيصل إلى موقف لا يزال.

لقد غيرت سلوك التطبيق من الإصدار السابق. من قبل ، سيقوم التطبيق بتسجيل بيانات الصوت بشكل مستمر حسب فترة زمنية ، بشكل افتراضي 5s. في الوقت الحالي ، سيبدأ التسجيل فقط إذا كان بإمكانه اكتشاف الصوت.
هناك إعداد عتبة للتخلص من ضوضاء الخلفية من تشغيل التقاط الصوت. بشكل افتراضي ، يتم تعيينه على -45dB (0DB هو أعلى صوت). اضبط المتغير minDecibels في Settings إذا كنت ترغب في ضبطه على انخفاض أو أعلى اعتمادًا على احتياجاتك.
في المحادثة الإنسانية العادية ، يقال إننا نميل إلى التوقف ، في المتوسط ، حوالي 2 ثانية بين كل جمل. مع وضع ذلك في الاعتبار ، إذا لم يتم اكتشاف الصوت لأكثر من ثانيتين ، فسيتوقف التسجيل وسيتم إرسال بيانات الصوت إلى الواجهة الخلفية للنسخ. يمكنك تغيير هذا عن طريق تحرير قيمة maxPause ، بشكل افتراضي تم تعيينه على 2500ms .

من الممكن تشغيل الصوت الذي تم تحميله واتباع إخراج النص منذ عرض الفترة الزمنية.
بالنسبة للرمز نفسه ، استخدمت class component (أعرف ، أعرف ...) لأنني واجهت صعوبة في الوصول إلى state variables باستخدام الخطافات عندما كنت أتطور.

بصرف النظر عن minDecibels و maxPause ، يمكنك أيضًا تغيير العديد من خيارات Whisper مثل language model task من Settings الحوار. يرجى التحقق من مستودع GitHub Whisper للشرح في الخيارات.
لا يزال هناك الكثير من الأشياء للقيام بذلك لا يزال هذا المشروع قيد التقدم ...
أولاً ، تحتاج إلى تثبيت Whisper وتبعيات Python
$ pip install git+https://github.com/openai/whisper.git تحتاج أيضًا إلى تثبيت ffmpeg على نظامك
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg بحلول هذا الوقت ، يمكنك اختبار Whisper باستخدام سطر الأوامر
$ whisper myaudiofile.ogg --language Japanese --task translateإذا نجح ذلك ، يمكنك المتابعة لتثبيت هذا التطبيق.
استنساخ المستودع وتثبيت التبعيات
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev افتح متصفحك إلى http://localhost:3006/ لتحميل صفحة التطبيق.
قد ترغب في تشغيل هذا التطبيق باستخدام بروتوكول https . هذا مطلوب إذا كنت ترغب في استخدام جهاز منفصل لالتقاط الصوت واستخدام جهازك كخادم.
من أجل القيام بذلك ، قم بإعداد certificate المناسبة والملفات key وتحرير server.js في دليل الجذر.
ثم ركض
$ node server.js الآن ، افتح متصفحك على https://localhost:3006/ لتحميل الصفحة.