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

Оба эндпоинта — в формате 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 $INFERGATE_API_KEY" \
  -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 $INFERGATE_API_KEY" \
  -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.