---
slug: "yandex-speechkit"
name: "Yandex SpeechKit API"
vendor: "Яндекс"
industry: "ai"
docsUrl: "https://aistudio.yandex.ru/ru/docs/speechkit/"
version: 2
updatedAt: "2026-10-24"
---

# Yandex SpeechKit API

Отрасль: AI и нейросети. Актуально на 2026-10-24.

API распознавания и синтеза речи Yandex SpeechKit (Yandex Cloud / AI Studio). Синхронное распознавание коротких аудио (до 30 секунд), асинхронное распознавание длинных файлов из Object Storage (до 4 часов) и синтез речи из текста или SSML. Описаны REST-методы API v1 и v2; потоковое распознавание и синтез API v3 работают через gRPC и в этот файл не вошли.

## Сценарии

### Распознать короткое голосовое сообщение

Голосовые сообщения в боте, голосовой поиск, короткие команды — аудио до 30 секунд.

1. Создай сервисный аккаунт с ролью ai.speechkit-stt.user и API-ключ; передавай его в заголовке Authorization: Api-Key <ключ>. С пользовательским аккаунтом (IAM-токен) нужен ещё параметр folderId.
2. Отправь аудио: POST /speech/v1/stt:recognize на stt.api.cloud.yandex.net — в теле двоичное содержимое файла (до 1 МБ, до 30 секунд, один канал), в строке запроса lang = ru-RU и format.
3. Голосовые из Telegram и большинства мессенджеров — OggOpus, это формат по умолчанию. Для «сырого» PCM передай format = lpcm и sampleRateHertz.
4. Распознанный текст — в поле result. Числа по умолчанию приходят цифрами; число тарифицированных единиц — в заголовке YaCloud-Billing-Units.

```bash
curl -X POST "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?lang=ru-RU&format=oggopus" \
  -H "Authorization: Api-Key $YANDEX_API_KEY" \
  --data-binary @voice.ogg
# → {"result": "привет хочу заказать доставку на завтра"}
```

### Расшифровать длинную запись разговора

Расшифровки звонков колл-центра, интервью, совещаний — файлы до 4 часов.

1. Асинхронное распознавание доступно только сервисному аккаунту с ролями ai.speechkit-stt.user и storage.uploader.
2. Загрузи файл в бакет Yandex Object Storage и получи ссылку на него.
3. Запусти распознавание: POST /speech/stt/v2/longRunningRecognize на transcribe.api.cloud.yandex.net с config.specification (languageCode, audioEncoding — OGG_OPUS, MP3 или LINEAR16_PCM) и audio.uri — ссылкой на файл. В ответе — ID операции.
4. Забирай результат: GET /operations/{operationId} на operation.api.cloud.yandex.net. Минута одноканального аудио распознаётся примерно за 10 секунд — не опрашивай слишком часто. Результат хранится 3 дня.
5. Для стерео-записи звонков с LPCM укажи audioChannelCount — каналы распознаются раздельно.

```bash
OP=$(curl -s -X POST https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize \
  -H "Authorization: Api-Key $YANDEX_API_KEY" -H 'Content-Type: application/json' \
  -d '{
        "config": {"specification": {"languageCode": "ru-RU", "audioEncoding": "MP3"}},
        "audio": {"uri": "https://storage.yandexcloud.net/<бакет>/calls/2026-10-24-call-1042.mp3"}
      }' | jq -r .id)

curl https://operation.api.cloud.yandex.net/operations/$OP -H "Authorization: Api-Key $YANDEX_API_KEY"
```

### Озвучить текст

Голосовые ответы бота, озвучка уведомлений и IVR-меню.

1. Отправь текст: POST /speech/v1/tts:synthesize на tts.api.cloud.yandex.net. Параметры передаются URL-кодированными в теле: text (до 5000 символов) или ssml, voice, speed (0.1–3.0) и format (oggopus, mp3 или lpcm).
2. Ответ — сразу аудиофайл в выбранном формате, сохрани его или отдай пользователю.
3. Для пауз, ударений и интонации используй ssml вместо text. Эмоциональную окраску задаёт emotion — доступность зависит от голоса.
4. Лимит — 40 запросов в секунду.

```bash
curl -X POST https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize \
  -H "Authorization: Api-Key $YANDEX_API_KEY" \
  --data-urlencode 'text=Ваш заказ номер тысяча сорок два передан курьеру.' \
  -d lang=ru-RU -d voice=alena -d speed=1.0 -d format=mp3 \
  -o speech.mp3
```

## Базовые URL

- Синхронное распознавание: `https://stt.api.cloud.yandex.net`
- Асинхронное распознавание: `https://transcribe.api.cloud.yandex.net`
- Синтез речи: `https://tts.api.cloud.yandex.net`
- Операции: `https://operation.api.cloud.yandex.net`

## Авторизация

Тип: Bearer-токен

- IAM-токен: `Authorization: Bearer <IAM-токен>`
- API-ключ сервисного аккаунта: `Authorization: Api-Key <API-ключ>`

При авторизации пользовательским аккаунтом нужен параметр `folderId`; для сервисного аккаунта он не используется. Асинхронное распознавание доступно только сервисным аккаунтам (роли `ai.speechkit-stt.user` и `storage.uploader`).

## Методы

### POST /speech/v1/stt:recognize — Синхронное распознавание

Тело — двоичное содержимое аудиофайла: до 1 МБ, до 30 секунд, один канал.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `lang` | query | string | нет | Язык распознавания, по умолчанию ru-RU |
| `topic` | query | string | нет | Языковая модель, по умолчанию general |
| `profanityFilter` | query | boolean | нет | Исключать ненормативную лексику, по умолчанию false |
| `rawResults` | query | boolean | нет | Числа прописью (true) или цифрами (false, по умолчанию) |
| `format` | query | string | нет | lpcm (без WAV-заголовка) или oggopus (по умолчанию) |
| `sampleRateHertz` | query | integer | нет | 48000 (по умолчанию), 16000 или 8000; только для lpcm |
| `folderId` | query | string | нет | ID каталога (для пользовательского аккаунта) |

Пример ответа:

```json
HTTP/1.1 200 OK
YaCloud-Billing-Units: 15
{
  "result": "твой номер 212-85-06"
}
```

### POST /speech/stt/v2/longRunningRecognize — Асинхронное распознавание

Хост `transcribe.api.cloud.yandex.net`. Возвращает ID операции; результат хранится 3 дня.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `config.specification.languageCode` | body | string | нет | Язык, по умолчанию ru-RU |
| `config.specification.model` | body | string | нет | Модель, по умолчанию general; влияет на стоимость |
| `config.specification.profanityFilter` | body | boolean | нет | Маскировать ненормативную лексику |
| `config.specification.literature_text` | body | boolean | нет | Режим нормализации текста |
| `config.specification.audioEncoding` | body | string | нет | LINEAR16_PCM, OGG_OPUS (по умолчанию) или MP3 |
| `config.specification.sampleRateHertz` | body | integer | нет | 48000 (по умолчанию), 16000, 8000; обязателен для LINEAR16_PCM |
| `config.specification.audioChannelCount` | body | integer | нет | Число каналов, только для LPCM, по умолчанию 1 |
| `config.specification.rawResults` | body | boolean | нет | Числа прописью |
| `audio.uri` | body | string | да | Ссылка на файл в Yandex Object Storage |

### GET /operations/{operationId} — Результат асинхронного распознавания

Хост `operation.api.cloud.yandex.net`. Минута одноканального аудио распознаётся примерно за 10 секунд; запросы результата ограничены по частоте.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `operationId` | path | string | да | ID операции из ответа longRunningRecognize |

### POST /speech/v1/tts:synthesize — Синтез речи

Хост `tts.api.cloud.yandex.net`. Параметры передаются URL-кодированными в теле POST-запроса (до 15 КБ). Ответ — двоичный аудиофайл в формате `format`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `text` | body | string | нет | Текст в UTF-8, до 5000 символов; взаимоисключающее с ssml |
| `ssml` | body | string | нет | Текст в формате SSML |
| `lang` | body | string | нет | Только ru-RU (по умолчанию) |
| `voice` | body | string | нет | Голос из списка голосов |
| `emotion` | body | string | нет | Эмоциональная окраска (для ru-RU, зависит от голоса) |
| `speed` | body | string | нет | Скорость от 0.1 до 3.0, по умолчанию 1.0 |
| `format` | body | string | нет | lpcm, oggopus (по умолчанию) или mp3 |
| `sampleRateHertz` | body | string | нет | 48000 (по умолчанию), 16000, 8000; только для lpcm |
| `folderId` | body | string | нет | ID каталога (для пользовательского аккаунта) |

## Нюансы

- Число тарифицируемых единиц возвращается в заголовке ответа `YaCloud-Billing-Units`.
- Для `lpcm` передаётся «сырое» аудио без WAV-заголовка; частота задаётся явно.
- Для OggOpus и MP3 число каналов не указывается — оно есть в самом файле.
- Для асинхронного распознавания файл сначала загружают в бакет Object Storage.

## Ошибки

| Код | Описание |
|---|---|
| `400` | Некорректные параметры запроса |
| `401` | Нужна аутентификация |
| `403` | Недостаточно прав |
| `429` | Превышена квота запросов |
| `500` | Внутренняя ошибка |
| `503` | Сервис временно недоступен |

## Ограничения

- Синхронное распознавание: 20 запросов в секунду; файл до 1 МБ и 30 секунд.
- Асинхронное распознавание: 500 запросов в час, 10 000 тарифицированных часов аудио в сутки; файл до 1 ГБ и 4 часов.
- Потоковое распознавание: 40 запросов в секунду.
- Синтез речи: 40 запросов в секунду; API v1 — до 5 000 символов, API v3 — до 250 символов и 24 секунд.
- Квоты меняются через техподдержку, лимиты — нет.

## Источники

- [Синхронное распознавание API v1](https://aistudio.yandex.ru/ru/docs/speechkit/stt/api/request-api)
- [Пример синхронного распознавания](https://aistudio.yandex.ru/ru/docs/speechkit/stt/api/request-examples)
- [Асинхронное распознавание](https://aistudio.yandex.ru/ru/docs/speechkit/stt/api/transcribation-api)
- [Синтез речи API v1](https://aistudio.yandex.ru/ru/docs/speechkit/tts/request)
- [Квоты и лимиты SpeechKit](https://aistudio.yandex.ru/ru/docs/speechkit/concepts/limits)
- [Обработка ошибок в API Yandex Cloud](https://yandex.cloud/ru/docs/api-design-guide/concepts/errors)

---

Если этого недостаточно — официальная документация: https://aistudio.yandex.ru/ru/docs/speechkit/
JSON: https://mcp-everything.ru/api/integrations/yandex-speechkit. MCP: https://mcp-everything.ru/mcp
