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

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

Обновлено 4 июня 2024

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

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

smartspeech.sber.ru

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

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

authorization
required
string <Bearer <Access token>>

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

{
  • "authorization": "string"
}

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

x-request-id
required
string

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

{
  • "x-request-id": "string"
}

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

Для работы с синтезом речи через 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.

{
  • "audio_encoding": null,
  • "content_type": null,
  • "text": "string",
  • "voice": "string"
}

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

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

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

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

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

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

data
bytes

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

audio_duration
google.protobuf.Duration

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

{
  • "data": null,
  • "audio_duration": null
}

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

Если запрос обработан успешно, в поле 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 в настройках своего браузера.