Распознавание речи (STT)
Speech-to-Text — преобразование аудио в текст. Транскрибируйте аудиозаписи через единое API с доступом к лучшим моделям индустрии: Whisper, GPT-4o Transcribe, Voxtral, Qwen3-ASR, Chirp 3.
Эндпоинт POST /v1/audio/transcriptions принимает аудиофайл в multipart/form-data и полностью совместим с OpenAI SDK. Достаточно подменить base_url на https://api.aitunnel.ru/v1/ — никаких изменений кода больше не нужно.
Поддерживаемые модели
| Модель | Тип цены | Примечание |
|---|---|---|
whisper-1 | за минуту | Классический Whisper от OpenAI, ~50 языков, поддержка перевода |
whisper-large-v3 | за минуту | Open-source Whisper Large V3, 99+ языков |
whisper-large-v3-turbo | за минуту | Самая дешёвая Whisper-модель, оптимизирована по скорости |
gpt-4o-transcribe | за токены | Премиум-точность на базе GPT-4o |
gpt-4o-mini-transcribe | за токены | Бюджетная версия GPT-4o Transcribe |
gpt-4o-transcribe-diarize | за токены | С автоматическим разделением по спикерам (diarization) |
voxtral-mini-transcribe | за минуту | Mistral Voxtral Mini, европейские языки |
qwen3-asr-flash-2026-02-10 | за секунду | Qwen3 ASR Flash, лидер по цене |
chirp-3 | за минуту | Google Chirp 3, 100+ языков и диалектов |
Полный список моделей и актуальные цены: /models?modality=stt.
Базовое использование
from openai import OpenAI
client = OpenAI(
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/",
)
with open("audio.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="ru",
)
print(transcript.text)import OpenAI from "openai";
import fs from "fs";
const client = new OpenAI({
apiKey: "sk-aitunnel-xxx",
baseURL: "https://api.aitunnel.ru/v1/",
});
const transcript = await client.audio.transcriptions.create({
model: "whisper-1",
file: fs.createReadStream("audio.mp3"),
language: "ru",
});
console.log(transcript.text);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 | Да | Аудиофайл. Поддерживаются wav, mp3, flac, m4a, ogg, webm, aac, mp4, mpga. Лимит — 25 МБ |
model | string | Да | Имя модели из таблицы выше или <provider>/<model> для прямого вызова (см. ниже) |
language | string | Нет | Код языка по ISO-639-1 (ru, en, es, de, ...). Если не указан — определяется автоматически |
temperature | number | Нет | Сэмплинг от 0 до 1. Меньшие значения — более детерминированный результат |
response_format | string | Нет | json (по умолчанию) или text |
Формат ответа
Эндпоинт возвращает JSON с распознанным текстом и информацией об использовании:
{
"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 | Стоимость запроса в рублях (с учётом комиссии AITUNNEL) |
usage.balance | Остаток баланса после списания |
Прямой вызов по <provider>/<model>
Так же, как и в /v1/chat/completions, для распознавания речи можно указать модель в формате <provider>/<model> — это обходит наш каталог и передаёт запрос напрямую без проверки имени:
transcript = client.audio.transcriptions.create(
model="openai/whisper-large-v3", # без префикса → whisper-large-v3 из каталога
file=open("audio.mp3", "rb"),
)Полезно, когда нужная модель отсутствует в нашем каталоге, либо требуется конкретный апстрим-вариант. Стоимость в этом случае будет рассчитана по фактическим данным провайдера.
Поддерживаемые форматы аудио
| Формат | Расширение | Когда использовать |
|---|---|---|
| WAV | .wav | Максимальное качество, без сжатия |
| MP3 | .mp3, .mpga | Компромисс качество/размер (рекомендуется) |
| FLAC | .flac | Lossless-сжатие |
| M4A | .m4a, .mp4 | Запись с iPhone и macOS |
| OGG | .ogg, .oga | Открытый стандарт |
| WebM | .webm | Запись из браузера (MediaRecorder API) |
| AAC | .aac | Стриминг и мобильные приложения |
Лимиты
Максимальный размер файла — 25 МБ. Для длинных записей разбивайте аудио на сегменты по 5–10 минут — это также ускоряет обработку и снижает риск таймаутов.
Примеры использования
Транскрипция голосового сообщения
with open("voice.ogg", "rb") as f:
result = client.audio.transcriptions.create(
model="whisper-large-v3-turbo",
file=f,
language="ru",
)
print(result.text)Распознавание со спикер-диаризацией
with open("meeting.mp3", "rb") as f:
result = client.audio.transcriptions.create(
model="gpt-4o-transcribe-diarize",
file=f,
language="ru",
)
print(result.text)Бюджетная массовая транскрипция
Самые дешёвые модели — whisper-large-v3-turbo и qwen3-asr-flash-2026-02-10:
import glob, os
for path in glob.glob("recordings/*.mp3"):
with open(path, "rb") as f:
result = client.audio.transcriptions.create(
model="qwen3-asr-flash-2026-02-10",
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 — он поддерживается напрямую:
// На сервере (Node.js)
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 ${process.env.AITUNNEL_KEY}` },
body: formData,
});
const { text } = await res.json();Как выбрать модель
| Сценарий | Рекомендуемая модель | Почему |
|---|---|---|
| Голосовые сообщения, диктовка | whisper-large-v3-turbo | Самая дешёвая, быстрая, 99+ языков |
| Массовая обработка записей | qwen3-asr-flash-2026-02-10 | Лидер по цене за секунду |
| Подкасты, интервью, общая транскрипция | whisper-1 | Стабильное качество, поддержка перевода |
| Премиум-точность, сложная лексика | gpt-4o-transcribe | На базе GPT-4o audio |
| Совещания с несколькими спикерами | gpt-4o-transcribe-diarize | Автоматически размечает кто что сказал |
| Высокая точность на европейских языках | voxtral-mini-transcribe | Mistral оптимизировал под EN/ES/FR/DE/IT/PT/NL/HI |
| Многоязычные записи | chirp-3 | 100+ языков и диалектов от Google |
Лучшие практики
- Указывайте
language, если знаете его заранее — это ускоряет обработку и повышает точность на коротких записях - Качество аудио важнее размера: моно 16 кГц обычно достаточно, агрессивный шумодав не нужен
- Длинные файлы (>10 мин) лучше резать на сегменты — снижает риск таймаута и упрощает повтор при ошибках
- Бюджет: для черновой транскрипции используйте
whisper-large-v3-turboилиqwen3-asr-flash; для финального продакшна —whisper-1/gpt-4o-transcribe - WebM из браузера не нужно перекодировать — отправляйте как есть, все провайдеры его принимают