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 v4 | elevenlabs/eleven-v4 | 10,000 | أعلى جودة كلام لدى ElevenLab والأكثر تعبيرًا. سرد وتجسيد شخصيات معبّر مع وسوم صوت مثل [whispering] و[laughing] |
| Eleven v4 Turbo | elevenlabs/eleven-v4-turbo | 10,000 | ردود منخفضة زمن الاستجابة لوكلاء الصوت |
| Eleven v3 | elevenlabs/eleven-v3 | 5,000 | سرد درامي/تعبيري وتجسيد شخصيات مع وسوم صوت |
| Eleven v3 Conversational | elevenlabs/eleven-v3-conversational | 5,000 | حوارات متبادلة بنصف سعر v3. يتمتع بمدى درامي، مضبوط للحوار الحي. |
| Eleven Multilingual v2 | elevenlabs/eleven-multilingual-v2 | 10,000 | صوت طويل مستقر عبر لغات كثيرة، مع التحكم في السرعة. |
| Eleven Flash v2.5 | elevenlabs/eleven-flash-v2.5 | 40,000 | كلام متعدد اللغات سريع ومنخفض التكلفة بكميات كبيرة. 32 لغة متاحة. |
| Eleven Flash v2 | elevenlabs/eleven-flash-v2 | 30,000 | كلام سريع بالإنجليزية فقط |
| Eleven Turbo v2.5 | elevenlabs/eleven-turbo-v2.5 | 40,000 | نموذج الجيل الأول منخفض الكمون من ElevenLab، وقد تم تجاوزه الآن بـ Flash |
| Eleven Turbo v2 | elevenlabs/eleven-turbo-v2 | 30,000 | نموذج الجيل الأول منخفض الكمون من ElevenLab، وقد تم تجاوزه الآن بـ Flash |
يسعّر ElevenLabs نماذجه في فئتين. تسدد Eleven v4 وv3 وMultilingual v2 السعر الكامل لكل حرف، بينما تسدد v4 Turbo وv3 Conversational وFlash وTurbo نصفه. الأسعار الحالية لكل حرف موجودة في صفحة كل نموذج في مجموعة Text to Speech.
تحويل الكلام إلى نص
| النموذج | معرّف OpenRouter | اختره من أجل |
|---|---|---|
| Scribe v2 | elevenlabs/scribe-v2 | تفريغ عام مع طوابع زمنية للكلمات وتسميات للمتحدثين ووسوم لأحداث صوتية بأكثر من 90 لغة |
| Scribe v2 Medical | elevenlabs/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 ثانية، لذا قسِّم التسجيلات التي تكون طويلة.
نصائح لطلباتك الأولى
- اختر صوتًا بالاسم أو المعرّف.
من أجل
voice، مرِّر أيًا من الأصوات الجاهزة الـ21 من ElevenLabs بالاسم:george,sarah,adam,alice,bella,brian,charlie,daniel,jessica,roger,willوغيرها (القائمة الكاملة في صفحة كل نموذج). الأسماء غير حساسة لحالة الأحرف. لاستخدام أي صوت آخر، مرِّر معرّف الصوت الخاص به من ElevenLabs كـvoice— انسخه من صفحة مكتبة أصوات ElevenLabs. الأصوات التي تستنسخها أو تصممها تعيش في حسابك الخاص على ElevenLabs، لذا استخدم تلك الأصوات مع BYOK. - اطلب
mp3عندما تريد ملفًا يمكنك تشغيله إذا تركتresponse_format، فإن نقطة نهاية الكلام لدينا تعيد PCM خام (16 بت بترتيب بايت صغير أحادي القناة بتردد 24 kHz). هذا مناسب لمسار معالجة صوتي، لكن معظم المشغلات لا يمكنها فتحه. عيّن"response_format": "mp3"للحصول على ملف قابل للتشغيل بتردد 44.1 kHz وبمعدل 128 kbps. - استخدم Multilingual v2 أو Flash للتحكم في السرعة
يأخذ كل من Multilingual v2 و Flash
speedمن 0.7 إلى 1.2. أما Eleven v4 و v4 Turbo فلا يحتويان على تحكم في السرعة ويرفضان قيمة غير افتراضية لـspeed، لذا اتركه خارجًا في هذين الطرازين وغيّر الإيقاع باستخدام وسوم الصوت بدلًا من ذلك. - قسّم النصوص الطويلة
لكل طراز حد أقصى لعدد الأحرف لكل طلب (انظر جدول الطرز). وسوم الصوت تُحتسب ضمن الحد وعلى الأحرف المفوترة لديك. قسّم عند حدود الفقرات كما في الخطوة 1، ومرّر
previous_textوnext_textلتصبح نقاط الوصل طبيعية الصوت. - الإعدادات الخاصة بـ ElevenLabs توضع تحت
provider.options.elevenlabsيقبل Text to Speechseed,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 Speechdiarize,num_speakers,diarization_threshold,tag_audio_events,no_verbatim، وseed.num_speakersوdiarization_thresholdتحتاجان إلىdiarize: true، ويمكنك تعيين أحدهما وليس كليهما. استخدم أسماء الحقول تمامًا كما هي مذكورة. المفاتيح غير الموجودة في هذه القوائم يتم تجاهلها؛ والمفتاح المدرج بقيمة خاطئة يعيد رمز 400. - يعيد Scribe رموز لغات من ثلاثة أحرف
يمكنك إرسال تلميح
languageمن حرفين (en). اللغة المكتشفة تعود كرمز ISO 639-3 (eng).
البداية
- أنشئ مفتاح OpenRouter API.
- قم بتقديم طلبك الأول باستخدام مثال curl في الخطوة 1 أعلاه.
- لمعرفة كل معامل، راجع دليلي تحويل النص إلى كلام و تحويل الكلام إلى نص .
يُحسب تسعير تحويل النص إلى كلام (Text to Speech) لكل حرف من النص المدخل، ويُحتسب كنقاط يونيكود (Unicode code points)، بحيث تحتسب الرموز التعبيرية أو حرف CJK مرة واحدة. تُحتسب وسوم الصوت كأحرف. أما Scribe فيُسعّر لكل ثانية من الصوت، ويخبرك حقل usage.cost في كل استجابة تفريغ بتكلفة ذلك الطلب. نمرر أسعار ElevenLabs كما هي دون أي هامش ربح؛ راجع صفحة كل نموذج لمعرفة السعر الحالي.
لديك بالفعل حساب على ElevenLabs؟
أضف مفتاحك باستخدام BYOK لاستخدام أصواتك المستنسخة، وقواميس النطق، وصيغ ذات جودة أعلى مثل mp3_44100_192.
أنشئ مفتاح OpenRouter API، أو جرّب نموذجًا أولًا في ساحة التجربة (Playground). تحتوي أدلة تحويل النص إلى كلام و تحويل الكلام إلى نص على المرجع الكامل للطلب.
