Свойства пакетного синтеза для текста в речь

Внимание

API пакетного синтеза общедоступно. API Long Audio будет выведен из эксплуатации 1 апреля 2027 г. Дополнительные сведения см. в разделе Миграция на API пакетного синтеза.

API пакетного синтеза может асинхронно синтезировать большой объем ввода текста (как длинный, так и короткий). Издатели и платформы аудиоконтентов могут создавать длинное звуковое содержимое в пакете. Например: аудио книги, новостные статьи и документы. API пакетного синтеза может создавать синтезированный звук дольше 10 минут.

Некоторые свойства в формате JSON требуются при создании нового задания пакетного синтеза. Другие свойства являются необязательными. Ответ пакетного синтеза содержит другие свойства для предоставления сведений о состоянии синтеза и результатах. Например, outputs.result свойство содержит расположение файлов результатов пакетного синтеза с выходными данными звука и журналами.

Свойства пакетного синтеза

Свойства пакетного синтеза описаны в следующей таблице.

Свойство Описание
createdDateTime Дата и время, когда была создана задача синтеза партий.

Это свойство доступно только для чтения.
customVoices Карта кастомного имени голоса и его идентификатора развертывания.

Например: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"}

Вы можете использовать имя голоса в вашем synthesisConfig.voice (когда inputKind установлено на "PlainText") или в SSML тексте inputs (когда inputKind установлено на "SSML").

Это свойство требуется для использования пользовательского голоса. Если вы пытаетесь использовать пользовательский голос, который не определен здесь, служба возвращает ошибку.
description Описание серийного синтеза.

Это необязательное свойство.
id Идентификатор задания пакетного синтеза, который вы передали в параметре пути.

Это свойство необходимо в указанном пути.
inputs Обычный текст или SSML для синтеза.

Если задано значение inputKind, укажите обычный "PlainText" текст, как показано здесь: "inputs": [{"content": "The rainbow has seven colors."}] inputKind Если задано значение "SSML", укажите текст на языке разметки синтеза речи (SSML), как показано ниже"inputs": [{"content": "<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": [{"content": "synthesize this to a file"},{"content": "synthesize this to another file"}] Однако если для свойства properties.concatenateResult задано значение true, каждый синтезированный результат записывается в тот же аудиовыходной файл.

Для новых абзацев не требуются отдельные текстовые входные данные. В любом из текстовых входных данных (до 1000) можно указать новые абзацы с помощью строки "\r\n" (newline). Ниже приведен пример входного текста с двумя абзацами, которые должны быть синтезированы в один и тот же выходной файл звука: "inputs": [{"content": "synthesize this to a file\r\nsynthesize this to another paragraph in the same file"}]

Нет ограничений абзаца, но максимальный размер полезных данных JSON (включая все текстовые входные данные и другие свойства) составляет 2 мегабайта.

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

Это свойство доступно только для чтения.
outputs.result Расположение файлов результатов пакетного синтеза с звуковыми выходными данными и журналами.

Это свойство доступно только для чтения.
properties Определенный набор необязательных параметров конфигурации пакетного синтеза.
properties.sizeInBytes Размер выходных данных звука в байтах.

Это свойство доступно только для чтения.
properties.billingDetails Количество слов, которые были обработаны и выставлены на счет customNeuralCharacters (настраиваемый голос) по сравнению с neuralCharacters (стандартный голос).

Это свойство доступно только для чтения.
properties.concatenateResult Определяет, следует ли сцепить результат. Это необязательное bool значение ("true" или "false") по умолчанию равно false.
properties.decompressOutputFiles Определяет, следует ли распаковать файлы результатов синтеза в целевом контейнере. Это свойство можно задать только в том случае, если destinationContainerUrl свойство задано. Это необязательное bool значение ("true" или "false") по умолчанию равно false.
properties.destinationContainerUrl Результаты пакетного синтеза можно хранить в записываемом Azure контейнере. Если вы не указываете URI контейнера с токеном подписи общего доступа (SAS), служба синтеза речи сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. SAS с хранимыми политиками доступа не поддерживается. При удалении задания синтеза данные результатов также удаляются.

Это необязательное свойство не включается в ответ при получении задания синтеза.
properties.destinationPath Префиксный путь для хранения результатов пакетного синтеза. Если не указан путь префикса, будет использоваться созданный системой путь.

Это свойство является необязательным и может быть задано только при указании 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 Длительность в часах после завершения задания синтеза, когда результаты синтеза будут автоматически удалены. Этот необязательный параметр по умолчанию (168 7 дней). Максимальное время жизни — 744 (31 день). Дата и время автоматического удаления (для заданий синтеза с состоянием "Успешно" или "Сбой") равно свойствам lastActionDateTime + timeToLiveInHours .

В противном случае можно вызвать метод delete, чтобы удалить задачу раньше.
properties.wordBoundaryEnabled Определяет, следует ли генерировать данные о границах слов. Это необязательное bool значение ("true" или "false") по умолчанию равно false.

Если запрашиваются данные границ слова, то соответствующий [nnnn].word.json файл включается в ZIP-файл результатов.
status Состояние обработки пакетного синтеза.

Состояние должно перейти из "В процессе" в "Успешно" или "Не удалось".

Это свойство доступно только для чтения.
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 Для некоторых голосов вы можете настроить стиль речи, чтобы выразить различные эмоции, такие как веселость, сочувствие и спокойствие. Вы можете оптимизировать голос для различных сценариев, таких как customer service, рассылка новостей и голосовой помощник.

Сведения о доступных стилях для каждого голоса см. в разделе "Стили голоса" и роли.

Это необязательное свойство применимо только в том случае, если 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 Создано указывает на успешное выполнение запроса на пакетный синтез (через HTTP POST).

Ошибка HTTP 204

Ошибка HTTP 204 указывает, что запрос выполнен успешно, но ресурс не существует. Например:

  • Вы попытались получить или удалить задание синтеза, которое не существует.
  • Задание синтеза успешно удалено.

Ошибка HTTP 400

Ниже приведены примеры, которые могут привести к ошибке 400:

  • outputFormat не поддерживается или является недопустимым. Укажите допустимое значение формата или оставьте outputFormat пустым, чтобы использовать параметр по умолчанию.
  • Число запрошенных текстовых входных данных превысило ограничение в 10 000.
  • Вы попытались использовать недопустимый идентификатор развертывания или пользовательский голос, который не был успешно развернут. Убедитесь, что ресурс «Speech» имеет доступ к пользовательскому голосу и что он успешно развернут. Необходимо также убедиться, что в запросе пакетного синтеза сопоставление {"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://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"

В этом случае заголовки ответа включают HTTP/1.1 400 Bad Request.

Текст ответа похож на следующий пример JSON:

{
  "error": {
    "code": "BadRequest",
    "message": "The inputs is required."
  }
}

Следующие шаги