# Speech to text API для ваших аудио- и видеозаписей

> Speech to text API вернёт текст с временными метками и разметкой говорящих по желанию. Аудио/видео: до 95 МБ за запрос, до 2 ГБ частями. 1 кредит/мин.

Canonical: https://transcript1.com/ru/features/speech-to-text-api
Language: ru
Last updated: 2026-10-19

Через speech to text API вы загружаете аудио или видео и получаете транскрипт с временными метками и языком каждого сегмента. При необходимости добавьте определение говорящих. Файлы до 95 МБ можно отправить одним запросом, до 2 ГБ — частями с продолжением после обрыва связи.

- До 95 МБ одним запросом
- До 2 ГБ частями, с продолжением загрузки
- Удаляем исходный файл через 24 часа после завершения задачи

## Сначала проверьте размер и длительность записи

### Аудио и видео без лишней конвертации

Принимаем mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm и mkv. В файле должна быть звуковая дорожка.

### Небольшой файл одним запросом

Отправьте multipart/form-data на POST /v1/transcriptions. Этот способ подходит для файлов до 95 МБ.

### Большой файл по частям

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

### Записи до 5 часов

Для распознавания речи принимаем записи длительностью до 5 часов. Более длинная запись завершится с ошибкой media_too_long без списания кредитов.

### Файл и текст хранятся по-разному

Через 24 часа после конечного статуса удаляем загруженное аудио или видео. Транскрипт остаётся, пока вы сами его не удалите.

## Загрузите запись через API транскрибации аудио

Поместите байты записи в multipart-поле file. При необходимости добавьте language, diarize, source и webhook_url. [Пример загрузки одним запросом](https://transcript1.com/ru/docs/uploads#one-shot-upload) показывает формат полей. О готовности можно узнавать через [вебхук](https://transcript1.com/ru/features/vebhuk-transkribatsiya).

Если запись уже лежит на вашем сервере, начните с multipart. Границы частей пусть задаёт HTTP-клиент. Нужны сами байты файла: строка с локальным путём внутри JSON их не заменит. Пустой файл или неподдерживаемое расширение нужно исправить, а не отправлять повторно.

Размер и длительность проверяйте отдельно. Сжатая запись может весить меньше 95 МБ, но идти дольше 5 часов. Короткое видео в высоком разрешении, наоборот, может не поместиться в один запрос. По размеру выбирайте способ загрузки, по длительности проверяйте, подходит ли запись для распознавания.

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F language=auto
```

## Создайте загрузку для большого файла

Передайте имя и размер файла. В ответ придут план загрузки и X-Upload-Token для отправки частей. Полная последовательность запросов есть в [руководстве по загрузке частями](https://transcript1.com/ru/docs/uploads#chunked-upload).

Следуйте плану из ответа: у каждой части есть индекс, смещение и размер. Читайте из файла именно этот диапазон байтов. Последняя часть может оказаться короче остальных. Для бинарных PUT используйте X-Upload-Token, а не API-ключ: токен действует 1 час и только для этой загрузки.

Сохраните Idempotency-Key, с которым создали загрузку. Если токен истёк, повторите исходный запрос с тем же ключом и параметрами. Вы получите новый токен для существующей загрузки. Не создавайте новую после каждого обрыва: так вы потеряете связь с уже отправленными частями.

### Запрос на создание загрузки

```
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Idempotency-Key: interview-2026-10-13" \
  -H "Content-Type: application/json" \
  -d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'
```

## Отправьте недостающие части и завершите загрузку

Отправьте каждую часть методом PUT на её адрес с токеном загрузки. Затем подтвердите завершение: transcript1 проверит части и поставит запись в очередь на транскрибацию. Адреса запросов перечислены в [документации API](https://transcript1.com/ru/docs/api-reference#uploads).

Перед продолжением запросите GET /v1/transcriptions/:id/upload. Сравните received_chunks с планом и отправьте только недостающие части. Повторная отправка заменяет часть; её размер должен совпадать с планом. Ответ 401 может означать, что токен истёк, а не что файл испорчен.

При 409 upload_incomplete ответ укажет индексы недостающих частей. Дошлите их и завершите загрузку. После постановки в очередь проверяйте статус транскрибации или ждите вебхук. В интерфейсе разделяйте передачу файла и обработку записи: это разные этапы.

### Отправка части и подтверждение загрузки

```
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
  -H "X-Upload-Token: t1u_..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin

curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
```

## Что происходит до и после обработки

Статус awaiting_upload означает, что запись ещё не стоит в очереди на распознавание. Сначала передайте байты, затем завершите загрузку. Если связь оборвалась после подтверждения, прочитайте статус задачи, прежде чем отправлять подтверждение повторно.

У команды может быть до 20 незавершённых загрузок одновременно. Через 24 часа отменяем те, которые не завершили, и удаляем их части. Для обработанной записи срок другой: исходный файл удаляем через 24 часа после конечного статуса. Текст хранится до вашего удаления. Если приложению нужен плеер с записью, храните оригинал у себя.

Для пользовательской формы пригодится [руководство по расшифровке аудио](https://transcript1.com/ru/features/audio-v-tekst): как подготовить запись и проверить текст. Для исследовательского инструмента — [работа с интервью](https://transcript1.com/ru/use-cases/rasshifrovka-intervyu), где важно сохранить связь реплик с участниками и исходником.

## Частые вопросы

### Какие файлы принимает API?

mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm и mkv со звуковой дорожкой. Для другого расширения API вернёт 422 unsupported_media.

### Какой максимальный размер файла?

До 95 МБ одним запросом или до 2 ГБ частями. Тариф может устанавливать меньший предел. Если файл слишком большой, вернём 413 media_too_large.

### Когда удаляются загруженные записи?

Через 24 часа после конечного статуса транскрибации. Если вы не завершили загрузку за 24 часа, отменим её и удалим части. Готовый транскрипт хранится, пока вы его не удалите.

### Можно разделить реплики по говорящим?

Да. Передайте diarize=true: сегменты получат метки Speaker 1, Speaker 2 и так далее. Загруженные файлы всегда обрабатываем через распознавание речи.

## Читайте также

- [Определение говорящих](https://transcript1.com/ru/features/opredeleniye-govoryashchikh-v-audio)
- [Аудио в текст](https://transcript1.com/ru/features/audio-v-tekst)
- [Загрузка файлов (документация)](https://transcript1.com/ru/docs/uploads)
- [Видео в текст](https://transcript1.com/ru/features/video-v-tekst)
