API
Распознавание речи
Аудио в текст через POST /audio/transcriptions. Multipart, совместимо с OpenAI SDK — подмените base_url.
POST https://api.aitunnel.ru/v1/audio/transcriptions принимает файл в multipart/form-data. В OpenAI SDK достаточно указать base_url https://api.aitunnel.ru/v1/.
Только multipart, не JSON
JSON с полем input_audio эндпоинт не принимает — только FormData с файлом. SDK OpenAI сам собирает multipart.
Не путать с аудио в чате
Чат (/chat/completions, тип input_audio) — когда модель с audio во входе отвечает на вопросы по записи. Подробнее: аудио. Этот эндпоинт — когда нужен просто текст транскрипции.
Поддерживаемые модели
Актуальный список и цены — публичный каталог:
curl https://api.aitunnel.ru/public/aitunnel/models/transcriptionsНа сайте: страница моделей.
Каждая запись содержит поля:
| Поле | Описание |
|---|---|
provider | Провайдер модели |
min_price_per_minute / max_price_per_minute | Ориентир цены за минуту аудио в рублях |
duration_cost | Цена за минуту, если модель тарифицируется по длительности |
audio_input_cost / prompt_cost / completion_cost | Цена за 1 млн токенов, если модель тарифицируется по токенам |
supported_formats | Расширения файлов, которые модель принимает |
supports_language_hint | Принимает ли language |
supports_diarization | Умеет ли разделять спикеров |
supports_temperature | Принимает ли temperature |
Имя в запросе — без префикса провайдера: whisper-1, не openai/whisper-1. Префикс provider/model обходит каталог и уходит напрямую — см. OpenRouter.
Базовое использование
curl https://api.aitunnel.ru/v1/audio/transcriptions \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-F file="@audio.mp3" \
-F model="whisper-1" \
-F language="ru"Параметры запроса
Запрос — multipart/form-data.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
file | binary | да | Аудиофайл. Лимит — 25 МБ |
model | string | да | Имя из каталога или provider/model |
language | string | нет | Код ISO-639-1 (ru, en, …). Если знаете язык — укажите |
temperature | number | нет | Сэмплинг от 0 до 1. Меньше — стабильнее |
response_format | string | нет | По умолчанию json. Также text |
У whisper-1 дополнительно работают форматы OpenAI: verbose_json, srt, vtt (субтитры и таймстемпы). У gpt-4o-transcribe-diarize — diarized_json и chunking_strategy. Остальные поля формы у этих двух моделей тоже уходят провайдеру (prompt и т.д.).
Формат ответа
{
"text": "Привет, это пример распознанной речи через AITUNNEL.",
"usage": {
"seconds": 9.2,
"input_tokens": 83,
"output_tokens": 30,
"total_tokens": 113,
"cost_rub": 0.18,
"balance": 1247.32
}
}| Поле | Описание |
|---|---|
text | Распознанный текст |
usage.seconds | Длительность входного аудио в секундах (если модель её отдаёт) |
usage.input_tokens / usage.output_tokens | Токены, если модель тарифицируется по токенам |
usage.cost_rub | Стоимость в рублях |
usage.balance | Остаток баланса после списания |
Если response_format не JSON (например text или srt у whisper-1), тело — сырой текст, а cost_rub и balance приходят в заголовках.
Поддерживаемые форматы аудио
Конкретный список — supported_formats модели. Общий набор:
| Формат | Расширение | Когда |
|---|---|---|
| WAV | .wav | Максимальное качество, без сжатия |
| MP3 | .mp3, .mpga | Компромисс качество/размер |
| FLAC | .flac | Lossless-сжатие |
| M4A | .m4a, .mp4 | Запись с iPhone и macOS |
| OGG | .ogg, .oga | Голосовые сообщения |
| WebM | .webm | Запись из браузера (MediaRecorder) |
| AAC | .aac | Стриминг и мобильные приложения |
Лимит 25 МБ
Максимальный размер файла — 25 МБ. Для длинных записей режьте на сегменты по 5–10 минут — быстрее и меньше риск таймаута. Несжатый WAV заполняет лимит раньше, чем MP3 или Opus.
Примеры
Распознавание со спикер-диаризацией
from openai import OpenAI
client = OpenAI(
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/",
)
with open("meeting.mp3", "rb") as f:
result = client.audio.transcriptions.create(
model="gpt-4o-transcribe-diarize",
file=f,
response_format="diarized_json",
chunking_strategy="auto",
language="ru",
)
print(result.text)Бюджетная массовая транскрипция
whisper-large-v3-turbo и qwen3-asr-flash-2026-02-10 — из самых дешёвых в каталоге:
import glob
import os
from openai import OpenAI
client = OpenAI(
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/",
)
for path in glob.glob("recordings/*.mp3"):
with open(path, "rb") as f:
result = client.audio.transcriptions.create(
model="whisper-large-v3-turbo",
file=f,
language="ru",
)
out_path = os.path.splitext(path)[0] + ".txt"
with open(out_path, "w") as out:
out.write(result.text)Запись из браузера
MediaRecorder обычно отдаёт webm — его можно слать как есть, без перекодирования:
const formData = new FormData();
formData.append(
"file",
new Blob([webmBuffer], { type: "audio/webm" }),
"recording.webm",
);
formData.append("model", "gpt-4o-mini-transcribe");
formData.append("language", "ru");
const res = await fetch("https://api.aitunnel.ru/v1/audio/transcriptions", {
method: "POST",
headers: { Authorization: "Bearer sk-aitunnel-xxx" },
body: formData,
});
const { text } = await res.json();Как выбрать модель
| Сценарий | Модель | Почему |
|---|---|---|
| Общая транскрипция файлов | gpt-transcribe | Высокая точность |
| Голосовые сообщения, диктовка | whisper-large-v3-turbo | Дешёвая и быстрая |
| Массовая обработка | qwen3-asr-flash-2026-02-10 | Низкая цена за секунду |
| Субтитры / таймстемпы | whisper-1 | srt, vtt, verbose_json |
| Премиум-точность | gpt-4o-transcribe | На базе GPT-4o |
| Несколько спикеров | gpt-4o-transcribe-diarize | Кто что сказал |
| Европейские языки | voxtral-mini-transcribe | EN/ES/FR/DE/IT/PT/NL/HI |
| Много языков и диалектов | chirp-3 | Google Chirp 3 |
Цены смотрите в каталоге — они меняются.
Лучшие практики
- Указывайте language, если язык известен — точнее на коротких записях.
- Качество важнее размера: моно 16 кГц обычно достаточно.
- Длинные файлы(>10 мин) лучше резать — проще повторить кусок при ошибке.
- WebM из браузера не нужно перекодировать.
- Черновик —
whisper-large-v3-turboилиqwen3-asr-flash-2026-02-10; финал —gpt-transcribe/gpt-4o-transcribe.
Устранение неполадок
Пустая или кривая транскрипция?
- Формат файла должен совпадать с расширением и входить в
supported_formatsмодели. - Проверьте, что запись не тихая и не сильно сжатая.
400 про Content-Type?
- Нужен
multipart/form-dataс полемfile, не JSON. SDK OpenAI делает это сам; в cURL — флаги-F.
413 — файл слишком большой?
- Лимит 25 МБ. Сожмите в MP3/Opus или разрежьте запись.
Модель не найдена?
- Имя без префикса провайдера (
whisper-1, неopenai/whisper-1), либо осознанный прямой вызовprovider/model. - Список:
GET https://api.aitunnel.ru/public/aitunnel/models/transcriptions.
Смотрите также
- Аудио — аудио в чате
- Озвучка текста — текст в речь
- Список моделей
- Лимиты — файлы до 25 МБ
- Ошибки и отладка