Перейти к содержимому
RouterNodul

POST /audio/transcriptions

Распознавание речи в аудиофайле в формате OpenAI. Тело запроса, ответ, цена и ошибки.

Открыть .md
POST/api/v1/audio/transcriptionsAPI-ключ

Распознает речь в аудиофайле — как client.audio.transcriptions.create в OpenAI SDK. Запрос — multipart/form-data. Модели распознавания речи перечислены в каталоге и в GET /api/v1/models?output_modalities=transcription.

Тело запроса

ПолеТип
filefileОбязательно. Аудио: wav, mp3, flac, m4a, ogg, webm или aac, не больше 25 МБ.
modelstringОбязательно. ID модели распознавания речи.
languagestringЯзык речи, код ISO-639-1 (ru, en).
temperaturenumberОт 0 до 1.
response_formatstringjson (по умолчанию) или verbose_json с сегментами и длительностью. text, srt, vtt дают 400.
timestamp_granularities[]stringsegment и/или word, с verbose_json.
providerstringНастройки провайдера строкой JSON, например {"zdr": true}.

Ключ с маскированием данных не может распознавать речь: аудио нельзя проверить на чувствительные данные, поэтому запрос получает 403 с metadata.reason masking_audio.

Ответ

{
  "text": "Привет! Это проверка распознавания речи.",
  "usage": { "seconds": 9.2, "cost": 0.000506 }
}
Поле
textРаспознанный текст.
usage.costСумма списания в PnP.
usage.secondsДлительность аудио у моделей с оплатой за секунду.
usage.input_tokens, usage.output_tokensТокены у моделей с оплатой за токены.

ID генерации — в заголовке ответа X-Generation-Id.

Цена

Модели берут плату за секунду аудио (на странице модели цена указана за минуту) или за токены. Списывается фактическая стоимость вызова. Длительность до распознавания неизвестна, поэтому резерв считается по размеру файла: 8 КБ на секунду аудио. В журнале кабинета у вызова указана длительность аудио.

Пример

curl https://router.nodul.ru/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $NODUL_ROUTER_API_KEY" \
  -F file=@speech.mp3 \
  -F model=global-1/openai/whisper-large-v3-turbo
import os

from openai import OpenAI

client = OpenAI(base_url="https://router.nodul.ru/api/v1", api_key=os.environ["NODUL_ROUTER_API_KEY"])
with open("speech.mp3", "rb") as audio:
    transcript = client.audio.transcriptions.create(model="global-1/openai/whisper-large-v3-turbo", file=audio)
print(transcript.text)

Ошибки

КодКогда
400Нет файла, модель не распознает речь, response_format не json/verbose_json.
402Баланса или лимита ключа не хватает на резерв.
403Модель недоступна ключу, пространство разрешает только модели в России, ключ маскирует данные.
413Аудиофайл больше 25 МБ.