Поделиться через


Использование видеотрансляции

Примечание.

Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Из этой статьи вы узнаете, как использовать видеотрансляции службы "Речь" в Azure AI в студии.

Все, что нужно, чтобы приступить к работе, — это исходное видео. Проверьте, поддерживает ли видеотрансляции язык и регион.

Создание проекта преобразования видео

Чтобы создать проект преобразования видео, выполните следующие действия.

  1. Войдите в службу Speech Studio.

  2. Выберите подписку и ресурс службы "Речь" для работы.

  3. Выберите "Видеотрансляции".

  4. На странице "Создание проектов и управление ими" выберите "Создать проект".

  5. На странице "Создать проект" выберите тип голосовой связи.

    Снимок экрана: выбор типа голоса на новой странице проекта.

    Вы можете выбрать предварительно созданный нейронный голос или личный голос для типа голоса. Для предварительно созданного нейронного голоса система автоматически выбирает наиболее подходящий предварительно созданный голос, сопоставляя голос говорящего в видео с предварительно созданными голосами. Для личного голоса система предлагает модель, которая создает высококачественную репликацию голоса в течение нескольких секунд.

    Примечание.

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

  6. Отправьте видеофайл, перетаскивая видеофайл или выбрав его вручную.

    Снимок экрана: отправка видеофайла на новой странице проекта.

    Убедитесь, что видео находится в формате .mp4, менее 500 МБ и короче 60 минут.

  7. Укажите имя проекта и выберите "Число докладчиков", "Язык видео", "Перевод на язык".

    Снимок экрана: предоставление сведений о видео на новой странице проекта.

    Если вы хотите использовать собственные файлы субтитров, нажмите кнопку "Добавить файл субтитров". Вы можете отправить исходный файл субтитров или целевой файл субтитров. Файл субтитров может быть в формате WebVTT или JSON. Пример VTT-файла для ссылки можно скачать, выбрав "Скачать пример VTT-файла".

    Снимок экрана: добавление файла субтитров на новой странице проекта.

  8. После просмотра сведений о ценах и кодекса поведения перейдите к созданию проекта.

    После завершения отправки можно проверить состояние обработки на вкладке проекта.

    После создания проекта можно выбрать проект, чтобы просмотреть подробные параметры и внести корректировки в соответствии с вашими предпочтениями.

Проверка и настройка параметров голоса

На странице сведений о проекте проект предлагает две вкладки "Перевод" и "Исходный" в разделе "Видео", что позволяет сравнивать их параллельно.

В правой части видео можно просмотреть исходный скрипт и переведенный скрипт. Наведите указатель мыши на каждую часть исходного скрипта, активирует видео для автоматического перехода к соответствующему сегменту исходного видео, при наведении указателя мыши на каждую часть переведенного скрипта активирует видео для перехода к соответствующему преобразованном сегменту.

Вы также можете добавлять или удалять сегменты по мере необходимости. Если вы хотите добавить сегмент, убедитесь, что новая метка времени сегмента не перекрывается с предыдущим и следующим сегментом, а время окончания сегмента должно быть больше времени начала. Правильный формат метки времени должен быть hh:mm:ss.ms. В противном случае нельзя применить изменения.

Вы можете настроить интервал времени скриптов непосредственно с помощью звуковой волны под видео. После выбора "Применить изменения" будут применены корректировки.

Если вы столкнулись с сегментами с "неопознанным" именем голоса, это может быть связано с тем, что система не могла точно обнаружить голос, особенно в ситуациях, когда голоса динамиков перекрываются. В таких случаях рекомендуется вручную изменить имя голоса.

Снимок экрана: один сегмент с неопознанным именем голоса.

Если вы хотите настроить голос, выберите параметры голосовой связи, чтобы внести некоторые изменения. На странице параметров голоса можно настроить тип голоса, пол и голос. Выберите образец голоса справа от голосовой связи, чтобы определить выбор голоса. Если отсутствует голос, можно добавить новое имя голоса, нажав кнопку "Добавить динамик". После изменения параметров нажмите кнопку "Обновить".

Снимок экрана: настройка параметров голоса на странице параметров голоса.

Если вы вносите изменения несколько раз, но не закончили, необходимо сохранить только внесенные изменения, нажав кнопку "Сохранить". После внесения всех изменений нажмите кнопку "Применить изменения ", чтобы применить их к видео. Плата будет взиматься только после нажатия кнопки "Применить изменения".

Снимок экрана: кнопка

Вы можете перевести исходное видео на новый язык, выбрав новый язык. На странице "Перевод" можно выбрать новый переведенный язык и тип голоса. После перевода видеофайла создается новый проект автоматически.

REST API видеотрансляции упрощает интеграцию видеотрансляции с приложениями. Она поддерживает отправку, управление и уточнение видеотрансляций с несколькими итерациями для непрерывного улучшения. Из этой статьи вы узнаете, как использовать видеотрансляции с помощью REST API.

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

Схема рабочего процесса API перевода видео.

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

Операция Method Вызов REST API
Создание перевода PUT /translations/{translationId}
Перечисление переводов GET /translations
Получение перевода по идентификатору перевода GET /translations/{translationId}
Создание итерации PUT /translations/{translationId}/iterations/{iterationId}
Перечисление итерации GET /translations/{translationId}/iterations
Получение итерации по идентификатору итерации GET /translations/{translationId}/iterations/{iterationId}
Получение операции по идентификатору операции GET /operations/{operationId}
Удаление перевода по идентификатору перевода DELETE /translations/{translationId}

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

В этой статье описаны основные шаги процесса API, включая создание перевода, создание итерации, проверку состояния каждой операции, получение итерации по идентификатору итерации и удаление перевода по идентификатору перевода. Полные сведения см. по ссылкам, предоставленным для каждого API в таблице.

Создание перевода

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

  • Укажите Operation-Id: Operation-Id должен быть уникальным для каждой операции. Это гарантирует, что каждая операция отслеживается отдельно. Замените [operationId] идентификатором операции.

  • Укажите translationId: translationId должен быть уникальным. Замените [translationId] идентификатором перевода.

  • Задайте необходимые входные данные: включите такие сведения, как sourceLocale, targetLocaleи voiceKindvideoFileUrl. Убедитесь, что у вас есть URL-адрес видео из Хранилище BLOB-объектов Azure. Языки, поддерживаемые для перевода видео, см. на поддерживаемых исходных и целевых языках. Параметр можно задать voiceKind для одного PlatformVoice или PersonalVoice. Для PlatformVoiceэтого система автоматически выбирает наиболее подходящий готовый голос, сопоставляя голос говорящего в видео с предварительно созданными голосами. Для PersonalVoiceэтого система предлагает модель, которая создает высококачественную репликацию голосовой связи через несколько секунд.

    Примечание.

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

  • Замените ключом ресурса "Речь" и замените [YourResourceKey] [YourSpeechRegion] регионом ресурсов службы "Речь".

Создание перевода не инициирует процесс перевода. Вы можете начать перевод видео, создав итерацию. В следующем примере используется оболочка Windows. Убедитесь, что он будет экранироваться & , ^& если URL-адрес содержит &. В следующем примере кода мы будем использовать общедоступный URL-адрес видео, который вы можете использовать для собственного тестирования.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" -H "Operation-Id: [operationId]" -H "Content-Type: application/json" -d "{\"displayName\": \"[YourDisplayName]\",\"description\": \"[OptionalYourDescription]\",\"input\": {\"sourceLocale\": \"[VideoSourceLocale]\",\"targetLocale\": \"[TranslationTargetLocale]\",\"voiceKind\": \"[PlatformVoice/PersonalVoice]\",\"speakerCount\": [OptionalVideoSpeakerCount],\"subtitleMaxCharCountPerSegment\": [OptionalYourPreferredSubtitleMaxCharCountPerSegment],\"exportSubtitleInVideo\": [Optional true/false],\"videoFileUrl\": \"https://speechstudioprodpublicsa.blob.core.windows.net/ttsvoice/VideoTranslation/PublicDoc/SampleData/es-ES-TryOutOriginal.mp4\"}}" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

Внимание

Данные, созданные с помощью API, не будут отображаться в Speech Studio, а данные между API и Speech Studio не синхронизированы.

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

{
  "input": {
    "sourceLocale": "zh-CN",
    "targetLocale": "en-US",
    "voiceKind": "PlatformVoice",
    "speakerCount": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "status": "NotStarted",
  "lastActionDateTime": "2024-09-20T06:25:05.058Z",
  "id": "mytranslation0920",
  "displayName": "demo",
  "description": "for testing",
  "createdDateTime": "2024-09-20T06:25:05.058Z"
}

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

Получение операции по идентификатору операции

Проверьте состояние конкретной операции с помощью его идентификатора операции. Идентификатор операции является уникальным для каждой операции, поэтому вы можете отслеживать каждую операцию отдельно.

Замените [YourResourceKey] ключом ресурса "Речь", [YourSpeechRegion] регионом ресурса "Речь" и [operationId] идентификатором операции, который требуется проверить.

curl -v -X GET -H "Ocp-Apim-Subscription-Key:[YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/operations/[operationId]?api-version=2024-05-20-preview" 

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

{
  "id": "createtranslation0920-1",
  "status": "Running"
}

Создание итерации

Чтобы начать перевод видео или обновить итерацию для существующего перевода, необходимо создать путь запроса HTTP PUT и текст в соответствии со следующими инструкциями:

  • Укажите Operation-Id: Operation-Id должен быть уникальным для каждой операции, например создание каждой итерации. Замените [operationId] уникальным идентификатором для этой операции.
  • Укажите translationId: если при одном переводе выполняется несколько итераций, идентификатор перевода остается неизменным.
  • Укажите iterationId: iterationId должен быть уникальным для каждой операции. Замените [iterationId] идентификатором итерации.
  • Задайте необходимые входные данные: включите такие сведения, как speakerCount, subtitleMaxCharCountPerSegmentexportSubtitleInVideoили webvttFile. По умолчанию субтитры не внедрены в выходное видео.
  • Замените ключом ресурса "Речь" и замените [YourResourceKey] [YourSpeechRegion] регионом ресурсов службы "Речь".

В следующем примере используется оболочка Windows. Убедитесь, что он будет экранироваться & , ^& если URL-адрес содержит &.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" -H "Operation-Id: [operationId]"  -H "Content-Type: application/json" -d "{\"input\": {\"speakerCount\": [OptionalVideoSpeakerCount],\"subtitleMaxCharCountPerSegment\": [OptionalYourPreferredSubtitleMaxCharCountPerSegment],\"exportSubtitleInVideo\": [Optional true/false],\"webvttFile\": {\"Kind\": \"[SourceLocaleSubtitle/TargetLocaleSubtitle/MetadataJson]\", \"url\": \"[AzureBlobUrlWithSas]\"}}}" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations/[iterationId]?api-version=2024-05-20-preview"  

Примечание.

При создании итерации, если вы уже указали необязательные параметры speakerCount, subtitleMaxCharCountPerSegmentа exportSubtitleInVideo во время создания перевода их еще раз не нужно указывать. Значения будут наследоваться от параметров перевода. После определения этих параметров при создании итерации новые значения переопределяют исходные параметры.

Параметр webvttFile не требуется при создании первой итерации. Однако начиная со второй итерации необходимо указать webvttFile параметр в процессе итерации. Необходимо скачать веб-файл, внести необходимые изменения и отправить его в хранилище BLOB-объектов Azure. Необходимо указать URL-адрес БОЛЬШОго двоичного объекта в коде curl.

Данные, созданные с помощью API, не будут отображаться в Speech Studio, а данные между API и Speech Studio не синхронизированы.

Файл субтитров может быть в формате WebVTT или JSON. Если вы не уверены, как подготовить файл WebVTT, обратитесь к следующим примерам форматов.


00:00:01.010 --> 00:00:06.030
Hello this is a sample subtitle.

00:00:07.030 --> 00:00:09.030
Hello this is a sample subtitle.

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

{
  "input": {
    "speakerCount": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "status": "Not Started",
  "lastActionDateTime": "2024-09-20T06:31:53.760Z",
  "id": "firstiteration0920",
  "createdDateTime": "2024-09-20T06:31:53.760Z"
}

Вы можете использовать operationId указанные и вызывать операцию get по API идентификатора операции периодически до тех пор, пока возвращенное состояние не будет Succeeded или Failed. Эта операция позволяет отслеживать ход создания процесса итерации.

Получение итерации по идентификатору итерации

Чтобы получить сведения о конкретной итерации по идентификатору, используйте HTTP-запрос GET. Замените [YourResourceKey] ключом ресурса "Речь", [YourSpeechRegion] регионом ресурса "Речь" с идентификатором перевода, [translationId] который требуется проверить, и [iterationId] идентификатором итерации, который требуется проверить.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations/[iterationId]?api-version=2024-05-20-preview"  

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

{
  "input": {
    "speaker Count": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "result": {
    "translatedVideoFileUrl": "https://xxx.blob.core.windows.net/container1/video.mp4?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "sourceLocaleSubtitleWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/sourceLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "targetLocaleSubtitleWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/targetLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "metadataJsonWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/metadataJsonLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx"
  },
  "status": "Succeeded",
  "lastActionDateTime": "2024-09-20T06:32:59.933Z",
  "id": "firstiteration0920",
  "createdDateTime": "2024-09-20T06:31:53.760Z"
}

Удаление перевода по идентификатору перевода

Удаление определенного перевода, определяемого translationId. Эта операция также удаляет все итерации, связанные с этим переводом. Замените [YourResourceKey] ключом ресурса "Речь", [YourSpeechRegion] регионом ресурса "Речь" и [translationId] идентификатором перевода, который требуется удалить. Если служба не удалена вручную, служба сохраняет журнал перевода до 31 дней.

curl -v -X DELETE -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

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

Дополнительная информация:

В этом разделе приведены команды curl для других вызовов API, которые подробно не описаны выше. Вы можете изучить каждый API с помощью следующих команд.

Перечисление переводов

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

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations?api-version=2024-05-20-preview"

Получение перевода по идентификатору перевода

Эта операция извлекает подробные сведения о конкретном переводе, определяемом его уникальным translationId. Замените [YourResourceKey] ключом ресурса службы "Речь", [YourSpeechRegion] регионом ресурса "Речь" и [translationId] идентификатором перевода, который требуется проверить.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

Перечисление итерации

Перечислить все итерации для определенного перевода. Этот запрос содержит все итерации без подробных сведений. Замените [YourResourceKey] ключом ресурса службы "Речь", [YourSpeechRegion] регионом ресурса "Речь" и [translationId] идентификатором перевода, который требуется проверить.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations?api-version=2024-05-20-preview"  

Коды состояния HTTP

В разделе подробно описаны коды ответов HTTP и сообщения из REST API видеотрансляции.

HTTP 200 OK

HTTP 200 OK указывает, что запрос выполнен успешно.

Ошибка HTTP 204

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

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

Ошибка HTTP 400

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

  • Указанный исходный или целевой языковой стандарт не входит в поддерживаемые языковые параметры.
  • Вы пытались использовать ресурс "Речь F0", но регион поддерживает только ценовую категорию ресурсов "Стандартная речь".

Ошибка HTTP 500

Ошибка внутреннего сервера HTTP 500 указывает на сбой запроса. Текст ответа содержит сообщение об ошибке.