نقاط النهاية
الكلام (TTS)
نقطة النهاية POST /audio/speech تحوّل النص إلى كلام مسموع وتُعيد بايتات الصوت الخام، بنفس صيغة OpenAI لتحويل النص إلى كلام.
جرّبه في ساحة التجربةحوّل النص إلى كلام طبيعي الصوت (تحويل النص إلى كلام، TTS). تتبع نقطة النهاية صيغة POST /audio/speech في OpenAI وتُعيد بايتات الصوت الخام، لذا يعمل client.audio.speech.create(...) دون تغيير.
POST https://api14.com/api/v1/audio/speech
الطلب
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
model | string | نعم | معرّف نموذج كلام، مثل openai/gpt-4o-mini-tts. |
input | string | نعم | النص المراد نطقه. |
voice | string | نعم | اسم الصوت، مثل alloy وnova وverse. تختلف الأصوات بين النماذج (راجع صفحة النموذج). |
response_format | string | لا | mp3 (الافتراضي) وwav وopus وaac وflac وpcm حيث يكون مدعومًا. |
speed | number | لا | سرعة التشغيل، وتتراوح عادةً بين 0.25 و4.0. |
instructions | string | لا | توجيه الأسلوب للنماذج التي تقبله ("نبرة هادئة ودافئة"). |
مثال
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const audio = await client.audio.speech.create({
"model": "openai/gpt-4o-mini-tts",
"input": "Hello from api14! One API for every model.",
"voice": "alloy",
"response_format": "mp3"
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
الاستجابة
الجسم هو ملف الصوت نفسه، مع Content-Type مطابق (مثل audio/mpeg). احفظه على القرص أو مرّره إلى مشغّل:
curl https://api14.com/api/v1/audio/speech \
-H "Authorization: Bearer sk-api14-..." \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-4o-mini-tts","input":"Hello from api14!","voice":"alloy"}' \
--output hello.mp3
تبقى الأخطاء تُعاد بصيغة JSON وفق شكل أخطاء OpenAI، لذا افحص رمز الحالة قبل كتابة الملف.
الأسعار
يُحاسَب الكلام لكل حرف إدخال بسعر النموذج المعلن، ويظهر بصيغة "$ / 1M characters". فقرة من 1,000 حرف على نموذج سعره 15 دولارًا لكل مليون حرف تكلف 0.015 دولار.
عرض نماذج الكلام
curl "https://api14.com/api/v1/models?category=speech"
الأخطاء
| الحالة | الرمز | متى يحدث |
|---|---|---|
| 400 | model_required / invalid_json | model مفقود أو الجسم غير صالح. |
| 402 | insufficient_balance | رصيدك بالدولار يساوي 0. |
| 403 | model_not_allowed / plan_required | قائمة المفتاح المسموح بها أو خطتك تستبعد النموذج. |
| 404 | model_not_found | معرّف نموذج غير معروف أو معطّل. |
| 429 | rate_limited | تجاوز عدد الطلبات في الدقيقة. |
الأصوات أو الصيغ غير المدعومة يرفضها المزوّد وتُمرَّر. راجع الأخطاء.