AR ▾
احصل على مفتاح API

خادم واجهة برمجة تطبيقات Whisper: خيارات الإعداد وخطوة النص

خادم API الخاص بـ Whisper هو خدمة HTTP تقبل الملفات الصوتية وتعيد النص المحوّل. يتعامل مع الصوت فقط، لذا فإن أي شيء تريد القيام به مع الكلمات لاحقًا يحتاج إلى نموذج نصي منفصل.

تم التحديث

رسم توضيحي متساوي الأبعاد لتدفق الصوت من خادم إلى مجموعة من أسطر النص النظيف

نقاط رئيسية

  • Whisper هو نموذج تحويل الكلام إلى نص؛ يلتف الخادم حوله خلف نقطة نهاية HTTP.
  • يمكنك استئجار نقطة نهاية مستضافة، أو استضافة الغلاف بنفسك، أو تشغيل ملف تنفيذي محلي.
  • هذه الواجهة البرمجية للنصوص فقط: تقوم بالخطوة التي تلي النسخ، وليس الخطوة الصوتية.
  • ترتبط المرحلتان ببضع أسطر من Python باستخدام SDK الخاص بـ OpenAI مرتين.

الإجابة المختصرة

Whisper هو نموذج التعرف على الكلام مفتوح المصدر الذي نشرته OpenAI. بمفرده هو ملف نموذج وبعض كود الاستدلال. يضع الخادم واجهة HTTP أمامه، بحيث يمكن لتطبيقك إرسال ملف صوتي والحصول على نص بدلاً من استدعاء دوال Python مباشرةً.

تتبع معظم الخوادم نمط نقطة نهاية النسخ من OpenAI، POST /v1/audio/transcriptions، والتي تقبل رفعًا متعدد الأجزاء يحتوي على الملف الصوتي واسم النموذج. هذا النمط هو السبب في أن مكتبة العميل نفسها يمكنها التحدث مع خدمة مستضافة، أو حاوية على جهازك، أو غلاف صغير كتبه شخص آخر.

  • الإدخال: ملف صوتي، عادةً بصيغة mp3 أو wav أو m4a أو ما شابه.
  • الإخراج: نص عادي، أو JSON يحتوي على مقاطع وأوقات بدء، اعتمادًا على الخادم.
  • غير مشمول: الملخصات، الترجمة إلى نص منقح، استخراج بنود العمل. هذه تحتاج إلى نموذج لغوي.

ثلاث طرق للحصول على خادم Whisper

1. نقطة نهاية مستضافة

تقدم OpenAI نقطة نهاية مستضافة للنسخ إلى النص، وتقدم مزودون آخرون خدمات نسخ تعتمد على Whisper أيضًا. تدفع مقابل الاستخدام، ولا تدير العتاد، وترسل ملفات الصوت إلى بنية تحتية تابعة لغيرك. تختلف نماذج الفوترة بين المزودين، وتُفرض رسوم خدمات الكلام عادةً حسب مدة الصوت، لذا تحقق من الأسعار الحالية قبل الالتزام بحجم معين.

2. غلاف مستضاف ذاتيًا

توجد عدة مشاريع مفتوحة المصدر تغلف Whisper أو نسخاً معاد تنفيذها له في خادم ويب يحاكي طريق النسخ في OpenAI. تشغّله في Docker على جهاز مزود ببطاقة رسوميات (GPU)، أو على وحدة المعالجة المركزية (CPU) إذا كنت تقبل بمعالجة أبطأ. يمنحك هذا التحكم في مكان انتقال الصوت. كما يجعلك مسؤولاً عن تنزيل النماذج، وتحديثها، وإدارة الطوابير، وإعادة التشغيل.

3. ملف تنفيذي محلي

يُعد مشروع whisper.cpp نسخة C و C++ من النموذج، ويضم مستودعه خادم HTTP نموذجياً. يعمل على أجهزة الكمبيوتر الشخصية والخوادم الصغيرة، مما يجعله خياراً جيداً لنموذج أولي أو لمستخدم واحد ينسخ عددًا قليلاً من التسجيلات يومياً. بالنسبة للمهام الدفعية التي تمتد لمئات الساعات، تكون خدمة مدعومة بوحدة معالجة الرسومات (GPU) أكثر عملية عادةً.

اختر بناءً على ثلاث أسئلة: أين قد ينتقل الصوت، كم عدد الساعات التي تعالجها شهريًا، ومن سيحافظ على تشغيل الخدمة. تعمل خطوة النص الموضحة أدناه بنفس الطريقة مع أي من الخيارات الثلاثة.

أين يناسب واجهة برمجة تطبيقات (API) لنموذج لغة كبير (LLM) النصي بعد النسخ

نسخ Whisper الخام هو جدار من النصوص. يحتوي على قلة من فواصل الفقرات، وتغيب أسماء المتحدثين ما لم تضيف فصل المتحدثين بشكل منفصل، وتبقى كلمات الحشو. يرتكب Whisper أيضًا أخطاءً في أسماء المنتجات والمصطلحات المتخصصة والأسماء الخاصة. تضيف معظم المشاريع الحقيقية مرحلة ثانية تعمل على النص.

المهام النموذجية للمرحلة الثانية:

  • تصحيح علامات الترقيم، التقسيم إلى فقرات، إزالة البدايات الخاطئة.
  • تلخيص مكالمة أو محاضرة في بضع نقاط.
  • استخراج بيانات مهيكلة مثل القرارات والأسماء والتواريخ بصيغة JSON.
  • إعادة صياغة المادة المنطوقة إلى مقال، أو نص مسرحي، أو ملاحظات حلقة.
  • ترجمة النص المنقح أو توطينه.

وهنا تتناسب هذه الخدمة. إنها واجهة برمجة تطبيقات للنصوص متوافقة مع OpenAI، تحتوي على نموذج واحد، uncensored، ونافذة سياق بحجم 100,000 رمز، وتدعم البث المتدفق. غالباً ما يتسع نص مقابلة مدتها ساعتان لطلب واحد، لذا يمكنك تخطي منطق تقسيم النص الذي تفرضه نوافذ السياق الأصغر. للمواد الأطول، راجع دليل البدء السريع لتفاصيل الطلب.

النموذج مُعد للإجابة بدون رفض الإجابات للاستخدام القانوني للبالغين. يهم هذا في خطوط أنابيب النسخ لأن الصوت المصدر غير متوقع: مقابلات، بودكاست، قراءات خيالية، ومكالمات دعم تحتوي على لغة قوية ومواضيع صعبة. النموذج الذي يرفض تنظيف النص لأن المتحدث استخدم ألفاظًا نابية يهدر جلسة نسخ مدفوعة. الحد الصارم الوحيد هو عدم قبول أي شيء يتضمن محتوى جنسي مع القاصرين.

خط أنابيب ثنائي المرحلة يعمل

تتيح لك مكتبة Python الخاصة بـ OpenAI إنشاء عميلين بعنوان URL أساسي مختلف. يشير أحدهما إلى خادم Whisper الخاص بك، والآخر إلى هذه الواجهة. اضبط متغيرات البيئة لخدمة النسخ الخاصة بك؛ يستخدم العميل الثاني عنوان URL الأساسي لهذا الموقع.

import os
from openai import OpenAI

# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])

# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])

with open("call.mp3", "rb") as f:
    transcript = stt.audio.transcriptions.create(
        model=os.environ["STT_MODEL"],  # the model name your server expects
        file=f,
    )

resp = llm.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
        {"role": "user", "content": transcript.text},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

تفاصيلان سهلتان الوقوع في خطأ. أولاً، اسم نموذج النسخ هو أي اسم يتوقعه خادمك، ولهذا يأتي من متغير البيئة هنا. ثانياً، مفتاح واجهة النص منفصل عن أي مفتاح تملكه لخدمة الكلام؛ كل منهما يصادق فقط على مضيفه الخاص.

إذا كنت تفضل استخدام بيئة سطر الأوامر، فإن خطوة النص هي طلب إكمال محادثة عادي:

curl https://api.whisperapis.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
    ]
  }'

المصادقة تكون عبر مفتاح Bearer في رأس Authorization، والنقاط النهائية هي POST /v1/chat/completions وGET /v1/models. يمكنك الحصول على مفتاح من صفحة مفتاح API؛ حيث يمكن للحسابات الجديدة المطالبة برصيد تجريلي بقيمة $0.50 بنقرة واحدة، ساري لمدة 7 أيام دون الحاجة إلى بطاقة.

مشاكل شائعة في التطبيق العملي

ملفات الصوت الكبيرة

تضع العديد من خوادم Whisper حداً لحجم التحميل، وقد تنتهي مهلة الطلب في منتصف معالجة التسجيلات الطويلة. قسّم الصوت إلى أجزاء مدتها من عشر إلى ثلاثين دقيقة باستخدام أداة مثل ffmpeg، وحَوِّل كل جزء، ثم اجمع النصوص. بما أن واجهة برمجة التطبيقات للنصوص تقبل ما يصل إلى 100,000 رمز، يمكنك دمج الأجزاء وإرسالها كموجّه واحد. حد حجم جسم الطلب في هذه الواجهة هو 8 ميجابايت، وهو أكثر من كافٍ لأي نص محوّل.

حدود المعدل والتزامن

المفتاح الكامل يسمح بـ 8 طلبات متزامنة و300 طلب في الدقيقة؛ بينما يسمح المفتاح التجريبي بـ 2 و60. إذا كنت تشغّل طابوراً بعدة عمال، حدّه عند تزامن مفتاحك. تجاوز الحد يُعيد خطأ HTTP 429، مع الكود rate_limited للطلبات في الدقيقة أو concurrency للكثافة العالية في آن واحد. الطلب المتدفق (streaming) يحتفظ بمكانه حتى انتهاء البث، لذا قد يحجب العميل المتوقف مكاناً لفترة أطول مما تتوقع. تراجع وأعد المحاولة؛ إذا حملت الاستجابة رأس Retry-After: 5، انتظر المدة المحددة.

أخطاء النسخ التي لا يراها النموذج اللغوي الكبير

إذا سمع Whisper كلمة خاطئة، فإن نموذج النص يرى الكلمة الخاطئة فقط. قد يبرر الخطأ ويجعله يبدو مقصوداً. ضع قائمة مصطلحات وأسماء في موجّه النظام، وأمر النموذج بتحديد الأجزاء غير المؤكدة بدلاً من التخمين. للمواد الحرجة، احتفظ بالنسخة الأصلية بجانب النسخة المنقحة.

كلمات حشو مُختلَقة

أحياناً ينتج Whisper نصاً مُختلَقاً أثناء الصمت أو الموسيقى. قص الصمت قبل الإرسال، واطلب من المرحلة الثانية وضع علامة على الجمل التي تبدو غير ملائمة. درجة temperature المنخفضة، مثل 0.2، تجعل النتيجة النهائية للتنظيف قريبة من المصدر.

ما لا تفعله هذه واجهة برمجة التطبيقات

لا يقوم بتحويل الكلام إلى نص. لا يوجد إدخال صوتي، ولا مخرج كلامي، ولا توليد صور أو فيديو، ولا التضمينات، ولا ضبط دقيق. إنه نموذج نصي مستضاف خلف نقطة النهاية لإكمال الدردشة، وتشغله جهة مستقلة، وهو ليس واجهة برمجة التطبيقات الرسمية لـ OpenAI أو أي مورد نماذج آخر. إذا كان مشروعك يحتاج إلى النصفين، فأنت بحاجة إلى خادم كلام للجزء الأول وهذه الخدمة للجزء الثاني.

الموجّهات لا تُستخدم للتدريب. هذا منفصل عما يفعله مزود خدمات الكلام مع الصوت، لذا اقرأ شروط مزودك الخاص به.

لتخطيط التكلفة، تُفرض رسوم على جانب النص لكل رمز بمبلغ $0.15 لكل مليون رمز إدخال و$0.50 لكل مليون رمز مخرج، من رصيد مسبق الدفع لا ينفد. يصف صفحة التسعير أحجام شحن الرصيد والمكافآت. الطلبات الفاشلة أو المرفوضة من الخادم لا تُخصم، مما يمنع حلقات إعادة المحاولة من تكبدك تكاليف.

طريقة معقلة للبدء

  1. شغّل خادم متوافق مع Whisper، سواء كان مستضافاً أو محلياً، وتأكد من أنه يعيد نصاً لملف مدته دقيقة واحدة.
  2. أنشئ حساباً، استلم الرصيد التجريبي، وشغّل أمر curl أعلاه بنص مكتوب قصير.
  3. قم بربط العميلين معاً باستخدام سكريبت بايثون، باستخدام الموجّه الخاص بنظامك لتحديد نمط التنظيف الذي تريده.
  4. أضف طابوراً فقط بعد أن يعمل تدفق الملف الواحد، واضبط حجمه ليتناسب مع تزامن مفتاحك.

معظم الجهد يذهب إلى الموجّه ومعالجة الصوت، وليس إلى كود الربط. ابدأ بتسجيل واحد تعرفه جيداً، قارن المخرج مع ما سمعته، وعدّل التعليمات قبل التوسع.

أسئلة وأجوبة

هل خادم الـ Whisper API هو نفسه الـ OpenAI API؟

لا. Whisper هو نموذج، والخادم هو أي برنامج يعرضه عبر HTTP. تشغل OpenAI نسخة مستضافة واحدة، ويدير العديد من الأشخاص نسخهم الخاصة باستخدام أدوات مفتوحة المصدر التي تحاكي نفس مسار التحويل.

هل يمكن لهذه API تحويل الملفات الصوتية إلى نص؟

لا. تقبل النص فقط. استخدم خدمة تحويل الكلام إلى نص أو خادم Whisper خاص بك لإجراء خطوة التحويل، ثم أرسل النص المحوّل هنا.

ما اسم النموذج الذي أستخدمه لخطوة النص؟

استخدم uncensored كمعرّف النموذج، مع عنوان URL الأساسي https://api.whisperapis.com/v1 ومفتاحك كرمز Bearer.

كم يمكن أن يكون طول النص المحوّل الذي يمكنني إرساله؟

نافذة السياق هي 100,000 رمز، تغطي الموجّه والإكمال معاً. هذا يكفي للعديد من التسجيلات متعددة الساعات في طلب واحد.

هل أحتاج إلى بطاقة لتجربته؟

لا. يمكن للمستخدمين الجدد المطالبة برصيد تجريبي بقيمة $0.50 بنقرة واحدة في صفحة مفتاح API بعد التسجيل، دون الحاجة إلى بطاقة.

مفتاحك على بُعد نموذج تعبئة واحد

أنشئ حساباً، وانسخ المفتاح، ثم غيّر URL الأساسي. هذه هي الإعدادات الكاملة.

احصل على مفتاح API