Синтез речи
Синтез речи в Yandex SpeechKit позволяет озвучить любой текст на нескольких языках.
Голосовые модели SpeechKit используют технологию глубоких нейронных сетей. При синтезе речи модель обращает внимание на большое количество деталей исходного голоса. Перед началом синтеза модель оценивает весь текст целиком, а не отдельные предложения. Благодаря этому синтезированный голос звучит чисто и естественно, без электронных искажений, и воспроизводит уместные интонации, присущие речи живого человека.
Сервис доступен по адресу tts.api.cloud.yandex.net:443
.
Вы можете попробовать синтез и распознавание речи на сайте на странице SpeechKit.
Возможности синтеза
Работа со SpeechKit осуществляется через API или Playground. Подробнее о принципах работы API Yandex Cloud см. в документе Концепции API.
Синтез SpeechKit имеет два API — API v1 (REST) и API v3 (gRPC). На основе API v3 также реализован Python SDK SpeechKit.
API v1 | API v3 | |
---|---|---|
Спецификация | REST | gRPC, REST |
Выбор голоса | Параметр voice |
Параметр hints: voice |
Выбор языка | Зависит от голоса Параметр lang |
Зависит от голоса, в запросе явно не указан |
Задание амплуа | Зависит от голоса Параметр emotion |
Зависит от голоса Параметр hints: role |
Управление тембром голоса | Нет | Параметр hints: pitchShift |
Управление произношением | SSML TTS | TTS |
Скорость произношения | Параметр speed |
Параметр hints: speed |
Настройка громкости | Нет | Параметр loudness_normalization_type |
Формат результирующего аудио | Параметр format |
Параметр output_audio_spec |
Задание параметров LPCM | Параметр sampleRateHertz |
Параметр output_audio_spec: raw_audio |
Синтез по аудиошаблонам | Нет | Параметр text_template |
Способ тарификации | Суммарное количество символов в запросах | По запросам |
Автоматическое разбиение длинных фраз | Не требуется | Параметр unsafe_mode |
Примечание
На один запрос SpeechKit API v3 может прийти больше одного ответа с аудиофрагментом. Полный ответ получается путем склеивания всех полученных фрагментов.
Языки и голоса
Вы можете выбрать голос, который будет озвучивать ваш текст. Каждый голос соответствует модели, обученной на речи диктора. Голоса отличаются тембром, полом и языком говорящего. Список голосов и их характеристики см. в разделе Список голосов.
Если ни один голос не подходит вашему бизнесу, SpeechKit может создать уникальный — специально для вас. Подробнее об этом — в разделе Yandex SpeechKit Brand Voice.
SpeechKit может синтезировать речь на разных языках. Каждый голос предназначен для синтеза речи на определенном языке. Голоса могут произносить и текст на иностранном
языке, однако в этом случае качество синтезированной речи будет хуже: диктор
будет говорить с акцентом, а слова могут быть синтезированы с ошибками.
Амплуа
Синтезированная речь будет звучать по-разному в зависимости от выбранного амплуа. Амплуа — это характер произношения для одного и того же диктора. Для разных голосов доступны разные наборы амплуа. Попытка использовать амплуа, которого нет у выбранного голоса, вызовет ошибку сервиса.
Тембр голоса
Каждый голос SpeechKit имеет свою высоту. В API v3 вы можете изменить голос, указав смещение относительного базового тембра. Смещение задается в параметре hints: pitchShift
в Гц и может принимать значения [-1000;1000]
. По умолчанию значение параметра — 0
. Положительные значения параметра hints: pitchShift
делают голос выше, отрицательные — ниже.
Управление произношением
Чтобы контролировать произношение в синтезированной речи, явно размечайте исходный текст. SpeechKit может синтезировать речь из текста, размеченного по правилам Speech Synthesis Markup Language
- SSML поддерживается только в запросах API v1. Чтобы передать текст в формате SSML, укажите параметр
ssml
в теле запроса, а текст оберните в тег<speak>
. Подробнее о тегах SSML читайте в разделе Разметка SSML. - TTS-разметка поддерживается в API v1 и API v3. В запросах API v1 передавайте текст, размеченный по правилам TTS, в параметре
text
в теле запроса. API v3 и Python SDK не требуют специальных параметров и считают любой переданный текст размеченным по правилам TTS. Подробнее об использовании TTS-разметки читайте в разделе TTS-разметка текста.
Важно
При синтезе по аудиошаблонам разметка за пределами переменной части игнорируется.
Настройки синтеза
Вы можете настраивать не только произношение, но и технические характеристики синтезируемой речи.
Скорость синтезированной речи
Скорость синтезируемой речи влияет на восприятие информации. Слишком быстрое или слишком медленное произношение звучит неестественно, но может быть полезно в рекламе, где каждая секунда эфира стоит дорого.
По умолчанию скорость генерируемой речи соответствует средней скорости речи человека.
Нормализация громкости
В запросах API v3 и Python SDK вы можете задать тип и уровень нормализации громкости. Это может потребоваться, если вы используете синтез SpeechKit вместе с другими источниками звука. Например, чтобы громкость голосового ассистента не отличалась от уведомлений телефона.
SpeechKit поддерживает два типа нормализации:
- Пиковая нормализация
MAX_PEAK
, при которой уровень звукового сигнала поднимается до максимально возможного значения для цифрового звука без появления искажений. - Нормализация
LUFS
— взвешенная нормализация на основе стандарта EBU R 128 , в соответствии с которым нормализация громкости производится относительно цифровой полной шкалы.
Тип нормализации можно задать в параметре loudness_normalization_type
. По умолчанию SpeechKit использует тип LUFS.
Уровень нормализации задается параметром hints: volume
. Возможные значения зависят от типа нормализации:
- для
MAX_PEAK
параметр может принимать значения в интервале(0;1]
, значение по умолчанию —0.7
; - для
LUFS
параметр изменяется в интервале[-149;0)
, значение по умолчанию —-19
.
Если значение уровня нормализации не попадает в интервал, поддерживаемый уровнем нормализации, сервер SpeechKit вернет ошибку InvalidArgument
.
Формат синтезированного аудиофайла
Вы можете выбрать формат аудиофайлов, в котором SpeechKit будет синтезировать речь.
Полный список доступных форматов и их характеристики см. в разделе Поддерживаемые форматы аудио.
См. также
- Попробуйте синтез речи с помощью демо на странице сервиса.
- Ознакомьтесь с параметрами метода API v1 и запросов API v3.
- Посмотрите примеры использования API SpeechKit: