Распознавание и синтез речи

Аудиоэндпоинты в формате OpenAI: с ними работают SDK OpenAI (client.audio.transcriptions.create, client.audio.speech.create).

Распознавание речи

POST/api/v1/audio/transcriptions принимает два формата: multipart/form-data (file, model и необязательные language, temperature, response_format — json или verbose_json, timestamp_granularities) или JSON {model, input_audio: {data, format}} с аудио в base64. Файл — до 25 МБ.

curl https://infergate.ru/api/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-..." \
  -F model="openai/whisper-1" \
  -F file=@speech.mp3 \
  -F language=ru

Ответ — {text, usage}; при verbose_json добавляются язык, длительность, сегменты и слова. Стоимость зависит от модели — за секунду, час или токены; сумма приходит в usage.

{
  "text": "Привет! Это пример распознавания речи.",
  "usage": { "seconds": 6.4, "cost_rub": 0.018423, "cost": 0.000178, "fx_rate": 103.5 }
}

Список моделей — GET/api/v1/audio/transcriptions/models.

Синтез речи

POST/api/v1/audio/speech: поля model, input (текст), voice и необязательные response_format (mp3 или pcm) и speed. Ответ — сам аудиофайл (audio/mpeg или audio/pcm), без JSON.

curl https://infergate.ru/api/v1/audio/speech \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fish-audio/s1",
    "input": "Привет! Это синтез речи.",
    "voice": "alloy",
    "response_format": "mp3"
  }' \
  --output speech.mp3

Стоимость зависит от модели — за символы, байты или аудиотокены. В ответе её нет: списание происходит через несколько секунд и видно в журнале запросов. Список моделей — GET/api/v1/audio/speech/models.