# SaluteSpeech MCP — распознавание и синтез русской речи для ИИ-ассистента Если вы искали, как расшифровать созвон или голосовое сообщение в текст, озвучить текст голосом Сбера или подключить русский speech-to-text к Claude без собственного бэкенда — это оно. **5 инструментов** поверх Sber SaluteSpeech API: распознавание речи (STT) и синтез речи (TTS). [![npm](https://img.shields.io/npm/v/@theyahia/salutespeech-mcp)](https://www.npmjs.com/package/@theyahia/salutespeech-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Часть серии [WWmcp](https://github.com/theYahia/WWmcp) (46 серверов) от [@theYahia](https://github.com/theYahia). ## Установка ### Claude Desktop ```json { "mcpServers": { "salutespeech": { "command": "npx", "args": ["-y", "@theyahia/salutespeech-mcp"], "env": { "SALUTESPEECH_API_KEY": "your-base64-key" } } } } ``` ### Claude Code ```bash claude mcp add salutespeech -e SALUTESPEECH_API_KEY=your-key -- npx -y @theyahia/salutespeech-mcp ``` ### Режим Streamable HTTP ```bash SALUTESPEECH_API_KEY=your-key npx @theyahia/salutespeech-mcp --http --port=3000 # POST http://localhost:3000/mcp # GET http://localhost:3000/health ``` ## Авторизация Три варианта (проверяются по порядку): | Переменная | Формат | |---------|--------| | `SALUTESPEECH_API_KEY` | Base64 от строки `client_id:client_secret` | | `SALUTE_AUTH_KEY` | То же самое (устаревший алиас) | | `SALUTE_SPEECH_CLIENT_ID` + `SALUTE_SPEECH_CLIENT_SECRET` | Сырые учётные данные (кодируются автоматически) | OAuth-токены запрашиваются и обновляются автоматически. Scope по умолчанию — `SALUTE_SPEECH_PERS` (физлица); для корпоративных аккаунтов задайте `SALUTE_SPEECH_SCOPE` (`SALUTE_SPEECH_CORP` — постоплата, `SALUTE_SPEECH_B2B` — предоплата). Учётные данные выдаются на [developers.sber.ru](https://developers.sber.ru). ## Инструменты (5) | Инструмент | Описание | |------|-------------| | `recognize_speech` | Распознавание речи из аудио в Base64 | | `synthesize_speech` | Синтез речи, возвращает аудио в Base64 | | `list_models` | Список моделей распознавания и голосов синтеза | | `get_task_status` | Статус асинхронной задачи распознавания | | `recognize_file` | Распознавание речи из локального файла по пути | ## Навыки (Skills) - `skill-transcribe` — пошаговый сценарий расшифровки аудио - `skill-synthesize` — пошаговый сценарий синтеза речи ## Примеры ``` Расшифруй аудиофайл /tmp/meeting.wav Озвучь «Привет, мир» голосом Bys_24000 в формате wav16 Покажи доступные голоса ``` ## Ограничения `recognize_speech` и `recognize_file` работают через **синхронный** эндпоинт с лимитом **2 МБ / 1 минута** аудио (файл больше — HTTP 413). Для многоканального аудио распознаётся только первый канал. Длинные записи требуют асинхронного сценария (`data:upload` → `speech:async_recognize` → `task:get` → `data:download`) — он пока не вынесен в инструменты; шаг опроса статуса покрывает `get_task_status`. Текст для синтеза ограничен **4000 символами** (включая пробелы и SSML-разметку). ## Решение проблем ### `self-signed certificate in certificate chain` / `UNABLE_TO_VERIFY_LEAF_SIGNATURE` Эндпоинты Сбера используют **Russian Trusted Root CA (НУЦ Минцифры)**, которого **нет** в дефолтном хранилище доверенных корневых сертификатов Node.js — поэтому самый первый OAuth-запрос падает, пока вы его не добавите. Решение: скачайте корневой сертификат (`russian_trusted_root_ca_pem.crt`) с [gosuslugi.ru/crt](https://www.gosuslugi.ru/crt) и укажите его Node.js: ```bash export NODE_EXTRA_CA_CERTS=/path/to/russian_trusted_root_ca_pem.crt ``` В MCP-клиенте добавьте эту переменную в блок `env` сервера. **Не** ставьте `NODE_TLS_REJECT_UNAUTHORIZED=0` в продакшене — это полностью отключает проверку TLS. Официальная инструкция: [сертификаты SaluteSpeech](https://developers.sber.ru/docs/ru/salutespeech/certificates). ## Лицензия MIT --- Часть [WWmcp](https://github.com/theYahia/WWmcp) · Telegram: [@vhodvai](https://t.me/vhodvai)