AiFO مستندات AiFO

نمای کلی

Gateway AiFO endpointهای OpenAI-compatible برای TTS (Text-to-Speech) و STT (Speech-to-Text) ارائه می‌دهد. مدل‌های ElevenLabs و سایر providerها از همین مسیرها قابل دسترسی‌اند.

  • POST /v1/audio/speech — تبدیل متن به صوت
  • POST /v1/audio/transcriptions — تبدیل فایل صوتی به متن

TTS — Text to Speech

در body فیلدهای model، input (متن) و voice (شناسه صدا) را ارسال کنید. پاسخ binary audio stream است — Content-Type بسته به فرmat (mp3, pcm, …).

curl https://api.haftominhonar.ir/v1/audio/speech \
  -H "Authorization: Bearer aifo_sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs/eleven_multilingual_v2",
    "input": "سلام، به AiFO خوش آمدید.",
    "voice": "YOUR_VOICE_ID"
  }' --output speech.mp3
import requests

r = requests.post(
    "https://api.haftominhonar.ir/v1/audio/speech",
    headers={"Authorization": "Bearer aifo_sk_live_YOUR_API_KEY"},
    json={
        "model": "elevenlabs/eleven_multilingual_v2",
        "input": "سلام، به AiFO خوش آمدید.",
        "voice": "YOUR_VOICE_ID",
    },
)
with open("speech.mp3", "wb") as f:
    f.write(r.content)
const res = await fetch("https://api.haftominhonar.ir/v1/audio/speech", {
  method: "POST",
  headers: {
    Authorization: "Bearer aifo_sk_live_YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "elevenlabs/eleven_multilingual_v2",
    input: "سلام، به AiFO خوش آمدید.",
    voice: "YOUR_VOICE_ID",
  }),
});
const blob = await res.blob();
// save or play blob
const fs = require("fs");
const OpenAI = require("openai");

const client = new OpenAI({ baseURL: "https://api.haftominhonar.ir/v1", apiKey: "aifo_sk_live_YOUR_API_KEY" });

const mp3 = await client.audio.speech.create({
  model: "elevenlabs/eleven_multilingual_v2",
  input: "سلام، به AiFO خوش آمدید.",
  voice: "YOUR_VOICE_ID",
});
const buffer = Buffer.from(await mp3.arrayBuffer());
fs.writeFileSync("speech.mp3", buffer);

STT — Speech to Text

درخواست multipart/form-data با فیلدهای file (فایل صوتی) و model. برای فایل‌های بزرگ timeout و اندازه upload را در نظر بگیرید.

curl https://api.haftominhonar.ir/v1/audio/transcriptions \
  -H "Authorization: Bearer aifo_sk_live_YOUR_API_KEY" \
  -F "[email protected]" \
  -F "model=openai/whisper-1"
import requests

with open("sample.wav", "rb") as f:
    r = requests.post(
        "https://api.haftominhonar.ir/v1/audio/transcriptions",
        headers={"Authorization": "Bearer aifo_sk_live_YOUR_API_KEY"},
        files={"file": f},
        data={"model": "openai/whisper-1"},
    )
print(r.json()["text"])
const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("model", "openai/whisper-1");

const res = await fetch("https://api.haftominhonar.ir/v1/audio/transcriptions", {
  method: "POST",
  headers: { Authorization: "Bearer aifo_sk_live_YOUR_API_KEY" },
  body: form,
});
const data = await res.json();
console.log(data.text);
const fs = require("fs");
const OpenAI = require("openai");

const client = new OpenAI({ baseURL: "https://api.haftominhonar.ir/v1", apiKey: "aifo_sk_live_YOUR_API_KEY" });

const transcription = await client.audio.transcriptions.create({
  file: fs.createReadStream("sample.wav"),
  model: "openai/whisper-1",
});
console.log(transcription.text);

مدل‌ها و دسته‌ها