Распознавание речи по API
Распознавание речи в kosareva.cloud работает через POST /v1/audio/transcriptions: аудиофайл на вход, текст или субтитры на выход. Протокол тот же, что у Whisper в OpenAI: файл в multipart/form-data, ответ в привычных форматах. Ключ и базовый адрес те же, что у текстовых моделей.
Для русской речи начните с Whisper large-v3: 0,51 ₽ за минуту, сервер в России. Субтитры и таймкоды по словам даёт GigaASR, 0,84 ₽ за минуту. Запись на нескольких языках разберёт Gemini 3.5 Transcribe, около 0,55 ₽ за минуту.
- Адрес
POST /v1/audio/transcriptionsнаhttps://api.kosareva.cloud- Модели
whisper-large-v3,gigaasr,nemotron-3-5-transcribe,gemini-3-5-transcribe- Файл
- mp3, mp4, m4a, wav, ogg и opus, webm, flac, aac, aiff — до 25 МБ
- Ответ
json,text,verbose_json;srtиvtt— уgigaasrиnemotron-3-5-transcribe- Цена
- от 0,22 ₽ за минуту, ошибки не списываются
Первый запрос
Отправьте файл и имя модели. Без других параметров придёт JSON с полем text.
curl https://api.kosareva.cloud/v1/audio/transcriptions \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-F model="whisper-large-v3" \
-F file="@meeting.mp3" \
-F language="ru"
language необязателен, но ускоряет работу: без него модель сначала определяет язык. Укажите его кодом из двух букв — ru, en, kk.
Python, OpenAI SDK
Если у вас уже есть код под Whisper, менять нужно три строки: ключ, base_url и model.
from openai import OpenAI
client = OpenAI(
api_key="ВАШ_API_КЛЮЧ",
base_url="https://api.kosareva.cloud/v1",
)
with open("meeting.mp3", "rb") as audio:
result = client.audio.transcriptions.create(
model="whisper-large-v3",
file=audio,
language="ru",
prompt="Kosareva Cloud, Kubernetes, PostgreSQL", # термины и имена — списком
)
print(result.text)
print(result.usage) # звуковые токены: 25 на секунду записи
Модели whisper-1 у нас нет — инструменту, который подставляет её по умолчанию, укажите whisper-large-v3.
Субтитры: srt и vtt
Субтитры делает gigaasr. Попросите response_format srt или vtt — придёт готовый файл, фразы разбиты по паузам и концам предложений. whisper-large-v3 на такой запрос ответит ошибкой 400.
with open("lecture.mp3", "rb") as audio:
subtitles = client.audio.transcriptions.create(
model="gigaasr",
file=audio,
response_format="srt", # или "vtt"
)
with open("lecture.srt", "w", encoding="utf-8") as file:
file.write(subtitles)
curl https://api.kosareva.cloud/v1/audio/transcriptions \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-F model="gigaasr" \
-F file="@lecture.mp3" \
-F response_format="srt" \
-o lecture.srt
Таймкоды фраз и слов: verbose_json
В verbose_json кроме текста есть длительность записи и фразы с началом и концом в секундах. Каждое слово отдельно отдаёт только gigaasr.
with open("call.wav", "rb") as audio:
result = client.audio.transcriptions.create(
model="gigaasr",
file=audio,
response_format="verbose_json",
timestamp_granularities=["word"],
)
print(result.duration) # длительность записи, секунды
for segment in result.segments:
print(f"{segment.start:7.2f}–{segment.end:7.2f} {segment.text}")
for word in result.words[:5]:
print(word.word, word.start, word.end)
Параметр timestamp_granularities можно не передавать. У whisper-large-v3 массив words пустой, а gemini-3-5-transcribe отдаёт всю запись одной фразой.
Параметры запроса
| Поле | Что задаёт |
|---|---|
file | Запись: mp3, mp4, m4a, wav, ogg и opus, webm, flac, aac, aiff. Весь запрос вместе с файлом — до 25 МБ. Обязательно |
model | whisper-large-v3, gigaasr, nemotron-3-5-transcribe или gemini-3-5-transcribe. Обязательно |
language | Код языка из двух букв, например ru. Без него язык определяется сам. gemini-3-5-transcribe и nemotron-3-5-transcribe это поле не учитывают |
prompt | Термины, имена и названия через запятую, первые 400 символов. Работает у whisper-large-v3 |
response_format | json (по умолчанию), text, verbose_json; srt и vtt — у gigaasr и nemotron-3-5-transcribe |
timestamp_granularities | Принимается для совместимости |
temperature | Принимается, но на расшифровку не влияет |
Что работает через kosareva.cloud
Коротко: файл целиком в текст или субтитры — да; живая расшифровка, перевод и разделение говорящих — нет.
Текст работает
Форматы json и text у всех четырёх моделей — для протоколов совещаний, заметок и голосовых сообщений.
Субтитры и таймкоды слов работает
У gigaasr и nemotron-3-5-transcribe: srt, vtt и слова с началом и концом в секундах в verbose_json.
Определение языка работает
Без поля language язык определяется сам. gemini-3-5-transcribe распознаёт больше 85 языков, в том числе когда собеседники переходят с одного на другой.
Словарь терминов с оговорками
Поле prompt со списком имён и терминов работает у whisper-large-v3.
Длинные записи с оговорками
До 25 МБ на запрос. Длинное режьте на части по паузам, большие файлы сжимайте: час речи в mp3 на 48 кбит/с занимает около 21 МБ.
Живая расшифровка нет
Файл отправляется целиком, ответ приходит, когда распознана вся запись; stream не поддерживается.
Перевод речи нет
Пути /v1/audio/translations нет — только распознавание на языке записи.
Разделение говорящих нет
Через наш API не отдаётся.
Распознавание в кабинете без кода нет
Только по API.
Сколько стоит
У whisper-large-v3 и gigaasr цена зависит только от длины записи: 0,00854 ₽ за секунду записи и 0,014 ₽ за секунду записи. У gemini-3-5-transcribe считаются токены звука и текста, в среднем около 0,55 ₽ за минуту.
| Запись | whisper-large-v3 | gigaasr |
|---|---|---|
| Голосовое сообщение на 30 секунд | 0,26 ₽ | 0,42 ₽ |
| Звонок на 5 минут | 2,55 ₽ | 4,2 ₽ |
| Совещание на час | 31 ₽ | 50 ₽ |
Сколько ушло на конкретный запрос, видно в расходах кабинета, а в форматах json и verbose_json — ещё и в поле usage ответа. В text, srt и vtt ответ — голый текст, поля usage там нет. Запрос, который закончился ошибкой, не списывается.
Устранение неполадок
Ошибка приходит в формате OpenAI с объяснением по-русски, деньги за неё не списываются. Исключение по форме — 413: слишком большой запрос отклоняется ещё на входе, тело такого ответа не JSON, поэтому смотрите на код ответа.
400: файл или параметры не подошли
Нет файла, файл пустой, формат не звуковой, модель не для распознавания (например, whisper-1), неизвестный response_format, srt или vtt у whisper-large-v3 или запись длиннее допустимого.
413: запрос больше 25 МБ
Сожмите файл — час речи в mp3 на 48 кбит/с занимает около 21 МБ — или разрежьте запись на части по паузам.
401: «Ключ не найден», «Ключ не принят» или «Ключ не распознан»
Ключ скопирован не целиком или удалён в кабинете. Нужен заголовок Authorization: Bearer ВАШ_API_КЛЮЧ с ключом из нашего кабинета — ключ OpenAI не подходит.
402: «На балансе kosareva.cloud недостаточно средств»
Пополните баланс в кабинете картой или СБП — от 50 ₽. Если деньги есть, проверьте, не стоит ли у ключа свой лимит в рублях.
502 или 504
Сбой или долгий ответ на стороне модели — повторите запрос. Длинную запись надёжнее отправлять частями.
Что делать с расшифровкой дальше
Текст расшифровки — обычный текст, его можно сразу отправить в текстовую модель тем же ключом.
Whisper large-v3 whisper-large-v3
Сервер в России, язык и термины задаются в запросе. 0,51 ₽ за минуту записи.
Gemini 3.8 Flash gemini-3-8-flash
Отвечает быстро и стоит дешевле флагманов — чтобы из расшифровки звонка получить договорённости, задачи и сроки.
GPT-6.1 Sol gpt-6-1-sol
Окно больше миллиона токенов: расшифровка нескольких часов помещается в один запрос вместе с вопросами к ней.
ElevenLabs Turbo 2.5 elevenlabs-turbo-2-5
Текст в речь на /v1/audio/speech тем же ключом: до 5000 символов за запрос, ответ — mp3.
Частые вопросы
Подойдёт ли код, написанный под Whisper?
Да. Менять нужно ключ, base_url и имя модели — whisper-large-v3 вместо whisper-1. Формат запроса и ответа тот же.
Какие языки распознаются?
gemini-3-5-transcribe — больше 85 языков, язык определяется сам. Для русской речи берите whisper-large-v3 или gigaasr.
Сколько стоит час записи?
На whisper-large-v3 31 ₽, на gigaasr 50 ₽. Сумма видна в расходах кабинета.
Можно ли расшифровать запись длиннее часа?
Если файл меньше 25 МБ. Запись больше разрежьте на части по паузам и отправьте по очереди.
Разделяет ли модель говорящих?
Через наш API — пока нет: придёт сплошной текст или фразы с таймкодами без подписи, кто говорит.
Можно ли распознавать речь в реальном времени?
Нет. Файл отправляется целиком, ответ приходит после распознавания всей записи.
Рекомендуемые модели и цены
На странице модели все цены, примеры запросов и калькулятор расхода.
Gemini 3.5 Transcribe
Распознавание речи в текст: больше 85 языков, язык определяется сам, запись до часа
Gemini 3.8 Flash
Самая сильная модель линейки Flash: код, агенты и многошаговые рассуждения
GPT-6.1 Sol
Обновление GPT-6 Sol: та же цена, чтение кэша вдвое дешевле, контекст свыше 1M, картинки и файлы
ElevenLabs Turbo 2.5
Быстрая озвучка текста: черновики, боты, длинные материалы. До 5000 символов за запрос