نقاط النهاية
التفريغ النصي (STT)
نقطة النهاية POST /audio/transcriptions تحوّل الصوت إلى نص بنماذج Whisper وGPT-4o Transcribe وDeepgram وVoxtral بصيغة OpenAI.
جرّبه في ساحة التجربةحوّل الكلام إلى نص (STT) بنماذج Whisper وGPT-4o Transcribe وDeepgram وVoxtral وغيرها من نماذج التفريغ النصي. تتبع نقطة النهاية POST /audio/transcriptions في OpenAI، لذا يعمل client.audio.transcriptions.create(...) دون تغيير.
POST https://api14.com/api/v1/audio/transcriptions
الطلب
أرسل multipart/form-data مع ملف الصوت (وهذا ما تفعله OpenAI SDK)، أو جسم JSON.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
file | file | نعم | ملف صوتي: mp3 أو mp4 أو m4a أو wav أو webm أو ogg أو flac. |
model | string | نعم | معرّف نموذج تفريغ نصي، مثل openai/whisper-1. |
language | string | لا | رمز ISO-639-1 (en وde)، يحسّن الدقة والسرعة. |
prompt | string | لا | تلميحات مفردات أو نص المقطع السابق. |
response_format | string | لا | json (الافتراضي) وtext وsrt وvtt وverbose_json حيث يكون مدعومًا. |
temperature | number | لا | حرارة أخذ العينات، من 0 إلى 1. |
حد حجم جسم الطلب 25 ميغابايت افتراضيًا. الملفات الأكبر تُعيد 413 payload_too_large، فقسّم التسجيلات الطويلة إلى أجزاء.
Multipart مع cURL
curl https://api14.com/api/v1/audio/transcriptions \
-H "Authorization: Bearer sk-api14-..." \
-F model=openai/whisper-1 \
-F file=@meeting.mp3 \
-F language=en
جسم JSON
JSON مقبول أيضًا، مع الصوت بترميز base64 للنماذج التي تدعم ذلك:
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
مثال
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.audio.transcriptions.create({
model: "openai/whisper-1",
file: fs.createReadStream("audio.mp3"),
});
console.log(result.text);
الاستجابة
{
"text": "Thanks everyone for joining. Let's start with the roadmap.",
"usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}
مع response_format: "text" أو srt أو vtt يكون الجسم نصًا عاديًا بدل JSON.
الأسعار
يُحاسَب التفريغ النصي بسعر النموذج المعلن، ويظهر بصيغة "$ / minute" (أو لكل رمز للنماذج المسعّرة بالرموز). تُعاد الرسوم في usage.cost وتُخصم من رصيدك بالدولار.
الأخطاء
| الحالة | الرمز | متى يحدث |
|---|---|---|
| 400 | invalid_body | تعذّر تحليل جسم multipart. |
| 400 | model_required | الحقل model مفقود. |
| 402 | insufficient_balance | رصيدك بالدولار يساوي 0. |
| 404 | model_not_found | معرّف نموذج غير معروف أو معطّل. |
| 413 | payload_too_large | الملف يتجاوز حد حجم الجسم. |
راجع الأخطاء.