OpenRouter Blogآخر تحديث

ElevenLabs متاح الآن على OpenRouter

ElevenLabs متاح الآن على OpenRouter مع 9 نماذج تحويل النص إلى كلام و2 من نماذج تحويل الكلام إلى نص. قدّم كلامًا بمشاعر شبيهة بالبشر مع Eleven v4، وامنح وكيلك ردودًا منخفضة زمن الاستجابة مع v4 Turbo، وحوّل الاجتماعات إلى…

مصدر الصورة · OpenRouter Blog

ElevenLabs متاح الآن على OpenRouter مع تسعة نماذج لتحويل النص إلى كلام ونموذجين لتحويل الكلام إلى نص.

إذا كان تطبيقك يتواصل بالفعل مع نموذج لغوي عبر OpenRouter، فأصبح بإمكانه الآن أن يتحدث ويستمع أيضًا. اسرد المحتوى الطويل بتوجيهات بشأن النبرة والأداء مع Eleven v4، وامنح وكيلك ردودًا منطوقة أسرع مع v4 Turbo، أو انسخ المحادثات مع تسميات المتحدثين مع Scribe v2. لا تحتاج إلى خطة ElevenLabs منفصلة. فقط استدعِ POST /api/v1/audio/speech و POST /api/v1/audio/transcriptions بمفتاح OpenRouter API الخاص بك.

جميع نماذج ElevenLabs بخصم 50% من سعر القائمة على OpenRouter لجميع عملاء OpenRouter حتى 19 أكتوبر، الساعة 8 صباحًا بتوقيت المحيط الهادئ

أي نموذج تستخدم

ابدأ بثلاثة نماذج واستخدم البقية عندما تتطلب المهمة ذلك:

  • السرد، الشخصيات، فيديوهات المنتجات: Eleven v4. تتيح وسوم الصوت أن يحمل النصُّ الأداءَ الفني.
  • وكلاء الصوت والردود الحية: Eleven v4 Turbo، بناها ElevenLabs للاستخدام في الوقت الفعلي، بنصف سعر v4.
  • النصوص المنقولة، ملاحظات الاجتماعات، التسميات التوضيحية: Scribe v2، مع تسميات المتحدثين وطوابع زمنية للكلمات.

استخدم Multilingual v2 عندما يحتاج الصوت الطويل إلى التحكم في السرعة، وFlash v2.5 للكلام عالي الحجم بما يصل إلى 40,000 حرف لكل طلب. أما Scribe v2 Medical فهو مضبوط للمصطلحات الطبية.

تحويل النص إلى كلام

النموذجمعرّف OpenRouterالحد الأقصى للأحرف لكل طلباختره من أجل
Eleven v4elevenlabs/eleven-v410,000أعلى جودة كلام لدى ElevenLab والأكثر تعبيرًا. سرد وتجسيد شخصيات معبّر مع وسوم صوت مثل [whispering] و[laughing]
Eleven v4 Turboelevenlabs/eleven-v4-turbo10,000ردود منخفضة زمن الاستجابة لوكلاء الصوت
Eleven v3elevenlabs/eleven-v35,000سرد درامي/تعبيري وتجسيد شخصيات مع وسوم صوت
Eleven v3 Conversationalelevenlabs/eleven-v3-conversational5,000حوارات متبادلة بنصف سعر v3. يتمتع بمدى درامي، مضبوط للحوار الحي.
Eleven Multilingual v2elevenlabs/eleven-multilingual-v210,000صوت طويل مستقر عبر لغات كثيرة، مع التحكم في السرعة.
Eleven Flash v2.5elevenlabs/eleven-flash-v2.540,000كلام متعدد اللغات سريع ومنخفض التكلفة بكميات كبيرة. 32 لغة متاحة.
Eleven Flash v2elevenlabs/eleven-flash-v230,000كلام سريع بالإنجليزية فقط
Eleven Turbo v2.5elevenlabs/eleven-turbo-v2.540,000نموذج الجيل الأول منخفض الكمون من ElevenLab، وقد تم تجاوزه الآن بـ Flash
Eleven Turbo v2elevenlabs/eleven-turbo-v230,000نموذج الجيل الأول منخفض الكمون من ElevenLab، وقد تم تجاوزه الآن بـ Flash

يسعّر ElevenLabs نماذجه في فئتين. تسدد Eleven v4 وv3 وMultilingual v2 السعر الكامل لكل حرف، بينما تسدد v4 Turbo وv3 Conversational وFlash وTurbo نصفه. الأسعار الحالية لكل حرف موجودة في صفحة كل نموذج في مجموعة Text to Speech.

تحويل الكلام إلى نص

النموذجمعرّف OpenRouterاختره من أجل
Scribe v2elevenlabs/scribe-v2تفريغ عام مع طوابع زمنية للكلمات وتسميات للمتحدثين ووسوم لأحداث صوتية بأكثر من 90 لغة
Scribe v2 Medicalelevenlabs/scribe-v2-medicalمصطلحات طبية مع 35% أخطاء أقل على الصوت السريري مقارنة بـ Scribe v2

كلا نموذجي Scribe يستخدمان نفس شكل الطلب ونفس السعر لكل ثانية. خدمة Realtime Scribe v2 عبر WebSocket ليست جزءًا من هذا الإطلاق.

شرح تفصيلي: من أول ملف MP3 إلى وكيل صوتي

سنقوم ببناء جولة تعريفية صغيرة بالمنتج في ثلاث خطوات. أولاً يرويها Eleven v4. ثم يجيب وكيل صوتي عن الأسئلة حولها، وأخيرًا يحوّل Scribe v2 اجتماع مراجعة الفريق إلى ملاحظات تُظهر من قال ماذا. إذا لم يسلك الطلب الطريقة التي تتوقعها، فراجع النصائح في النهاية.

عيّن مفتاحك مرة واحدة:

export OPENROUTER_API_KEY="your-api-key"

الخطوة 1: اسرد جولة تعريفية بالمنتج باستخدام Eleven v4

ابدأ بسطر واحد من التعليق الصوتي:

curl https://openrouter.ai/api/v1/audio/speech \
  --fail-with-body \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs/eleven-v4",
    "input": "[cheerfully] Welcome to the tour. [whispering] Let me show you the shortcut first.",
    "voice": "george",
    "response_format": "mp3"
  }' \
  --output intro.mp3

voice تقبل أيًا من الأصوات الجاهزة الـ 21 من ElevenLabs بالاسم (george هنا)؛ الأسماء ليست حساسة لحالة الأحرف. لاحظ response_format — انظر نصائح لطلباتك الأولى لكليهما.

الكلمات الموجودة بين الأقواس المربعة هي وسوم صوتية. يقرأ Eleven v4 وv3 الوسوم مثل [whispering], [laughing], [sighs]، و [curious] كتعليمات للأداء بدلاً من نطقها. الوسوم تُحتسب ضمن الأحرف المفوترة لك.

النص الكامل لجولة إرشادية أطول مما يسمح به طلب واحد (10,000 حرف في v4، و5,000 في v3)، لذا قسّمه عند حدود الفقرات. أما إعدادات ElevenLabs فقط فتوضع تحت provider.options.elevenlabs. مرّر النص المجاور كـ previous_text و next_text حتى تبقى النبرة متسقة عبر نقاط الوصل، وثبّت seed حيث تجعل عمليات إعادة التشغيل أكثر قابلية للتكرار:

import os

import requests

API = "https://openrouter.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"}
NARRATOR = "george"


def split_paragraphs(text: str, limit: int = 9000) -> list[str]:
    chunks, current = [], ""
    for para in text.split("\n\n"):
        if current and len(current) + len(para) + 2 > limit:
            chunks.append(current)
            current = para
        else:
            current = f"{current}\n\n{para}" if current else para
    return chunks + [current] if current else chunks


chunks = split_paragraphs(open("tour-script.txt").read())

with open("tour.mp3", "wb") as out:
    for i, chunk in enumerate(chunks):
        options = {"seed": 7}
        if i > 0:
            options["previous_text"] = chunks[i - 1][-500:]
        if i + 1 < len(chunks):
            options["next_text"] = chunks[i + 1][:500]
        r = requests.post(
            f"{API}/audio/speech",
            headers=HEADERS,
            json={
                "model": "elevenlabs/eleven-v4",
                "input": chunk,
                "voice": NARRATOR,
                "response_format": "mp3",
                "provider": {"options": {"elevenlabs": options}},
            },
        )
        r.raise_for_status()
        out.write(r.content)

الخطوة 2: الرد على الأسئلة باستخدام وكيل صوتي

والآن دع المستخدمين يطرحون أسئلة الجولة بصوت مسموع. يقوم وكيل صوتي بربط ثلاثة نماذج: Scribe v2 للسؤال، ونموذج محادثة للإجابة، وEleven v4 Turbo للرد. طوّرت ElevenLabs نسخة v4 Turbo للاستخدام في الوقت الفعلي، وتُحتسب تكلفتها بنصف سعر v4.

import base64


def transcribe(path: str) -> str:
    with open(path, "rb") as f:
        audio_b64 = base64.b64encode(f.read()).decode()
    r = requests.post(
        f"{API}/audio/transcriptions",
        headers=HEADERS,
        json={
            "model": "elevenlabs/scribe-v2",
            "input_audio": {"data": audio_b64, "format": "wav"},
        },
    )
    r.raise_for_status()
    return r.json()["text"]


def answer(question: str) -> str:
    r = requests.post(
        f"{API}/chat/completions",
        headers=HEADERS,
        json={
            "model": "openai/gpt-5-mini",
            "messages": [
                {"role": "system", "content": "You are the product tour guide. Answer in one or two sentences."},
                {"role": "user", "content": question},
            ],
        },
    )
    r.raise_for_status()
    return r.json()["choices"][0]["message"]["content"]


def speak(text: str, out_path: str) -> None:
    r = requests.post(
        f"{API}/audio/speech",
        headers=HEADERS,
        json={
            "model": "elevenlabs/eleven-v4-turbo",
            "input": text,
            "voice": NARRATOR,
            "response_format": "mp3",
        },
    )
    r.raise_for_status()
    with open(out_path, "wb") as f:
        f.write(r.content)


speak(answer(transcribe("question.wav")), "reply.mp3")

استجابة النسخ بصيغة JSON تحتوي على النص في text و usage كائن يُبلّغ عن ثواني الصورة الصوتية والقيمة بالدولار cost من الطلب. قم بتبديل openai/gpt-5-mini لأي نموذج دردشة في ال فهرس المنتجات دون لمس المكالمات الصوتية، والاحتفاظ بنفس voice إذًا يبدو الوكيل مثل الراوي من الخطوة 1.

الخطوة 3: حوّل اجتماع المراجعة إلى ملاحظات موسومة بأسماء المتحدثين

عندما يجتمع فريقك لمراجعة الجولة، يمكن لـ Scribe v2 أن يخبرك بمَن قال ماذا. قم بتحميل التسجيل بصيغة multipart، واطلب verbose_json بطبقات زمنية للكلمات، وقم بتعيين diarize تحت provider.options.elevenlabs. ثم تحمل كل كلمة في الرد هوية المتحدث. إذا كنت تعرف عدد الأشخاص الذين حضروا الاجتماع، فمرر num_speakers لتحسين الانقسام.

curl https://openrouter.ai/api/v1/audio/transcriptions \
  --fail-with-body \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -F file="@tour-review.mp3" \
  -F model="elevenlabs/scribe-v2" \
  -F response_format="verbose_json" \
  -F "timestamp_granularities[]=word" \
  -F provider='{"options": {"elevenlabs": {"diarize": true, "num_speakers": 3, "tag_audio_events": true}}}'

كل إدخال في words لدى word, start, end, confidence, speaker (عدد صحيح)، و speaker_label (speaker_0, speaker_1وهكذا). tag_audio_events يضيف مدخلات مثل (laughter) إلى جانب الكلمات. جمّع الكلمات المتتالية حسب speaker للحصول على الأدوار، ثم إرسال الأدوار إلى نموذج محادثة للحصول على ملخص وعناصر عمل:

def to_turns(words: list[dict]) -> list[str]:
    turns: list[tuple[int, list[str]]] = []
    for w in words:
        if turns and turns[-1][0] == w.get("speaker"):
            turns[-1][1].append(w["word"])
        else:
            turns.append((w.get("speaker"), [w["word"]]))
    return [f"Speaker {s}: {' '.join(ws)}" for s, ws in turns]

الحد الأقصى للتحميلات هو 25 MB، وهو ما يغطي حوالي 27 دقيقة من ملفات MP3 بجودة 128 kbps.

للتسجيلات الأطول، مرِّر رابط URL عامًا وسيقوم ElevenLabs بتنزيل الملف مباشرةً، وبالتالي لا ينطبق حد 25 ميغابايت:

"input_audio":{ "url": "https://example.com/tour-review.mp3" }

لا يزال من الممكن أن تصل الملفات الطويلة جدًا إلى مهلة الطلب الصادرة البالغة 180 ثانية، لذا قسِّم التسجيلات التي تكون طويلة.

نصائح لطلباتك الأولى

  1. اختر صوتًا بالاسم أو المعرّف. من أجل voice، مرِّر أيًا من الأصوات الجاهزة الـ21 من ElevenLabs بالاسم: george, sarah, adam, alice, bella, brian, charlie, daniel, jessica, roger, will وغيرها (القائمة الكاملة في صفحة كل نموذج). الأسماء غير حساسة لحالة الأحرف. لاستخدام أي صوت آخر، مرِّر معرّف الصوت الخاص به من ElevenLabs كـ voice — انسخه من صفحة مكتبة أصوات ElevenLabs. الأصوات التي تستنسخها أو تصممها تعيش في حسابك الخاص على ElevenLabs، لذا استخدم تلك الأصوات مع BYOK.
  2. اطلب mp3 عندما تريد ملفًا يمكنك تشغيله إذا تركت response_format، فإن نقطة نهاية الكلام لدينا تعيد PCM خام (16 بت بترتيب بايت صغير أحادي القناة بتردد 24 kHz). هذا مناسب لمسار معالجة صوتي، لكن معظم المشغلات لا يمكنها فتحه. عيّن "response_format": "mp3" للحصول على ملف قابل للتشغيل بتردد 44.1 kHz وبمعدل 128 kbps.
  3. استخدم Multilingual v2 أو Flash للتحكم في السرعة يأخذ كل من Multilingual v2 و Flash speed من 0.7 إلى 1.2. أما Eleven v4 و v4 Turbo فلا يحتويان على تحكم في السرعة ويرفضان قيمة غير افتراضية لـ speed، لذا اتركه خارجًا في هذين الطرازين وغيّر الإيقاع باستخدام وسوم الصوت بدلًا من ذلك.
  4. قسّم النصوص الطويلة لكل طراز حد أقصى لعدد الأحرف لكل طلب (انظر جدول الطرز). وسوم الصوت تُحتسب ضمن الحد وعلى الأحرف المفوترة لديك. قسّم عند حدود الفقرات كما في الخطوة 1، ومرّر previous_text و next_text لتصبح نقاط الوصل طبيعية الصوت.
  5. الإعدادات الخاصة بـ ElevenLabs توضع تحت provider.options.elevenlabs يقبل Text to Speech seed, previous_text, next_text, language_code, apply_text_normalization, apply_language_text_normalization, pronunciation_dictionary_locators, voice_settings (stability, similarity_boost, style, use_speaker_boost, speed)، و output_format (اسم تنسيق خاص بـ ElevenLabs مثل mp3_22050_32 أو pcm_16000; ويجب أن يطابق response_format برنامج الترميز الخاص بك). يقبل Speech to Speech diarize, num_speakers, diarization_threshold, tag_audio_events, no_verbatim، و seed. num_speakers و diarization_threshold تحتاجان إلى diarize: true، ويمكنك تعيين أحدهما وليس كليهما. استخدم أسماء الحقول تمامًا كما هي مذكورة. المفاتيح غير الموجودة في هذه القوائم يتم تجاهلها؛ والمفتاح المدرج بقيمة خاطئة يعيد رمز 400.
  6. يعيد Scribe رموز لغات من ثلاثة أحرف يمكنك إرسال تلميح language من حرفين (en). اللغة المكتشفة تعود كرمز ISO 639-3 (eng).

البداية

  1. أنشئ مفتاح OpenRouter API.
  2. قم بتقديم طلبك الأول باستخدام مثال curl في الخطوة 1 أعلاه.
  3. لمعرفة كل معامل، راجع دليلي تحويل النص إلى كلام و تحويل الكلام إلى نص .

يُحسب تسعير تحويل النص إلى كلام (Text to Speech) لكل حرف من النص المدخل، ويُحتسب كنقاط يونيكود (Unicode code points)، بحيث تحتسب الرموز التعبيرية أو حرف CJK مرة واحدة. تُحتسب وسوم الصوت كأحرف. أما Scribe فيُسعّر لكل ثانية من الصوت، ويخبرك حقل usage.cost في كل استجابة تفريغ بتكلفة ذلك الطلب. نمرر أسعار ElevenLabs كما هي دون أي هامش ربح؛ راجع صفحة كل نموذج لمعرفة السعر الحالي.

لديك بالفعل حساب على ElevenLabs؟

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

أنشئ مفتاح OpenRouter API، أو جرّب نموذجًا أولًا في ساحة التجربة (Playground). تحتوي أدلة تحويل النص إلى كلام و تحويل الكلام إلى نص على المرجع الكامل للطلب.

المصدر الأصلي

OpenRouter Blog

ملاحظات المحتوى

النشر الأصلي والحقوق تعود إلى المصدر.

ترجمة آلية · يُرجى الرجوع إلى الأصل