هذا هو تنفيذ عينة 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/
لتحميل الصفحة.