Skip to content

Распознавание речи (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.

Базовое использование

python
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)
typescript
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);
shell
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.

ПараметрТипОбязательныйОписание
filebinaryДаАудиофайл. Поддерживаются wav, mp3, flac, m4a, ogg, webm, aac, mp4, mpga. Лимит — 25 МБ
modelstringДаИмя модели из таблицы выше или <provider>/<model> для прямого вызова (см. ниже)
languagestringНетКод языка по ISO-639-1 (ru, en, es, de, ...). Если не указан — определяется автоматически
temperaturenumberНетСэмплинг от 0 до 1. Меньшие значения — более детерминированный результат
response_formatstringНетjson (по умолчанию) или text

Формат ответа

Эндпоинт возвращает JSON с распознанным текстом и информацией об использовании:

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> — это обходит наш каталог и передаёт запрос напрямую без проверки имени:

python
transcript = client.audio.transcriptions.create(
    model="openai/whisper-large-v3",  # без префикса → whisper-large-v3 из каталога
    file=open("audio.mp3", "rb"),
)

Полезно, когда нужная модель отсутствует в нашем каталоге, либо требуется конкретный апстрим-вариант. Стоимость в этом случае будет рассчитана по фактическим данным провайдера.

Поддерживаемые форматы аудио

ФорматРасширениеКогда использовать
WAV.wavМаксимальное качество, без сжатия
MP3.mp3, .mpgaКомпромисс качество/размер (рекомендуется)
FLAC.flacLossless-сжатие
M4A.m4a, .mp4Запись с iPhone и macOS
OGG.ogg, .ogaОткрытый стандарт
WebM.webmЗапись из браузера (MediaRecorder API)
AAC.aacСтриминг и мобильные приложения

Лимиты

Максимальный размер файла — 25 МБ. Для длинных записей разбивайте аудио на сегменты по 5–10 минут — это также ускоряет обработку и снижает риск таймаутов.

Примеры использования

Транскрипция голосового сообщения

python
with open("voice.ogg", "rb") as f:
    result = client.audio.transcriptions.create(
        model="whisper-large-v3-turbo",
        file=f,
        language="ru",
    )

print(result.text)

Распознавание со спикер-диаризацией

python
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:

python
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 — он поддерживается напрямую:

typescript
// На сервере (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-transcribeMistral оптимизировал под EN/ES/FR/DE/IT/PT/NL/HI
Многоязычные записиchirp-3100+ языков и диалектов от Google

Лучшие практики

  1. Указывайте language, если знаете его заранее — это ускоряет обработку и повышает точность на коротких записях
  2. Качество аудио важнее размера: моно 16 кГц обычно достаточно, агрессивный шумодав не нужен
  3. Длинные файлы (>10 мин) лучше резать на сегменты — снижает риск таймаута и упрощает повтор при ошибках
  4. Бюджет: для черновой транскрипции используйте whisper-large-v3-turbo или qwen3-asr-flash; для финального продакшна — whisper-1 / gpt-4o-transcribe
  5. WebM из браузера не нужно перекодировать — отправляйте как есть, все провайдеры его принимают

AITUNNEL