Работа с TTS осуществляется по REST API. Для корректной работы с сервисом требуется пройти авторизацию. Подробно этот механизм описан в главе Authorization API. В процессе авторизации будет сформирован JWT содержащий UUID Ключа (key_uuid) и время жизни токена (exp).
Для синтеза аудио необходимо сделать POST запрос на URL из параметра endpoint_tts Ключа. Токен авторизации передаётся в заголовке X-Token POST запроса. Тело запроса представляет собой JSON-объект, формат которого описан ниже. В ответ, в зависимости от параметров запроса, возвращается байт-строка с аудио в формате PCM 16bit le без WAV-заголовка.
Тело запроса оформляется в формате JSON, который имеет следующие поля:
Параметр |
Описание |
text |
string Текст для генерации. Для передачи ударения необходимо поставить знак + перед ударной гласной: зам+ок. Поддерживается язык разметки SSML (детали смотрите ниже). |
samplerate |
int Частота дискретизации итогового аудио в герцах. Значение по умолчанию: 8000 |
offline |
bool Режим получения аудиоданных. Если режим активен ( Если режим Значение по умолчанию: Допустимые значения: |
enable_normalization |
bool Флаг включения/отключения нормализации входного текста. Если режим активен ( Если режим Значение по умолчанию: Допустимые значения: |
speed |
Управление темпом синтезированной речи. Имеется поддержка различных типов: float/int Допустимые значения: [0.5 .. 2.0] - это соответствует 50% и 200% от базовой скорости синтеза. Значение по умолчанию: 1.0. string Допустимые значения: default - значение по умолчанию, является синонимом для medium; medium - соответствует темпу речи спикера или значению 1.0; x-low - очень медленно; low - медленно; high - быстро; x-high - очень быстро. |
pitch |
Управление основным тоном синтезированной речи. float/int Допустимые значения: [-2.0 .. 2.0] - это соответствует понижению (с минусом) и повышению тона (без знака). Значение по умолчанию: 0.0. string Допустимые значения:
|
voice_name |
string Выбор голоса для синтеза. Допустимые значения описаны ниже. |
volume |
float Управление громкостью синтезированной речи. Единицы измерения: дБ Допустимые значения: [-inf .. inf] - изменение в 6 дБ соответствует изменению уровня сигнала в ~2 раза. Значение по умолчанию: Глобальное: 0.0, Из настроек голоса: voices.<voice_name>.volume: <value> (см. секцию /voices) |
Пример отправки POST запроса на синтез с последующей конвертацией в WAV-формат при помощи утилит curl и ffmpeg:
|
где data.json:
|
Пример кода на Python с записью результата в wav файл:
|
Доступен синтез речи с использованием следующих голосов:
Karina2:master | Женский русский голос |
Alex2:master | Мужской русский голос |
Anna:master | Женский русский голос |
Oleg:master | Мужской русский голос |
en_female:dev | Женский английский голос |
en_male:dev | Мужской английский голос |
Ударение
Чтобы поставить ударение на гласной, необходимо поставить знак + перед ударным гласным. Пример:
|
Разметка синтеза речи SSML
SSML (Speech Synthesis Markup Language) это формат разметки текста основанный на XML. SSML позволяет тонко настраивать параметры синтезируемой речи. В Neuro TTS поддерживаются следующие тэги SSML:
Тег |
Описание |
Пример |
<speak> |
Корневой тег для использования SSML. Является обязательным и должен обрамлять весь текст. | <speak>Добрый д+ень! Как у вас дела?</speak> |
<break> |
Обозначение паузы. Атрибут time позволяет задать значение паузы в секундах или миллисекундах. При использовании тега, паузы на знаках препинания игнорируются. |
|
<prosody> |
Позволяет управлять скоростью и высотой произношения. Атрибуты: rate - отвечает за скорость речи. pitch - отвечает за высоту речи. Допустимые значения те же, что и в JSON-запросе. Численные значения, также как и текстовые, необходимо передавать в кавычках. |
|
<prosody ...>...</prosody>
в поле "text
" запроса на синтез.pitch
и speed
переданные в запросе на синтез.pitch=default rate=default.