如何使用影片翻譯
注意
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
您將透過本文了解如何在工作室中使用 Azure AI 語音影片翻譯。
只需要一段原始影片就能開始。 查看影片翻譯是否支援您的語言和區域。
建立影片翻譯專案
若要建立影片翻譯專案,請遵循下列步驟:
登入 Speech Studio。
選取要處理的訂用帳戶和語音資源。
選取 [影片翻譯]。
在 [建立和管理專案] 頁面,選取 [建立專案]。
在 [新專案] 頁面,選取 [語音類型]。
針對語音類型,您可以選取 [預先建置的神經語音] 或 [個人語音]。 針對預先建置的神經語音,系統會將影片中說話者的語音與預先建置的語音進行比對,然後自動選取最適合的預先建置語音。 針對個人語音,系統提供一個模型,可在幾秒鐘內產生高品質的語音復寫。
注意
若要使用個人語音,您必須申請存取權。
拖放影片檔案或手動選取檔案以上傳影片檔案。
請確定影片是 .mp4 格式,小於 500 MB,且短於 60 分鐘。
提供 [專案名稱],然後選取 [說話者數目],[影片語言],[翻譯為 語言]。
如果您要使用自己的字幕檔案,請選取 [新增字幕檔案]。 您可以選擇上傳來源字幕檔案或目標字幕檔案。 字幕檔案可以是 WebVTT 或 JSON 格式。 您可以選取 [下載範例 VTT 檔案] 來下載參考的範例 VTT 檔案。
檢閱價格資訊和管理辦法之後,繼續建立專案。
上傳完成之後,您可以檢查專案索引標籤上的處理狀態。
建立專案之後,您可以選取專案以檢閱詳細設定,並根據您的偏好進行調整。
檢查並調整語音設定
在專案詳細資料頁面,專案在 [影片] 下方提供 [翻譯] 和 [原始] 兩個索引標籤,讓您並排比較它們。
在影片右側,您可以同時檢視原始腳本和翻譯腳本。 將滑鼠停留在原始腳本的每個部分上方會觸發影片,自動跳至原始影片相應的區段,而將滑鼠停留在翻譯腳本的每個部分時則會觸發影片,跳至相應的翻譯區段。
您也可以視需要新增或移除區段。 想新增區段時,請確定新區段時間戳記並未與上一個和下一個區段重疊,而且區段結束時間應大於開始時間。 時間戳記的正確格式應該是 hh:mm:ss.ms
。 否則您無法套用變更。
您可以使用影片下方的音訊波形,直接調整腳本的時間範圍。 選取 [套用變更] 之後,將會套用調整。
如果遇到語音名稱「不明」的區段,可能是因為系統無法準確偵測語音,尤其是說話者語音重疊的情況更容易失準。 在這種情況下,建議您手動變更語音名稱。
如果您想調整語音,請選取 [語音設定] 進行一些變更。 在 [語音設定] 頁面,您可以調整語音類型、性別和語音。 選取 [語音] 右側的語音範例,判斷您要選取的語音項目。 如果您發現缺少語音,選取 [新增說話者] 即可新增新的語音名稱。 變更設定之後,請選取 [更新]。
如果您多次進行變更但尚未完成,只需要選取 [儲存] 即可儲存變更。 進行所有變更之後,選取 [套用變更] 即可將變更套用至影片。 只有在選取 [套用變更] 之後,才會向您收取費用。
您可以選取 [新語言],將原始影片翻譯成新語言。 在 [翻譯] 頁面上,您可以選擇新翻譯語言和語音類型。 影片檔案翻譯之後,系統就會自動建立新專案。
相關內容
影片翻譯 REST API 可協助順暢地將影片翻譯整合到您的應用程式中。 它支援上傳、管理及精簡影片翻譯,並有多個反覆專案以進行持續改善。 在本文中,您將瞭解如何透過 REST 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-Id
:Operation-Id
每個作業都必須是唯一的。 它可確保每個作業都會個別追蹤。 將取代[operationId]
為作業標識碼。指定
translationId
:必須translationId
是唯一的。 將取代[translationId]
為翻譯標識碼。設定必要的輸入:包含、、
voiceKind
和videoFileUrl
等targetLocale
sourceLocale
詳細數據。 請確定您有來自 Azure Blob 儲存體 的影片 URL。 如需影片翻譯支援的語言,請參閱支援的來源和目標語言。 您可以將 參數設定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"
}
status 屬性應該從 NotStarted
status、到 Running
,最後進展至 Succeeded
或 Failed
。 您可以定期依作業標識碼 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]
為反覆項目標識碼。 - 設定必要的輸入:包含、、或
webvttFile
等subtitleMaxCharCountPerSegment
speakerCount
exportSubtitleInVideo
詳細數據。 根據預設,輸出視訊中不會內嵌任何字幕。 - 以您的語音資源金鑰取代
[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
參數。 您必須下載 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 呼叫取得作業,直到傳回的狀態為 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
。
其他資訊
本節提供上述未詳細說明之其他 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 表示要求失敗。 回應本文會包含錯誤訊息。