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

API для пакетного синтеза текста в речь позволяет асинхронно синтезировать текст в виде видеофайла, представляющего говорящего аватара. Издатели и платформы видеоконтентов могут использовать этот API для создания видеоконтента аватара в пакете. Этот подход подходит для различных вариантов использования, таких как учебные материалы, презентации или объявления.

Видео с синтетическим аватаром будет создано асинхронно после того, как система получит ввод текста. Созданные выходные данные видео можно скачать в пакетном режиме синтеза. Вы отправляете текст для синтеза, проверяете состояние синтеза и скачиваете видео файл, когда состояние показывает успех. Форматы ввода текста должны быть простым текстом или текстом языка разметки синтеза речи (SSML).

На этой схеме представлен общий обзор рабочего процесса.

Снимок экрана: общий обзор рабочего процесса пакетного синтеза.

Попробуйте использовать функцию преобразования текста в речь для аватара в Microsoft Foundry.

Предпосылки

Попробуйте аватар с функцией преобразования текста в речь

Попробуйте text to speech на портале Foundry, выполнив следующие действия.

  1. Перейдите к Microsoft Foundry.
  2. Выберите "Сборка" в правом верхнем меню.
  3. Выберите модели на левой панели.
  4. На вкладке AI Services показаны модели искусственного интеллекта Azure, готовые к использованию на портале Foundry. Выберите Azure Speech - Text to Speech Avatar, чтобы открыть площадку Text to Speech Avatar.
  5. Выберите предварительно созданный аватар из сетки и выберите голос в раскрывающемся меню голосовой связи .
  6. Введите пример текста в текстовом поле справа.
  7. Нажмите «Воспроизвести», чтобы прослушать, как синтетический голос читает ваш текст.
  8. Перейдите на вкладку "Созданное видео" , чтобы просмотреть выходные данные видео аватара, выступающего с текстом с естественным движением лиц и жестами.
  9. Перейдите на вкладку Code, чтобы получить пример кода для использования функции аватара text to speech в приложении.

Другие функции Foundry (новые)

На портале Foundry (new) доступны следующие функции распознавания речи:

Для выполнения пакетного синтеза можно использовать следующие операции REST API.

Операция Метод Вызов REST API
Создание пакетного синтеза ПОСТАВИТЬ аватар/batchsyntheses/{SynthesisId}?api-version=2024-08-01
Процесс пакетного синтеза ПОЛУЧАЙ аватар/batchsyntheses/{SynthesisId}?api-version=2024-08-01
Перечень пакетного синтеза ПОЛУЧАЙ аватар/batchsyntheses/?api-version=2024-08-01
Удаление пакетного синтеза Удалить аватар/batchsyntheses/{SynthesisId}?api-version=2024-08-01

Примеры кода см. в GitHub.

Создание запроса на пакетный синтез

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

Чтобы отправить запрос на пакетный синтез, создайте тело HTTP POST запроса, выполнив следующие инструкции:

  • Задайте обязательное свойство inputKind.
  • Если для свойства inputKind задано значение PlainText, необходимо также задать в объекте voice свойство synthesisConfig. В следующем примере inputKind установлено в SSML, поэтому speechSynthesis не установлено.
  • Задайте обязательное свойство SynthesisId. Выберите уникальный SynthesisId для данного речевого ресурса. Это SynthesisId может быть строка от 3 до 64 символов, включая буквы, цифры, "-" или "_", с условием, что он должен начинаться и заканчиваться буквой или числом.
  • Задайте обязательные talkingAvatarCharacter и talkingAvatarStyle свойства. Вы можете найти поддерживаемые символы и стили аватаров здесь.
  • При необходимости можно задать videoFormatbackgroundColorи другие свойства. Для получения дополнительной информации см. свойства пакетного синтеза.

Примечание.

Максимальный размер полезных данных JSON составляет 500 килобайт.

Каждый ресурс службы "Речь" может выполнять до 200 заданий пакетного синтеза одновременно.

Максимальная длина выходного видео в настоящее время составляет 20 минут, что может увеличиться в будущем.

Чтобы сделать HTTP-запрос PUT, используйте формат URI, показанный в следующем примере. Замените YourSpeechKey ключом ресурса Speech, YourSpeechRegion регионом ресурса Speech, и задайте свойства тела запроса, как описано ранее.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
    "inputKind": "SSML",
    "inputs": [
        {
         "content": "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice name='\''en-US-AvaMultilingualNeural'\''>The rainbow has seven colors.</voice></speak>"
        }
    ],
    "avatarConfig": {
        "talkingAvatarCharacter": "lisa",
        "talkingAvatarStyle": "graceful-sitting"
    }
}'  "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/my-job-01?api-version=2024-08-01"

Вы должны получить ответ в следующем формате:

{
    "id": "my-job-01",
    "internalId": "5a25b929-1358-4e81-a036-33000e788c46",
    "status": "NotStarted",
    "createdDateTime": "2024-03-06T07:34:08.9487009Z",
    "lastActionDateTime": "2024-03-06T07:34:08.9487012Z",
    "inputKind": "SSML",
    "customVoices": {},
    "properties": {
        "timeToLiveInHours": 744,
    },
    "avatarConfig": {
        "talkingAvatarCharacter": "lisa",
        "talkingAvatarStyle": "graceful-sitting",
        "videoFormat": "Mp4",
        "videoCodec": "hevc",
        "subtitleType": "soft_embedded",
        "bitrateKbps": 2000,
        "customized": false
    }
}

Свойство status должно переходить от NotStarted статуса к Running и, наконец, к Succeeded или Failed. Вы можете периодически вызывать API пакетного синтеза GET до тех пор, пока возвращенное состояние не будет Succeeded или Failed.

Получение пакетного синтеза

Чтобы получить состояние задания пакетного синтеза, сделайте HTTP-запрос GET с помощью URI, как показано в следующем примере.

Замените YourSynthesisId на ваш идентификатор пакетного синтеза, YourSpeechKey на ключ ресурса Speech, и YourSpeechRegion на регион ресурса Speech.

curl -v -X GET "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/YourSynthesisId?api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"

Вы должны получить ответ в следующем формате:

{
    "id": "my-job-01",
    "internalId": "5a25b929-1358-4e81-a036-33000e788c46",
    "status": "Succeeded",
    "createdDateTime": "2024-03-06T07:34:08.9487009Z",
    "lastActionDateTime": "2024-03-06T07:34:12.5698769",
    "inputKind": "SSML",
    "customVoices": {},
    "properties": {
        "timeToLiveInHours": 744,
        "sizeInBytes": 344460,
        "durationInMilliseconds": 2520,
        "succeededCount": 1,
        "failedCount": 0,
        "billingDetails": {
            "neuralCharacters": 29,
            "talkingAvatarDurationSeconds": 2
        }
    },
    "avatarConfig": {
        "talkingAvatarCharacter": "lisa",
        "talkingAvatarStyle": "graceful-sitting",
        "videoFormat": "Mp4",
        "videoCodec": "hevc",
        "subtitleType": "soft_embedded",
        "bitrateKbps": 2000,
        "customized": false
    },
    "outputs": {
        "result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
        "summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
    }
}

Из поля outputs.result, можно скачать видеофайл, содержащий аватар-видео. Поле outputs.summary позволяет скачать сводку и сведения об отладке. Дополнительные сведения о результатах пакетного синтеза см. в разделе результатов пакетного синтеза.

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

Чтобы перечислить все задания пакетного синтеза для ресурса "Речь", сделайте HTTP-запрос GET с помощью URI, как показано в следующем примере.

Замените YourSpeechKey ключом ресурса "Речь" и YourSpeechRegion регионом ресурса "Речь". При необходимости можно задать skip параметры запроса и top (размер страницы) в URL-адресе. Значение skip по умолчанию равно 0, а значение maxpagesize по умолчанию — 100.

curl -v -X GET "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses?skip=0&maxpagesize=2&api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"

Текст ответа будет получен в следующем формате:

{
    "value": [
        {
            "id": "my-job-02",
            "internalId": "14c25fcf-3cb6-4f46-8810-ecad06d956df",
            "status": "Succeeded",
            "createdDateTime": "2024-03-06T07:52:23.9054709Z",
            "lastActionDateTime": "2024-03-06T07:52:29.3416944",
            "inputKind": "SSML",
            "customVoices": {},
            "properties": {
                "timeToLiveInHours": 744,
                "sizeInBytes": 502676,
                "durationInMilliseconds": 2950,
                "succeededCount": 1,
                "failedCount": 0,
                "billingDetails": {
                    "neuralCharacters": 32,
                    "talkingAvatarDurationSeconds": 2
                }
            },
            "avatarConfig": {
                "talkingAvatarCharacter": "lisa",
                "talkingAvatarStyle": "casual-sitting",
                "videoFormat": "Mp4",
                "videoCodec": "h264",
                "subtitleType": "soft_embedded",
                "bitrateKbps": 2000,
                "customized": false
            },
            "outputs": {
                "result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
                "summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
            }
        },
        {
            "id": "my-job-01",
            "internalId": "5a25b929-1358-4e81-a036-33000e788c46",
            "status": "Succeeded",
            "createdDateTime": "2024-03-06T07:34:08.9487009Z",
            "lastActionDateTime": "2024-03-06T07:34:12.5698769",
            "inputKind": "SSML",
            "customVoices": {},
            "properties": {
                "timeToLiveInHours": 744,
                "sizeInBytes": 344460,
                "durationInMilliseconds": 2520,
                "succeededCount": 1,
                "failedCount": 0,
                "billingDetails": {
                    "neuralCharacters": 29,
                    "talkingAvatarDurationSeconds": 2
                }
            },
            "avatarConfig": {
                "talkingAvatarCharacter": "lisa",
                "talkingAvatarStyle": "graceful-sitting",
                "videoFormat": "Mp4",
                "videoCodec": "hevc",
                "subtitleType": "soft_embedded",
                "bitrateKbps": 2000,
                "customized": false
            },
            "outputs": {
                "result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
                "summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
            }
        }
    ],
    "nextLink": "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/?api-version=2024-08-01&skip=2&maxpagesize=2"
}

Из outputs.result можно скачать файл с видео, содержащий аватар. Из outputs.summary можно получить сводку и подробности отладки. Дополнительные сведения см. в результатах пакетного синтеза.

Свойство value в JSON-ответе перечисляет ваши запросы синтеза. Список разбит на страницы с максимальным размером страницы 100. Свойство nextLink предоставляется по мере необходимости, чтобы получить следующую страницу списка с разбивкой на страницы.

Получение файла результатов пакетного синтеза

После получения задания на пакетный синтез, имеющего значение status "Успешно", можно скачать результаты видео-выхода. Используйте URL-адрес из outputs.result свойства ответа на запрос пакетного синтеза.

Чтобы получить файл результатов пакетного синтеза, выполните HTTP GET запрос по указанному URI, как показано в следующем примере. Замените YourOutputsResultUrl URL-адресом свойства outputs.resultответа получения пакетного синтеза . Замените YourSpeechKey ключом ресурса службы речи.

curl -v -X GET "YourOutputsResultUrl" -H "Ocp-Apim-Subscription-Key: YourSpeechKey" > output.mp4

Чтобы получить сводный файл пакетного синтеза, сделайте HTTP-запрос GET с помощью URI, как показано в следующем примере. Замените YourOutputsResultUrl URL-адресом свойства outputs.summaryответа получения пакетного синтеза . Замените YourSpeechKey ключом ресурса службы речи.

curl -v -X GET "YourOutputsSummaryUrl" -H "Ocp-Apim-Subscription-Key: YourSpeechKey" > summary.json

Сводный файл содержит результаты синтеза для каждого текстового ввода. Ниже приведен пример файла summary.json:

{
  "jobID": "5a25b929-1358-4e81-a036-33000e788c46",
  "status": "Succeeded",
  "results": [
    {
      "texts": [
        "<speak version='1.0' xml:lang='en-US'><voice name='en-US-AvaMultilingualNeural'>The rainbow has seven colors.</voice></speak>"
      ],
      "status": "Succeeded",
      "videoFileName": "244a87c294b94ddeb3dbaccee8ffa7eb/5a25b929-1358-4e81-a036-33000e788c46/0001.mp4",
      "TalkingAvatarCharacter": "lisa",
      "TalkingAvatarStyle": "graceful-sitting"
    }
  ]
}

Удаление пакетного синтеза

После получения результатов звукового вывода и когда журнал заданий пакетного синтеза больше не нужен, вы можете его удалить. Служба "Речь" сохраняет каждый журнал синтеза до 31 дней или длительность, указанную свойством запроса timeToLiveInHours , в зависимости от того, что происходит раньше. Дата и время автоматического удаления заданий синтеза со статусом «Успешно» или «Сбой» вычисляются как сумма свойств lastActionDateTime и timeToLive.

Чтобы удалить пакетное задание синтеза, выполните запрос HTTP DELETE, используя следующий формат URI. Замените YourSynthesisId на ваш идентификатор пакетного синтеза, YourSpeechKey на ключ ресурса Speech, и YourSpeechRegion на регион ресурса Speech.

curl -v -X DELETE "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/YourSynthesisId?api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"

Заголовки ответа включают HTTP/1.1 204 No Content, если запрос на удаление был успешным.

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