بديل OpenAI TTS: أبقِ SDK كما هو وغيّر base URL
تدعم Fish Audio استدعاء /v1/audio/speech نفسه. وجّه عميل OpenAI إلى Fish واختر النموذج المجاني، وسيواصل كود تحويل النص إلى كلام العمل بعد إزالة نماذج TTS من OpenAI.
لا حاجة إلى بطاقة ائتمان: تكلفة fish-audio/s2.1-pro-free هي $0 حتى 30 نوفمبر 2026.
سطران ينقلان العميل
يوجّه base_url وapi_key حزمة OpenAI SDK الرسمية إلى Fish. وفي الاستدعاء، حدّد نموذجًا وصوتًا من Fish. يعمل الكود الجديد كما هو على حساب جديد برصيد $0.
import os from openai import OpenAI client = OpenAI(سطر مضاف: base_url="https://api.fish.audio/compat/v1",سطر محذوف: api_key=os.environ["OPENAI_API_KEY"],سطر مضاف: api_key=os.environ["FISH_API_KEY"],) with client.audio.speech.with_streaming_response.create(سطر محذوف: model="tts-1",سطر محذوف: voice="alloy",سطر مضاف: model="fish-audio/s2.1-pro-free",سطر مضاف: voice="", input="Hello, world!", response_format="mp3",) as response: response.stream_to_file("speech.mp3")import fs from "node:fs";import OpenAI from "openai"; const client = new OpenAI({سطر مضاف: baseURL: "https://api.fish.audio/compat/v1",سطر محذوف: apiKey: process.env.OPENAI_API_KEY,سطر مضاف: apiKey: process.env.FISH_API_KEY,}); const response = await client.audio.speech.create({سطر محذوف: model: "tts-1",سطر محذوف: voice: "alloy",سطر مضاف: model: "fish-audio/s2.1-pro-free",سطر مضاف: voice: "", input: "Hello, world!", response_format: "mp3",});fs.writeFileSync("speech.mp3", Buffer.from(await response.arrayBuffer()));سطر محذوف: curl https://api.openai.com/v1/audio/speech \سطر محذوف: -H "Authorization: Bearer $OPENAI_API_KEY" \سطر مضاف: curl https://api.fish.audio/compat/v1/audio/speech \سطر مضاف: -H "Authorization: Bearer $FISH_API_KEY" \ -H "Content-Type: application/json" \ -d '{سطر محذوف: "model": "tts-1",سطر محذوف: "voice": "alloy",سطر مضاف: "model": "fish-audio/s2.1-pro-free",سطر مضاف: "voice": "", "input": "Hello, world!", "response_format": "mp3" }' \ --output speech.mp3يتطلب حزمة OpenAI SDK الرسمية (pip install openai أو npm install openai) ومفتاح API الخاص بك من Fish في FISH_API_KEY.
ما الذي يتغير أيضًا
- يقبل
voiceمعرّف صوت من Fish. أسماء الأصوات الجاهزة في OpenAI مثلnovaتُرجع الخطأ 400، والسلسلة الفارغة تستخدم الصوت الافتراضي للنموذج. - القيمة الافتراضية لـ
response_formatفي Fish هيpcmوليستmp3. حدّدها صراحةً. - المعامل
instructionsغير مدعوم ويُرجع الخطأ 400. اكتب إرشادات الأداء داخل النص بدلًا من ذلك، مثل[whispering]. - لا تزال
tts-1وtts-1-hdوgpt-4o-mini-ttsتعمل كأسماء نماذج، وتُوجَّه إلى النموذج المدفوعfish-audio/s2.1-pro.
اختر صوتًا
الأصوات الجاهزة في OpenAI غير موجودة في Fish. مرّر معرّف أي صوت من مكتبة الأصوات في Fish، أو معرّف صوت تستنسخه. السلسلة الفارغة تستخدم الصوت الافتراضي للنموذج.
الأسعار
يُحتسب سعر S2.1-Pro حسب عدد بايتات UTF-8 في النص المُدخل. في الإنجليزية يساوي الحرف الواحد بايتًا واحدًا، لذا تكون تكلفته مثل tts-1 ونصف تكلفة tts-1-hd. تشغل معظم الأحرف الصينية واليابانية والكورية 3 بايتات.
الأسعار من صفحات التسعير الرسمية، وتم التحقق منها في 29 أكتوبر 2026:Fish AudioOpenAI
الأسئلة المتكررة
انتقل قبل 6 يناير 2027
أنشئ مفتاحًا مجانيًا، وغيّر سطرين، وواصل توليد الكلام.