# Yandex SpeechKit API: Озвучить текст

Сценарий из mcp-everything. Актуально на 2026-10-24.

Голосовые ответы бота, озвучка уведомлений и 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/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.

## Другие сценарии

- [Распознать короткое голосовое сообщение](https://mcp-everything.ru/integrations/yandex-speechkit/scenarios/raspoznat-korotkoe-golosovoe-soobschenie.md)
- [Расшифровать длинную запись разговора](https://mcp-everything.ru/integrations/yandex-speechkit/scenarios/rasshifrovat-dlinnuyu-zapis-razgovora.md)

---

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