Свойства пакетного синтеза для текста в речь
Внимание
API синтеза пакетной службы общедоступен. API long Audio будет прекращен 1 апреля 2027 г. Дополнительные сведения см. в разделе "Миграция в API пакетного синтеза".
API синтеза пакетной службы может синтезировать большой объем ввода текста (длинный и короткий) асинхронно. Издатели и платформы аудиоконтентов могут создавать длинное звуковое содержимое в пакете. Например: аудио книги, новостные статьи и документы. API пакетного синтеза может создавать синтезированный звук дольше 10 минут.
Некоторые свойства в формате JSON требуются при создании нового задания пакетного синтеза. Другие свойства являются необязательными. Ответ пакетного синтеза содержит другие свойства для предоставления сведений о состоянии синтеза и результатах. Например, outputs.result
свойство содержит расположение файлов результатов пакетного синтеза с выходными данными звука и журналами.
Свойства пакетного синтеза
Свойства синтеза пакетной службы описаны в следующей таблице.
Свойство | Description |
---|---|
createdDateTime |
Дата и время создания задания синтеза пакетной службы. Это свойство доступно только для чтения. |
customVoices |
Карта пользовательского имени голоса и его идентификатора развертывания. Например: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"} Вы можете использовать имя голоса в synthesisConfig.voice вашем (если inputKind задано "PlainText" значение ) или в тексте inputs SSML (если inputKind задано значение "SSML" ).Это свойство требуется для использования пользовательского голоса. Если вы пытаетесь использовать пользовательский голос, который не определен здесь, служба возвращает ошибку. |
description |
Описание синтеза пакетной службы. Это необязательное свойство. |
id |
Идентификатор задания пакетного синтеза, который вы передали в пути. Это свойство необходимо в пути. |
inputs |
Обычный текст или SSML для синтеза. Если задано значение "PlainText" , укажите обычный inputKind текст, как показано здесь: "inputs": [{"text": "The rainbow has seven colors."}] inputKind Если задано значение "SSML" , укажите текст на языке разметки синтеза речи (SSML), как показано ниже"inputs": [{"text": "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-AvaMultilingualNeural'\''>The rainbow has seven colors.</voice></speak>"}] .Включите до 1000 текстовых объектов, если требуется несколько звуковых выходных файлов. Ниже приведен пример входного текста, который должен быть синтезирован в два звуковых выходных файла: "inputs": [{"text": "synthesize this to a file"},{"text": "synthesize this to another file"}] Однако если properties.concatenateResult для свойства задано true значение, каждый синтезированный результат записывается в тот же выходной файл звука.Для новых абзацев не требуются отдельные текстовые входные данные. В любом из текстовых входных данных (до 1000) можно указать новые абзацы с помощью строки "\r\n" (newline). Ниже приведен пример входного текста с двумя абзацами, которые должны быть синтезированы в один и тот же выходной файл звука: "inputs": [{"text": "synthesize this to a file\r\nsynthesize this to another paragraph in the same file"}] Нет ограничений абзаца, но максимальный размер полезных данных JSON (включая все текстовые входные данные и другие свойства) составляет 2 мегабайта. Это свойство необходимо при создании нового задания пакетного синтеза. Это свойство не включается в ответ при получении задания синтеза. |
internalId |
Внутренний идентификатор задания синтеза пакетной службы. Это свойство доступно только для чтения. |
lastActionDateTime |
Последняя дата и время status изменения значения свойства.Это свойство доступно только для чтения. |
outputs.result |
Расположение файлов результатов пакетного синтеза с звуковыми выходными данными и журналами. Это свойство доступно только для чтения. |
properties |
Определенный набор необязательных параметров конфигурации пакетного синтеза. |
properties.sizeInBytes |
Размер выходных данных звука в байтах. Это свойство доступно только для чтения. |
properties.billingDetails |
Количество слов, обработанных и выставленных по сравнению neuralCharacters с (предварительно созданнымиcustomNeuralCharacters ) голосами.Это свойство доступно только для чтения. |
properties.concatenateResult |
Определяет, следует ли сцепить результат. Это необязательное bool значение ("true" или "false") по умолчанию равно false. |
properties.decompressOutputFiles |
Определяет, следует ли распаковать файлы результатов синтеза в целевом контейнере. Это свойство можно задать только в том случае, если destinationContainerUrl свойство задано. Это необязательное bool значение ("true" или "false") по умолчанию равно false. |
properties.destinationContainerUrl |
Результаты пакетного синтеза можно хранить в записываемом контейнере Azure. Если URI контейнера с подписанными URL-адресами (SAS) не указан, служба "Речь" сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. Подписанный URL-адрес (SAS) с хранимыми политиками доступа не поддерживаются. При удалении задания синтеза данные результатов также удаляются. Это необязательное свойство не включается в ответ при получении задания синтеза. |
properties.destinationPath |
Путь префикса, в котором можно хранить результаты пакетного синтеза. Если не указать путь префикса, по умолчанию используется YourSpeechResourceId/YourSynthesisId путь префикса.Это необязательное свойство можно задать только в том случае, если destinationContainerUrl свойство задано. |
properties.durationInMilliseconds |
Длительность вывода звука в миллисекундах. Это свойство доступно только для чтения. |
properties.failedAudioCount |
Количество входных данных синтеза пакетного синтеза для выходных данных звука завершилось сбоем. Это свойство доступно только для чтения. |
properties.outputFormat |
Формат выходных данных звука. Сведения о принятых значениях см . в форматах выходных данных звука. Формат выходных данных по умолчанию — riff-24khz-16bit-mono-pcm . |
properties.sentenceBoundaryEnabled |
Определяет, следует ли создавать данные границ предложения. Это необязательное bool значение ("true" или "false") по умолчанию равно false.Если запрашивается данные границ предложения, соответствующий [nnnn].sentence.json файл включается в ZIP-файл результатов. |
properties.succeededAudioCount |
Количество входных данных синтеза пакетного синтеза для выходных данных звука выполнено успешно. Это свойство доступно только для чтения. |
properties.timeToLiveInHours |
Длительность в часах после создания задания синтеза, когда результаты синтеза будут автоматически удалены. Этот необязательный параметр имеет значение 744 (31 дней) по умолчанию. Максимальное время жизни составляет 31 дней. Дата и время автоматического удаления (для заданий синтеза с состоянием "Успешно" или "Сбой") равно свойствам lastActionDateTime + timeToLiveInHours .В противном случае можно вызвать метод синтеза удаления , чтобы удалить задание раньше. |
properties.wordBoundaryEnabled |
Определяет, следует ли создавать данные границ слова. Это необязательное bool значение ("true" или "false") по умолчанию равно false.Если запрашивается данные границ слова, соответствующий [nnnn].word.json файл включается в ZIP-файл результатов. |
status |
Состояние обработки пакетного синтеза. Состояние должно выполняться с "NotStarted" на "Выполнение" и, наконец, до "Успешно" или "Сбой". Это свойство доступно только для чтения. |
synthesisConfig |
Параметры конфигурации, используемые для пакетного синтеза обычного текста. Это свойство применимо только в том случае, если inputKind задано значение "PlainText" . |
synthesisConfig.backgroundAudio |
Фоновый звук для каждого выходного звука. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.backgroundAudio.fadein |
Длительность фонового звука исчезает в миллисекундах. Значение по умолчанию — 0 , что эквивалентно отсутствию постепенного усиления. Принятые значения: 0 для 10000 инклюзивности.Дополнительные сведения см. в таблице атрибутов в документации по добавлению фонового звука в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.backgroundAudio.fadeout |
Длительность фонового звука исчезает в миллисекундах. Значение по умолчанию — 0 это эквивалент не исчезает. Принятые значения: 0 для 10000 инклюзивности.Дополнительные сведения см. в таблице атрибутов в документации по добавлению фонового звука в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.backgroundAudio.src |
Расположение URI фонового звукового файла. Дополнительные сведения см. в таблице атрибутов в документации по добавлению фонового звука в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это свойство требуется при synthesisConfig.backgroundAudio установке. |
synthesisConfig.backgroundAudio.volume |
Том фонового звукового файла. Принятые значения: 0 для 100 инклюзивности. Значение по умолчанию — 1 .Дополнительные сведения см. в таблице атрибутов в документации по добавлению фонового звука в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.pitch |
Шаг выходных данных звука. Сведения о принятых значениях см . в таблице корректировки просодии в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.rate |
Частота выходных данных звука. Сведения о принятых значениях см . в таблице корректировки просодии в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.role |
Для некоторых голосов можно настроить речевой ролевой игры. Голос может имитировать другой возраст и пол, но имя голоса не изменяется. Например, мужской голос может поднять поле и изменить интонацию, чтобы имитировать женский голос, но имя голоса не изменилось. Если роль отсутствует или не поддерживается для голоса, этот атрибут игнорируется. Сведения о доступных стилях для каждого голоса см. в разделе "Стили голоса" и роли. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.speakerProfileId |
Идентификатор профиля докладчика личного голоса. Сведения о доступных именах моделей личной голосовой базы см. в статье интеграции личного голоса. Сведения о том, как получить идентификатор профиля говорящего, см. в разделе о поддержке языка и голосовой связи. Это свойство является обязательным, если inputKind задано значение "PlainText" . |
synthesisConfig.style |
Для некоторых голосов вы можете настроить стиль речи, чтобы выразить различные эмоции, такие как веселость, сочувствие и спокойствие. Можно оптимизировать использование голоса для различных сценариев, таких как обслуживание клиентов, чтение новостей и реализация голосового помощника. Сведения о доступных стилях для каждого голоса см. в разделе "Стили голоса" и роли. Это необязательное свойство применимо только в том случае, если synthesisConfig.style задано. |
synthesisConfig.styleDegree |
Интенсивность говорящих стилей. Вы можете указать более строгий или мягкий стиль, чтобы сделать речь более экспрессивной или подчиненной. Диапазон допустимых значений: 0,01 до 2 включительно. Значение по умолчанию — 1, то есть предварительно заданная интенсивность стиля. Минимальная единица — 0,01, определяющая едва заметную тенденцию целевого стиля. Значение 2 приводит к удвоению интенсивности стиля по умолчанию. Если степень стиля отсутствует или не поддерживается для голоса, этот атрибут игнорируется. Сведения о доступных стилях для каждого голоса см. в разделе "Стили голоса" и роли. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
synthesisConfig.voice |
Голос, который говорит о выходе звука. Сведения о доступных предварительно созданных нейронных голосах см. в разделе о поддержке языка и голоса. Чтобы использовать пользовательский голос, необходимо указать допустимое сопоставление пользовательского голоса и идентификатора развертывания в свойстве customVoices . Чтобы использовать личный голос, необходимо указать synthesisConfig.speakerProfileId свойство. Это свойство является обязательным, если inputKind задано значение "PlainText" . |
synthesisConfig.volume |
Громкость выходных данных звука. Сведения о принятых значениях см . в таблице корректировки просодии в документации по языку разметки синтеза речи (SSML). Недопустимые значения игнорируются. Это необязательное свойство применимо только в том случае, если inputKind задано "PlainText" значение . |
inputKind |
Указывает, должно ли текстовое inputs свойство быть обычным или SSML. Возможные значения без учета регистра: "PlainText" и "SSML". inputKind Если задано значение"PlainText" , необходимо также задать свойство голосовой synthesisConfig связи.Это обязательное свойство. |
Задержка синтеза пакетной службы и рекомендации
При использовании пакетного синтеза для создания синтезированного речи важно учитывать задержку и следовать рекомендациям по достижению оптимальных результатов.
Задержка в пакетном синтезе
Задержка в синтезе пакетов зависит от различных факторов, включая сложность входного текста, количество входных данных в пакете и возможности обработки базового оборудования.
Задержка для синтеза пакетной службы выполняется следующим образом (приблизительно):
Задержка в 50% от синтезированных выходных данных речи составляет от 10 до 20 секунд.
Задержка в 95% от синтезированных выходных данных речи составляет в течение 120 секунд.
Рекомендации
При рассмотрении пакетного синтеза для приложения рекомендуется оценить, соответствует ли задержка вашим требованиям. Если задержка соответствует требуемой производительности, синтез пакетной службы может быть подходящим вариантом. Однако если задержка не соответствует вашим потребностям, можно рассмотреть возможность использования API в режиме реального времени.
Коды состояния HTTP
В разделе подробно описаны коды и сообщения HTTP-ответов из API пакетного синтеза.
HTTP 200 OK
HTTP 200 OK указывает, что запрос выполнен успешно.
Создано HTTP 201
Http 201 Create указывает на успешное выполнение запроса на синтез пакетной службы (через HTTP POST).
Ошибка HTTP 204
Ошибка HTTP 204 указывает, что запрос выполнен успешно, но ресурс не существует. Например:
- Вы попытались получить или удалить задание синтеза, которое не существует.
- Задание синтеза успешно удалено.
Ошибка HTTP 400
Ниже приведены примеры, которые могут привести к ошибке 400:
- Неподдерживаемый
outputFormat
или недопустимый. Укажите допустимое значение формата или оставьтеoutputFormat
пустым, чтобы использовать параметр по умолчанию. - Число запрошенных текстовых входных данных превысило ограничение в 10 000.
- Вы попытались использовать недопустимый идентификатор развертывания или пользовательский голос, который не был успешно развернут. Убедитесь, что ресурс "Речь" имеет доступ к пользовательскому голосу, а пользовательский голос успешно развернут. Необходимо также убедиться, что сопоставление
{"your-custom-voice-name": "your-deployment-ID"}
правильно в запросе синтеза пакетной службы. - Вы пытались использовать ресурс "Речь F0", но регион поддерживает только ценовую категорию ресурсов "Стандартная речь".
Ошибка HTTP 404
Не удается найти указанную сущность. Проверьте правильность идентификатора синтеза.
Ошибка HTTP 429
Слишком много последних запросов. Каждое клиентское приложение может отправлять до 100 запросов в 10 секунд для каждого ресурса службы "Речь". Уменьшите количество запросов в секунду.
Ошибка HTTP 500
Ошибка внутреннего сервера HTTP 500 указывает на сбой запроса. Текст ответа содержит сообщение об ошибке.
Пример ошибки HTTP
Ниже приведен пример запроса, который приводит к ошибке HTTP 400, так как inputs
свойство требуется для создания задания.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
"inputKind": "SSML"
}' "https://YourSpeechRegion.api.cognitive.microsoft.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"
В этом случае заголовки ответа включают HTTP/1.1 400 Bad Request
.
Текст ответа похож на следующий пример JSON:
{
"error": {
"code": "BadRequest",
"message": "The inputs is required."
}
}