ym88659208ym87991671
gRPC API потокового синтеза речи сервиса SaluteSpeech | Документация для разработчиков

API потокового синтеза речи (gRPC)

Обновлено 19 февраля 2025

Для синтеза речи вы можете использовать gRPC-протокол. Подробнее о нем читайте в официальной документации.

Запросы на синтез через gRPC передаются на адрес:

smartspeech.sber.ru

Заголовки запросов и ответов для всех шагов одинаковы:

Заголовки запроса

    authorization
    Bearer <Access token>
    required

    Информация об аутентификации с помощью Access Token, переданная через OAuth 2.0.
    Пример: Bearer eyJhbGciOi.cCI6IkpXVCJ9.eyJzd.1hcnRzcG.KUkw

Заголовки ответа

    x-request-id
    string
    required

    Уникальный идентификатор запроса, генерируемый сервером. 36 символов.
    Пример: 22345200-abe8-4f60-90c8-0d43c5f6c0f6

Создание приложения

Для работы с синтезом речи через gRPC вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.

При написании приложения используйте proto-файл.

Передача параметров синтеза

При обращении по gRPC-протоколу с запросом синтеза речи клиентское приложение использует метод Synthesis. В сообщении клиент должен отправить опции синтеза в сообщении типа SynthesisRequest.

Параметры сообщения:

    audio_encoding
    enum (AudioEncoding)

    Аудиокодек.
    Возможные значения:

    • pcm16_se — 16-битный PCM-поток с одним аудиоканалом, закодированный знаковыми целыми числами. Частота дискретизации берется из параметра voice;
    • opus — ogg-поток с аудиокодеком opus внутри;
    • wav16 — WAV PCM 16bit LE signed с заголовком. Частота дискретизации берется из параметра voice.

    Значение по умолчанию — wav16

    content_type
    enum

    Формат данных, передаваемых в теле запроса.
    Возможные значения:

    • text;
    • ssml.

    Значение по умолчанию — text

    text
    string

    Текст или SSML-разметка с текстом

    voice
    string

    Код голоса, например: Nec_24000. Первая часть означает диктора, вторая — частоту дискретизации аудио.
    Модели с частотой 8000 Гц предназначены для использования в телефонии.
    Вы можете выбрать голос из раздела Примеры голосов для синтеза или использовать уникальный брендированный голос с помощью сервиса YourVoice.

Получение ответа

Клиент передает текст на вход в составе сообщения SynthesisRequest. Если запрос обработан успешно, то в теле ответа в поле data придет бинарное представление синтезированного звука в запрошенном формате. Сервис в ответ передает клиенту сообщения SynthesisResponse.

Нет необходимости ждать полной обработки всего аудиопотока, вы получаете заголовки ответа в течение секунды, а затем в потоковом режиме приходят бинарные данные.

Заголовки ответа

В качестве заголовка передаются метаданные. Подробнее о читайте в официальной документации gRPC.

Параметры ответа

    data
    bytes

    Чанки аудио в заданном формате

    audio_duration
    google.protobuf.Duration

    Общая длительность сгенерированного в рамках запроса звука до текущего чанка

Возможные форматы

Если запрос обработан успешно, в поле data возвращаются аудио-чанки в заданном формате.

Значение параметра dataОписание формата

wav16

audio/x-wav

pcm16

audio/x-pcm; bit=16; rate=<частота дискретизации>

opus

audio/ogg; codecs=opus

Коды ошибок

Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации.

Некоторые коды и описание ошибок:

КодОписание

3

INVALID_ARGUMENT

Клиент неправильно заполнил параметры синтеза речи

5

NOT_FOUND

Не определена модель из запроса

7

PERMISSION_DENIED

Клиенту недоступно API синтеза речи

8

RESOURCE_EXHAUSTED: payment required

Клиент превысил квоту

8

RESOURCE_EXHAUSTED

Слишком много запросов

13

INTERNAL

Ошибка в работе сервиса синтеза речи

16

UNAUTHENTICATED

Клиент не предоставил, либо предоставил истекший/невалидный Access Token в заголовке Authorization

Пример клиентского приложения

Пример клиентского приложения на Python смотрите по ссылке.

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.