API потокового синтеза речи
Для синтеза речи вы можете использовать gRPC-протокол. Подробнее о нем читайте в официальной документации .
Запросы на синтез через gRPC передаются на адрес:
smartspeech.sber.ru
Заголовки запросов и ответов для всех шагов одинаковы:
Заголовки запроса
Информация об аутентификации с помощью Access Token, переданная через OAuth 2.0 .
Пример: Bearer eyJhbGciOi.cCI6IkpXVCJ9.eyJzd.1hcnRzcG.KUkw
Заголовки ответа
Уникальный идентификатор запроса, генерируемый сервером. 36 символов.
Пример: 22345200-abe8-4f60-90c8-0d43c5f6c0f6
Создание приложения
Для работы с синтезом речи через gRPC вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл .
Передача параметров синтеза
При обращении по gRPC-протоколу с запросом синтеза речи клиентское приложение использует метод Synthesis. В сообщении клиент должен отправить опции синтеза в сообщении типа SynthesisRequest.
Параметры сообщения:
pcm16_se— 16-битный PCM-поток с одним аудиоканалом, закодированный знаковыми целыми числами. Частота дискретизации берется из параметраvoice;opus— ogg-поток с аудиокодеком opus внутри;wav16— WAV PCM 16bit LE signed с заголовком. Частота дискретизации берется из параметраvoice.text;ssml.
Аудиокодек.
Возможные значения:
Значение по умолчанию — wav16
Формат данных, передаваемых в теле запроса.
Возможные значения:
Значение по умолчанию — text
Текст или SSML-разметка с текстом
Код голоса, например: Nec_24000. Первая часть означает диктора, вторая — частоту дискретизации аудио.
Модели с частотой 8000 Гц предназначены для использования в телефонии.
Вы можете выбрать голос из раздела Примеры голосов для синтеза или использовать уникальный брендированный голос с помощью сервиса YourVoice .
По умолчанию: ru-RU
Язык для синтеза речи в формате RFC-3066.
Доступные языки: ru-RU (русский), en-US (английский), kk-KZ (казахский), ky-KG (киргизский), uz-UZ (узбекский), pt-PT (португальский), pl-PL (польский), nl-NL (нидерландский), de-DE (немецкий), es-ES (испанский), fr-FR (французский),
it-IT (итальянский).
Получение ответа
Клиент передает текст на вход в составе сообщения SynthesisRequest. Если запрос обработан успешно, то в теле ответа в поле data придет бинарное представление синтезированного звука в запрошенном формате. Сервис в ответ передает клиенту сообщения SynthesisResponse.
Нет необходимости ждать полной обработки всего аудиопотока, вы получаете заголовки ответа в течение секунды, а затем в потоковом режиме приходят бинарные данные.
Заголовки ответа
В качестве заголовка передаются метаданные. Подробнее о читайте в официальной документации gRPC .
Параметры ответа
Чанки аудио в заданном формате
Общая длительность сгенерированного в рамках запроса звука до текущего чанка
Возможные форматы
Если запрос обработан успешно, в поле data возвращаются аудио-чанки в заданном формате.
| Значение параметра data | Описание формата |
|---|---|
|
|
|
|
|
|
Коды ошибок
Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации .
Некоторые коды и описание ошибок:
| Код | Описание |
|---|---|
|
Клиент неправильно заполнил параметры синтеза речи |
|
Не определена модель из запроса |
|
Клиенту недоступно API синтеза речи |
|
Клиент превысил квоту |
|
Слишком много запросов |
|
Ошибка в работе сервиса синтеза речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный |
Пример клиентского приложения
Пример клиентского приложения на Python смотрите по ссылке .