واجهة برمجة تطبيقات لنسخ الصوت مع Openai Whisper V3! مدعوم من قبل؟ المحولات ، الأمثل و flash-attn
سمات:
استنادا إلى مشروع هامس CLI بسرعة بجنون. تحقق من ذلك إذا كنت ترغب في إعداد هذا المشروع محليًا أو فهم خلفية WhiSper بجنون.
يركز هذا المشروع على توفير واجهة برمجة تطبيقات Fast Whisper Fast Whisper مع Docker على البنية التحتية السحابية مع وحدات معالجة الرسومات لحالات استخدام الإنتاج القابلة للتطوير.
مع إطلاق خدمة GPU الأخيرة ، قمت بإعداد ملف Config Fly للنشر بسهولة على آلات الطيران! ومع ذلك ، يمكنك نشر هذا على أي بيئة VM أخرى تدعم GPU و Docker.
فيما يلي بعض المعايير التي ركضناها على Nvidia A100 - 80GB و Fly.io GPU Infra؟
نوع التحسين | حان الوقت للنسخ (150 دقيقة من الصوت) |
---|---|
كبير V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 ) | ~ 2 ( 1 دقيقة 38 ثانية ) |
كبير V3 (المحولات) ( fp16 + batching [24] + Flash Attention 2 + diarization ) | ~ 2 ( 3 دقيقة 16 ثانية ) |
كبير V3 (المحولات) ( fp16 + batching [24] + Flash Attention 2 + fly machine startup ) | ~ 2 ( 1 دقيقة 58 ثانية ) |
V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization + fly machine startup ) | ~ 2 ( 3 دقائق 36 ثانية ) |
يبلغ وقت بدء التشغيل المقدر لآلة Fly مع GPU وتحميل النموذج حوالي 20 ثانية. يتم إنفاق بقية الوقت على الحساب الفعلي.
yoeven/insanely-fast-whisper-api:latest
Docker Hub: Yoeven/fact-fast-whisper-api
app
في fly.toml
إذا أردتimage = 'yoeven/insanely-fast-whisper-api:latest'
في fly.toml
فقط إذا كنت تريد إعادة بناء الصورة من Dockerfile
تثبيت ذبابة cli إذا لم يكن لديك بالفعل
تحتاج فقط إلى تشغيل هذا في المرة الأولى التي تقوم فيها بتشغيل تطبيق Fly جديد
fly launch
سوف يطير يطالب: Would you like to copy its configuration to the new app? (y/N)
. نعم ( y
) لنسخ التكوين من الريبو.
سوف يطالب Fly: Do you want to tweak these settings before proceeding
إذا لم يكن لديك أي شيء لضبطه. تم تكوين معظم الإعدادات المطلوبة بالفعل في ملف fly.toml
. لا n
للمتابعة والنشر.
أول مرة تنشرها ستستغرق بعض الوقت لأن الصورة ضخمة. ستكون عمليات النشر اللاحقة أسرع بكثير.
قم بتشغيل ما يلي إذا كنت ترغب في إعداد مذكرات السماعة أو رمز المصادقة لتأمين واجهة برمجة التطبيقات الخاصة بك:
fly secrets set ADMIN_KEY= < your_token > HF_TOKEN= < your_hf_key >
قم بتشغيل fly secrets list
للتحقق مما إذا كانت الأسرار موجودة.
للحصول على الرمز المميز للوجه المعانقة للمذكرات ، تحتاج إلى القيام بما يلي:
pyannote/segmentation-3.0
pyannote/speaker-diarization-3.1
hf.co/settings/tokens
.يجب أن تبدو واجهة برمجة التطبيقات الخاصة بك مثل هذا:
https://insanely-fast-whisper-api.fly.dev
قم بتشغيل fly logs -a insanely-fast-whisper-api
لعرض السجلات في الوقت الحقيقي لآلة الطيران الخاصة بك.
نظرًا لأن هذا تطبيق مقيد ، يمكنك نشره على أي مزود سحابي يدعم Docker و GPU مع بعض التعديلات على التكوين.
يوفر Jigsawstack مجموعة من واجهات برمجة التطبيقات القوية لمختلف حالات الاستخدام مع الحفاظ على التكاليف منخفضة. يتوفر هذا المشروع كأاجهات واجهة برمجة تطبيقات مُدارة بالكامل هنا مع قابلية التوسع السحابة المحسّنة لكفاءة التكلفة ووقت التشغيل المرتفع. اشترك هنا مجانًا!
إذا كنت قد قمت بإعداد سر البيئة ADMIN_KEY
. ستحتاج إلى تمرير x-admin-api-key
في الرأس بقيمة المفتاح الذي قمت بتعيينه مسبقًا.
إذا تم نشرها على الذبابة ، يجب أن يبدو عنوان URL الأساسي مثل هذا:
https://{app_name}.fly.dev/{path}
اعتمادًا على مزود السحابة الذي تنشره ، سيكون عنوان URL الأساسي مختلفًا.
/
نسخ أو ترجمة الصوت إلى نص
اسم | قيمة |
---|---|
عنوان URL (مطلوب) | URL من الصوت |
مهمة | transcribe translate الافتراضي: transcribe |
لغة | None ، en ، اللغات الأخرى الافتراضية: None يكتشف اللغة التلقائية |
batch_size | عدد الدُفعات المتوازية التي تريد حسابها. قلل إذا واجهت OOMs. الافتراضي: 64 |
الطابع الزمني | chunk ، word افتراضية: chunk |
diarise_audio | إهانة مقاطع الصوت من قبل السماعة. ستحتاج إلى تعيين HF_Token. الافتراضي: false |
webhook | WebHook POST Call على الانتهاء أو الخطأ. الافتراضي: None |
webhook.url | عنوان URL لإرسال webhook |
webhook.header | رؤوس لإرسالها مع webhook |
is_async | قم بتشغيل المهمة في الخلفية ويرسل نتائج إلى URL WebHook. true ، الافتراضي false : false |
managed_task_id | معرف المهمة المخصصة المستخدمة للإشارة إلى المهمة المستمرة. الافتراضي: uuid() v4 will be generated for each transcription task |
/tasks
احصل على جميع مهام النسخ النشطة ، وكلا مهام الخلفية غير المتزامنة والمهام المستمرة
/status/{task_id}
احصل على حالة المهمة ، وسيتم إزالة المهام المكتملة من القائمة التي قد ترمي خطأ
/cancel/{task_id}
إلغاء مهمة خلفية ASYNC. يمكن إلغاء وظائف النسخ التي تم إنشاؤها فقط باستخدام is_async
إلى true
.
# clone the repo
$ git clone https://github.com/jigsawstack/insanely-fast-whisper-api.git
# change the working directory
$ cd insanely-fast-whisper-api
# install torch
$ pip3 install torch torchvision torchaudio
# upgrade wheel and install required packages for FlashAttention
$ pip3 install -U wheel && pip install ninja packaging
# install FlashAttention
$ pip3 install flash-attn --no-build-isolation
# generate updated requirements.txt if you want to use other management tools (Optional)
$ poetry export --output requirements.txt
# get the path of python
$ which python3
# setup virtual environment
$ poetry env use /full/path/to/python
# install the requirements
$ poetry install
# run the app
$ uvicorn app.app:app --reload
يتم شحن آلات الذبابة من قبل الثانية وقد تستغرق ما يصل إلى 15 دقيقة من الخمول قبل أن تقرر إغلاقها. يمكنك إيقاف تشغيل الجهاز عند الانتهاء من واجهة برمجة التطبيقات لتوفير التكاليف. يمكنك القيام بذلك عن طريق إرسال طلب POST
إلى نقطة النهاية التالية:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
رأس التفويض:
Authorization Bearer <fly_token>
لير أكثر هنا
هذا المشروع جزء من Jigsawstack - مجموعة من واجهات برمجة التطبيقات القوية والودية للمطورين لمختلف حالات الاستخدام مع الحفاظ على التكاليف منخفضة. اشترك هنا مجانًا!