建立批次謄寫

使用批次轉譯時,您會在批次中提交 音訊數據 。 服務會謄寫音訊資料,並將結果儲存在儲存體容器中。 然後 ,您可以從記憶體容器擷取結果

重要

使用語音轉換文字 REST API v3.2 進行批次轉譯的新定價生效。 如需詳細資訊,請參閱 定價指南

必要條件

建立轉譯作業

若要建立謄寫,請使用語音轉換文字 REST APITranscriptions_Create (英文) 作業。 根據下列指示來建構要求本文:

  • 您必須設定 contentContainerUrlcontentUrls 屬性。 如需批次轉譯的 Azure Blob 記憶體詳細資訊,請參閱 尋找批次轉譯的音訊檔案。
  • 設定必要的 locale 屬性。 此值應該符合音訊數據的預期地區設定以轉譯。 您稍後無法變更地區設定。
  • 設定必要的 displayName 屬性。 選擇稍後可以參考的轉譯名稱。 轉譯名稱不一定是唯一的,稍後可以變更。
  • 或者,若要使用基底模型以外的模型,請將 model 屬性設定為模型標識符。 如需詳細資訊,請參閱 使用自定義模型 和使用 Whisper 模型
  • 選擇性地將 wordLevelTimestampsEnabled 屬性設定為 true ,以在轉譯結果中啟用文字層級時間戳。 預設值是 false。 針對 Whisper 模型,請改為設定 displayFormWordLevelTimestampsEnabled 屬性。 Whisper 是僅顯示模型,因此語匯字段不會在轉譯中填入。
  • 選擇性地設定 languageIdentification 屬性。 根據支援的語言清單比較識別音訊中的口說語言時,會使用語言識別。 如果您設定 languageIdentification 屬性,則也必須設定 languageIdentification.candidateLocales 候選地區設定。

如需詳細資訊,請參閱 要求組態選項

提出使用 URI 的 HTTP POST 要求,如下列 Transcriptions_Create 範例所示。

  • 以您的語音資源金鑰取代 YourSubscriptionKey
  • 將取代 YourServiceRegion 為您的語音資源區域。
  • 如先前所述,設定要求本文屬性。
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": null,
  "properties": {
    "wordLevelTimestampsEnabled": true,
    "languageIdentification": {
      "candidateLocales": [
        "en-US", "de-DE", "es-ES"
      ],
    }
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"

您應該會收到下列格式的回應本文:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": true,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked",
    "languageIdentification": {
      "candidateLocales": [
        "en-US",
        "de-DE",
        "es-ES"
      ]
    }
  },
  "lastActionDateTime": "2022-10-21T14:18:06Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:18:06Z",
  "locale": "en-US",
  "displayName": "My Transcription"
}

響應主體中的最上層 self 屬性是轉譯的 URI。 使用此 URI 來 取得 詳細數據,例如轉譯和轉譯報表檔案的 URI。 您也可以使用此 URI 來更新或刪除轉譯。

您可以使用 Transcriptions_Get (英文) 作業查詢謄寫的狀態。

在您擷取結果之後,定期從服務呼叫 Transcriptions_Delete。 或者,設定 timeToLive 屬性以確保最終刪除結果。

若要建立轉譯,請使用 spx batch transcription create 命令。 根據下列指示來建構要求參數:

  • 設定必要的 content 參數。 您可以指定個別檔案的分號分隔清單,或整個容器的 URL。 如需批次轉譯的 Azure Blob 記憶體詳細資訊,請參閱 尋找批次轉譯的音訊檔案。
  • 設定必要的 language 屬性。 此值應該符合音訊數據的預期地區設定以轉譯。 您稍後無法變更地區設定。 語音 CLI language 參數會對應至 JSON 要求和回應中的 locale 屬性。
  • 設定必要的 name 屬性。 選擇稍後可以參考的轉譯名稱。 轉譯名稱不一定是唯一的,稍後可以變更。 語音 CLI name 參數會對應至 JSON 要求和回應中的 displayName 屬性。

以下是建立轉譯作業的範例語音 CLI 命令:

spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav

您應該會收到下列格式的回應本文:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": false,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked"
  },
  "lastActionDateTime": "2022-10-21T14:21:59Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:21:59Z",
  "locale": "en-US",
  "displayName": "My Transcription",
  "description": ""
}

響應主體中的最上層 self 屬性是轉譯的 URI。 使用此 URI 來取得詳細數據,例如轉譯和轉譯報表檔案的 URI。 您也可以使用此 URI 來更新或刪除轉譯。

如需謄寫的語音 CLI 說明,請執行下列命令:

spx help batch transcription

要求組態選項

以下是一些屬性選項,可以在呼叫 Transcriptions_Create (英文) 作業時用來設定謄寫。

屬性 說明
channels 要處理的通道號碼陣列。 0通道和 1 預設為轉譯。
contentContainerUrl 您可以提交個別音訊檔案或整個記憶體容器。

您必須使用 contentContainerUrlcontentUrls 屬性來指定音訊資料位置。 如需批次轉譯的 Azure Blob 記憶體詳細資訊,請參閱 尋找批次轉譯的音訊檔案。

回應中不會傳回這個屬性。
contentUrls 您可以提交個別音訊檔案或整個記憶體容器。

您必須使用 contentContainerUrlcontentUrls 屬性來指定音訊資料位置。 如需詳細資訊,請參閱 尋找批次轉譯的音訊檔案。

回應中不會傳回這個屬性。
destinationContainerUrl 結果可以儲存在 Azure 容器中。 如果您未指定容器,語音服務會將結果儲存在 Microsoft 管理的容器中。 刪除謄寫作業時,也會一併刪除謄寫結果資料。 如需詳細資訊,例如支持的安全性案例,請參閱 指定目的地容器 URL
diarization 表示語音服務應該嘗試對輸入進行聽寫分析,這應該是包含多個語音的單聲道。 此功能不適用於立體聲錄製功能。

Diarization 是分隔音訊數據中說話者的程式。 批次管線可以在單聲道錄製上辨識和分隔多個喇叭。

指定可能說話的人數下限和上限。 您必須將 diarizationEnabled 屬性設定為 true。 轉 譯檔案 包含 speaker 每個轉譯片語的專案。

當您預期有三個或多個說話者時,您必須使用這個屬性。 針對兩個喇叭,將 屬性設定 diarizationEnabledtrue 已足夠。 如需屬性使用方式的範例,請參閱 Transcriptions_Create

進行除法的說話者數目上限必須小於 36,且大於或等於 minSpeakers 屬性。 如需範例,請參閱 Transcriptions_Create

選取此屬性時,每個檔案的來源音訊長度不能超過 240 分鐘。

注意:此屬性僅適用於語音轉換文字 REST API 3.1 版和更新版本。 如果您使用任何舊版來設定此屬性,例如 3.0 版,則會忽略此屬性,而且只會識別兩個喇叭。
diarizationEnabled 指定語音服務應該嘗試對輸入進行聽寫分析,這應該是包含兩個語音的單聲道。 預設值是 false

針對三個或多個語音,您也需要使用 屬性 diarization。 僅適用於語音轉換文字 REST API 3.1 版和更新版本。

選取此屬性時,每個檔案的來源音訊長度不能超過 240 分鐘。
displayName 批次謄寫的名稱。 選擇一個您稍後可以與之關聯的名稱。 顯示名稱不一定要是唯一的。

此屬性是必要項。
displayFormWordLevelTimestampsEnabled 指定是否要在轉譯結果的顯示形式中包含文字層級時間戳。 結果會在轉譯檔案的 屬性中 displayWords 傳回。 預設值是 false

注意:此屬性僅適用於語音轉換文字 REST API 3.1 版和更新版本。
languageIdentification 根據支援的語言清單比較識別音訊中的口說語言時,會使用語言識別。

如果您設定 languageIdentification 屬性,則也必須設定其封入 candidateLocales 屬性。
languageIdentification.candidateLocales 語言識別的候選取地區設定,例如 "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}}。 至少支援兩個和最多十個候選地區設定,包括轉譯的主要地區設定。
locale 批次謄寫的地區設定。 此值應該符合音訊數據的預期地區設定以轉譯。 稍後無法變更此地區設定。

此屬性是必要項。
model 您可以將 屬性設定 model 為使用特定基底模型或 自訂語音 模型。 如果未指定 model,則會使用地區設定的預設基底模型。 如需詳細資訊,請參閱 使用自定義模型 和使用 Whisper 模型
profanityFilterMode 指定如何處理辨識結果中的粗話。 接受的值是 None 停用粗話篩選、 Masked 以星號取代粗話、 Removed 從結果中移除所有不雅內容,或 Tags 新增不雅內容標記。 預設值是 Masked
punctuationMode 指定如何處理辨識結果中的標點符號。 接受的值是 None 停用標點符號、 Dictated 表示明確(口語)標點符號、 Automatic 讓譯碼器處理標點符號,或使用 DictatedAndAutomatic 聽寫和自動標點符號。 預設值是 DictatedAndAutomatic

此屬性不適用於 Whisper 模型。
timeToLive 建立轉譯作業后的持續時間,當自動刪除轉譯結果時。 此值是 ISO 8601 編碼的持續時間。 例如,指定 PT12H 代表 12 小時。 或者,您可以在擷取轉譯結果之後定期呼叫 Transcriptions_Delete
wordLevelTimestampsEnabled 指定是否應該在輸出中包含文字層級時間戳。 預設值是 false

此屬性不適用於 Whisper 模型。 Whisper 是僅顯示模型,因此語匯字段不會在轉譯中填入。

針對語音 CLI 的轉譯組態選項說明,請執行下列命令:

spx help batch transcription create advanced

使用自定義模型

批次轉譯會針對您指定的地區設定使用預設基底模型。 您不需要設定任何屬性,即可使用預設基底模型。

您可以選擇性地修改先前 的建立轉譯範例 ,方法是將 屬性設定 model 為使用特定基底模型或 自定義語音 模型。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"

若要使用自定義語音模型進行批次轉譯,您需要模型的 URI。 回應本文中最上層 self 屬性是模型的 URI。 您可以在建立或取得模型時擷取模型位置。 如需詳細資訊,請參閱建立模型中JSON 回應範例。

提示

無需託管部署端點,也能將自訂語音與批次謄寫服務搭配使用。 如果您只針對批次轉譯使用自定義語音模型則可以節省資源。

過期模型的批次轉譯要求失敗,並出現 4xx 錯誤。 將 model 屬性設定為基底模型或未過期的自定義模型。 否則,請勿包含 model 屬性,以一律使用最新的基底模型。 如需詳細資訊,請參閱 選擇模型自定義語音模型生命週期

使用 Whisper 模型

Azure AI 語音支援 OpenAI 的 Whisper 模型,方法是使用批次轉譯 API。 您可以使用 Whisper 模型進行批次轉譯。

注意

Azure OpenAI 服務也支援 OpenAI 的 Whisper 模型,以同步 REST API 將語音轉換文字。 若要深入瞭解,請參閱 使用 Azure OpenAI Whisper 模型的語音轉換文字。 如需何時使用 Azure AI 語音與 Azure OpenAI 服務的詳細資訊,請參閱 什麼是 Whisper 模型?

若要使用 Whisper 模型進行批次轉譯,您必須設定 model 屬性。 Whisper 是僅顯示模型,因此語彙字段不會在回應中填入。

重要

針對 Whisper 模型,您應該一律使用 語音轉換文字 API 3.2 版。

澳大利亞東部、美國中部、美國東部、美國東部、美國中北部、美國中南部、東南亞和西歐區域支援以批次轉譯模式。

您可以提出 Models_ListBaseModels 要求,以取得所有地區設定的可用基底模型。

提出 HTTP GET 要求,如下列區域範例 eastus 所示。 以您的語音資源金鑰取代 YourSubscriptionKey。 如果您使用不同的區域,請取代 eastus

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

根據預設,只會傳回 100 個最舊的基底模型。 skip使用和 top 查詢參數逐頁查看結果。 例如,下列要求會在前100個基底模型之後傳回下一個100個基底模型。

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base?skip=100&top=100" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

請確定您在其中一個支援區域中設定 語音資源的組態變數 。 您可以執行 spx csr list --base 命令來取得所有地區設定的可用基底模型。

spx csr list --base --api-version v3.2-preview.2

displayName Whisper 模型的 屬性包含 「Whisper」,如此範例所示。 Whisper 是僅顯示模型,因此語匯字段不會在轉譯中填入。

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950",
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950/manifest"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2025-04-15T00:00:00Z",
      "transcriptionDateTime": "2026-04-15T00:00:00Z"
    },
    "features": {
      "supportsTranscriptions": true,
      "supportsEndpoints": false,
      "supportsTranscriptionsOnSpeechContainers": false,
      "supportsAdaptationsWith": [
        "Acoustic"
      ],
      "supportedOutputFormats": [
        "Display"
      ]
    },
    "chargeForAdaptation": true
  },
  "lastActionDateTime": "2024-02-29T15:53:28Z",
  "status": "Succeeded",
  "createdDateTime": "2024-02-29T15:46:07Z",
  "locale": "en-US",
  "displayName": "20240228 Whisper Large V2",
  "description": "OpenAI Whisper Model in Azure AI Speech (Whisper v2-large)"
},

您可以設定區域的完整模型 URI,如此範例 eastus 所示。 以您的語音資源金鑰取代 YourSubscriptionKey。 如果您使用不同的區域,請取代 eastus

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/transcriptions"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6" --api-version v3.2-preview.2

指定目的地容器 URL

轉譯結果可以儲存在 Azure 容器中。 如果您未指定容器,語音服務會將結果儲存在 Microsoft 管理的容器中。 在此情況下,刪除轉譯作業時,也會刪除轉譯結果數據。

您可以使用批次轉譯建立要求中的 選項destinationContainerUrl,將批次轉譯的結果儲存至可寫入的 Azure Blob 記憶體容器。 此選項只會 使用臨機操作 SAS URI,且不支援 受信任的 Azure 服務安全性機制。 此選項也不支援以存取原則為基礎的 SAS。 目的地容器 儲存體 帳戶資源必須允許所有外部流量。

如果您想要使用受信任的 Azure 服務安全性機制將轉譯結果儲存在 Azure Blob 記憶體容器中,請考慮使用自備記憶體 (BYOS)。 如需詳細資訊,請參閱 使用自備記憶體 (BYOS) 語音資源將語音轉為文字