共用方式為


如何使用影片翻譯

注意

此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

您將透過本文了解如何在工作室中使用 Azure AI 語音影片翻譯。

只需要一段原始影片就能開始。 查看影片翻譯是否支援您的語言區域

建立影片翻譯專案

若要建立影片翻譯專案,請遵循下列步驟:

  1. 登入 Speech Studio

  2. 選取要處理的訂用帳戶和語音資源。

  3. 選取 [影片翻譯]

  4. 在 [建立和管理專案] 頁面,選取 [建立專案]

  5. 在 [新專案] 頁面,選取 [語音類型]

    在新的專案頁面上選取語音類型的螢幕擷取畫面。

    針對語音類型,您可以選取 [預先建置的神經語音] 或 [個人語音]。 針對預先建置的神經語音,系統會將影片中說話者的語音與預先建置的語音進行比對,然後自動選取最適合的預先建置語音。 針對個人語音,系統提供一個模型,可在幾秒鐘內產生高品質的語音復寫。

    注意

    若要使用個人語音,您必須申請存取權

  6. 拖放影片檔案或手動選取檔案以上傳影片檔案。

    在新專案頁面上傳影片檔案的螢幕擷取畫面。

    請確定影片是 .mp4 格式,小於 500 MB,且短於 60 分鐘。

  7. 提供 [專案名稱],然後選取 [說話者數目],[影片語言],[翻譯為 語言]

    在新的專案頁面上提供影片資訊的螢幕擷取畫面。

    如果您要使用自己的字幕檔案,請選取 [新增字幕檔案]。 您可以選擇上傳來源字幕檔案或目標字幕檔案。 字幕檔案可以是 WebVTT 或 JSON 格式。 您可以選取 [下載範例 VTT 檔案] 來下載參考的範例 VTT 檔案。

    在新的專案頁面上新增字幕檔案的螢幕擷取畫面。

  8. 檢閱價格資訊和管理辦法之後,繼續建立專案。

    上傳完成之後,您可以檢查專案索引標籤上的處理狀態。

    建立專案之後,您可以選取專案以檢閱詳細設定,並根據您的偏好進行調整。

檢查並調整語音設定

在專案詳細資料頁面,專案在 [影片] 下方提供 [翻譯][原始] 兩個索引標籤,讓您並排比較它們。

在影片右側,您可以同時檢視原始腳本和翻譯腳本。 將滑鼠停留在原始腳本的每個部分上方會觸發影片,自動跳至原始影片相應的區段,而將滑鼠停留在翻譯腳本的每個部分時則會觸發影片,跳至相應的翻譯區段。

您也可以視需要新增或移除區段。 想新增區段時,請確定新區段時間戳記並未與上一個和下一個區段重疊,而且區段結束時間應大於開始時間。 時間戳記的正確格式應該是 hh:mm:ss.ms。 否則您無法套用變更。

您可以使用影片下方的音訊波形,直接調整腳本的時間範圍。 選取 [套用變更] 之後,將會套用調整。

如果遇到語音名稱「不明」的區段,可能是因為系統無法準確偵測語音,尤其是說話者語音重疊的情況更容易失準。 在這種情況下,建議您手動變更語音名稱。

有不明語音名稱之一個區段的螢幕擷取畫面。

如果您想調整語音,請選取 [語音設定] 進行一些變更。 在 [語音設定] 頁面,您可以調整語音類型、性別和語音。 選取 [語音] 右側的語音範例,判斷您要選取的語音項目。 如果您發現缺少語音,選取 [新增說話者] 即可新增新的語音名稱。 變更設定之後,請選取 [更新]。

調整語音設定頁面上語音設定的螢幕擷取畫面。

如果您多次進行變更但尚未完成,只需要選取 [儲存] 即可儲存變更。 進行所有變更之後,選取 [套用變更] 即可將變更套用至影片。 只有在選取 [套用變更] 之後,才會向您收取費用。

進行所有變更之後,選取 [套用變更] 按鈕的螢幕擷取畫面。

您可以選取 [新語言],將原始影片翻譯成新語言。 在 [翻譯] 頁面上,您可以選擇新翻譯語言和語音類型。 影片檔案翻譯之後,系統就會自動建立新專案。

影片翻譯 REST API 可協助順暢地將影片翻譯整合到您的應用程式中。 它支援上傳、管理及精簡影片翻譯,並有多個反覆專案以進行持續改善。 在本文中,您將瞭解如何透過 REST API 利用影片翻譯。

此圖表提供工作流程的高階概觀。

影片翻譯 API 工作流程的圖表。

您可以使用下列 REST API 作業進行影片翻譯:

作業 方法 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-IdOperation-Id 每個作業都必須是唯一的。 它可確保每個作業都會個別追蹤。 將取代 [operationId] 為作業標識碼。

  • 指定 translationId:必須 translationId 是唯一的。 將取代 [translationId] 為翻譯標識碼。

  • 設定必要的輸入:包含、、 voiceKindvideoFileUrltargetLocalesourceLocale詳細數據。 請確定您有來自 Azure Blob 儲存體 的影片 URL。 如需影片翻譯支援的語言,請參閱支援的來源和目標語言。 您可以將 參數設定 voiceKindPlatformVoicePersonalVoice。 針對 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"
}

status 屬性應該從 NotStarted status、到 Running,最後進展至 SucceededFailed。 您可以定期依作業標識碼 API 呼叫取得作業,直到傳回的狀態為 SucceededFailed為止。 這項作業可讓您監視建立翻譯程序的進度。

依作業標識碼取得作業

使用其作業識別碼檢查特定作業的狀態。 每個作業的作業識別碼都是唯一的,因此您可以個別追蹤每個作業。

將 取代 [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-IdOperation-Id 每個作業都必須是唯一的,例如建立每個反覆專案。 將取代 [operationId] 為這項作業的唯一標識符。
  • 指定 translationId:如果在單一翻譯下執行多個反覆專案,翻譯標識符會保持不變。
  • 指定 iterationIditerationId 每個作業都必須是唯一的。 將取代 [iterationId] 為反覆項目標識碼。
  • 設定必要的輸入:包含、、或webvttFilesubtitleMaxCharCountPerSegmentspeakerCountexportSubtitleInVideo詳細數據。 根據預設,輸出視訊中不會內嵌任何字幕。
  • 以您的語音資源金鑰取代 [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"  

注意

建立反覆專案時,如果您已在建立翻譯期間指定選擇性參數 speakerCountsubtitleMaxCharCountPerSegmentexportSubtitleInVideo ,則不需要再次指定它們。 這些值會繼承自翻譯設定。 建立反覆專案時定義這些參數之後,新的值將會覆寫原始設定。

webvttFile建立第一個反覆專案時不需要 參數。 不過,從第二個反覆項目開始,您必須在反覆專案中指定 webvttFile 參數。 您必須下載 webvtt 檔案、進行必要的編輯,然後將它上傳至您的 Azure Blob 記憶體。 您必須在 curl 程式代碼中指定 Blob URL。

透過 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指定的 ,並定期依作業標識元 API 呼叫取得作業,直到傳回的狀態為 SucceededFailed為止。 這項作業可讓您監視建立反覆專案程序的進度。

依反覆專案標識碼取得反覆專案

若要依標識符擷取特定反覆專案的詳細數據,請使用 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

其他資訊

本節提供上述未詳細說明之其他 API 呼叫的 curl 命令。 您可以使用下列命令來探索每個 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 狀態碼

本節詳細說明影片翻譯 REST API 中的 HTTP 回應碼和訊息。

HTTP 200 正常

HTTP 200 OK 表示要求成功。

HTTP 204 error

HTTP 204 error 表示要求成功,但資源不存在。 例如:

  • 您嘗試取得或刪除不存在的翻譯。
  • 您已成功刪除翻譯。

HTTP 400 error

以下是可能導致 400 error 的範例:

  • 您指定的來源或目標地區設定不在支援的地區設定之間
  • 您嘗試使用 F0 語音資源,但該區域僅支援標準語音資源定價層。

HTTP 500 錯誤

HTTP 500 Internal Server Error 表示要求失敗。 回應本文會包含錯誤訊息。