共用方式為

创建批量听录

使用批量听录,可以批量提交音频数据。 该服务听录音频数据,并将结果存储在存储容器中。 然后,可以从存储容器检索结果

批量听录完成可能需要几分钟到几个小时,具体取决于音频数据的大小和提交的文件数。 即使音频数据的大小相同,也可能需要不同的时间来转录,具体取决于服务负载和其他因素。 该服务不提供估算转录一批音频数据所需的时间的方法。

提示

如果音频文件需要短于 2 小时且大小小于 300 MB 的一致快速速度,请考虑改用 快速听录 API

先决条件

您需要 Azure 语音资源

创建听录作业

若要创建批量转录作业,请使用转录提交操作语音转文本 REST API。 根据以下说明构造请求正文:

  • 必须设置 contentContainerUrlcontentUrls 属性。 有关适用于批量听录的 Azure blob 存储的详细信息,请参阅找到批量听录的音频文件
  • 设置所需的 locale 属性。 此值应与要听录的音频数据的预期区域设置相匹配。 之后无法更改区域设置。
  • 设置所需的 displayName 属性。 选择一个稍后可以参考的转录名称。 听录名称不必是独一无二的,以后可以更改。
  • 设置所需的 timeToLiveHours 属性。 此属性指定听录在完成后应保留在系统中的时间。 最短支持的持续时间为 6 小时,最长支持的持续时间为 31 天。 当直接使用数据时,建议的值为 48 小时(两天)。
  • (可选)若要使用基础模型以外的模型,请将 model 属性设置为模型 ID。 有关详细信息,请参阅使用自定义模型
  • (可选)将 wordLevelTimestampsEnabled 属性设置为 true 以在听录结果中启用单词级时间戳。 默认值为 false
  • (可选)设置 languageIdentification 属性。 语言标识用于在与支持的语言列表比较时确定音频中所说的语言。 如果设置了 languageIdentification 属性,则还必须设置具有候选区域设置的 languageIdentification.candidateLocales

有关详细信息,请参阅请求配置选项

发出使用 URI 的 HTTP POST 请求,如以下 听录 - 提交 示例所示。

  • YourSpeechResoureKey 替换为语音资源密钥。
  • YourServiceRegion 替换为你的语音资源区域。
  • 如前文所述,设置请求正文属性。
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -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"
      ],
      "mode": "Continuous"
    },
    "timeToLiveHours": 48
  }
}'  "https://YourServiceRegion.api.cognitive.azure.cn/speechtotext/transcriptions:submit?api-version=2024-11-15"

你应该会收到以下格式的响应正文:

{
  "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/transcriptions/788a1f24-f980-4809-8978-e5cf41f77b35?api-version=2024-11-15",
  "displayName": "My Transcription 2",
  "locale": "en-US",
  "createdDateTime": "2025-05-24T03:20:39Z",
  "lastActionDateTime": "2025-05-24T03:20:39Z",
  "links": {
    "files": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/transcriptions/788a1f24-f980-4809-8978-e5cf41f77b35/files?api-version=2024-11-15"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
    "displayFormWordLevelTimestampsEnabled": false,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked",
    "timeToLiveHours": 48,
    "languageIdentification": {
      "candidateLocales": [
        "en-US",
        "de-DE",
        "es-ES"
      ],
      "mode": "Continuous"
    }
  },
  "status": "NotStarted"
}

响应正文中的顶级 self 属性是转录的 URI。 使用此 URI 可获取详细信息,例如听录和听录报告文件的 URI。 还可以使用此 URI 来更新删除听录。

您可以使用 转录 - 获取 操作来查询转录的状态。

在检索结果后,请定期调用转录删除功能,从服务中删除转录文件。 或者,设置 timeToLive 属性以确保最终删除结果。

提示

还可以在 GitHub 上使用 Python、C# 或 Node.js 尝试批量听录 API。

若要创建听录,请使用 spx batch transcription create 命令。 根据以下说明构造请求参数:

  • 设置所需的 content 参数。 可以指定一系列由逗号分隔的各个文件,或指定整个容器的 URL。 有关适用于批量听录的 Azure blob 存储的详细信息,请参阅找到批量听录的音频文件
  • 设置所需的 language 属性。 此值应与要听录的音频数据的预期区域设置相匹配。 之后无法更改区域设置。 语音 CLI language 参数对应于 JSON 请求和响应中的 locale 属性。
  • 设置所需的 name 属性。 选择一个稍后可以参考的转录名称。 听录名称不必是独一无二的,以后可以更改。 语音 CLI name 参数对应于 JSON 请求和响应中的 displayName 属性。
  • 将所需 api-version 参数设置为 v3.2. 语音 CLI 尚不支持版本 2024-11-15 或更高版本,因此现在必须使用 v3.2

下面是创建听录作业的语音 CLI 命令的示例:

spx batch transcription create --api-version v3.2 --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav

你应该会收到以下格式的响应正文:

{
  "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/transcriptions/bbbbcccc-1111-dddd-2222-eeee3333ffff",
  "model": {
    "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"
  },
  "links": {
    "files": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": false,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked"
  },
  "lastActionDateTime": "2025-05-24T03:20:39Z",
  "status": "NotStarted",
  "createdDateTime": "2025-05-24T03:20:39Z",
  "locale": "en-US",
  "displayName": "My Transcription",
  "description": ""
}

响应正文中的顶级 self 属性是转录的 URI。 使用此 URI 可获取详细信息,例如听录和听录报告文件的 URI。 还可以使用此 URI 来更新或删除听录。

有关听录的语音 CLI 帮助,请运行以下命令:

spx help batch transcription

请求配置选项

这里有一些属性选项,供调用 Transcriptions - Submit 操作时配置转录使用。 可以在同一页上找到更多示例,例如使用语言识别创建听录

属性 说明
channels 待处理的通道编号数组。 默认情况下,频道 01 被转录。
contentContainerUrl 可以提交单个音频文件或整个存储容器。

必须通过 contentContainerUrlcontentUrls 属性指定音频数据位置。 有关适用于批量听录的 Azure blob 存储的详细信息,请参阅找到批量听录的音频文件

不会在响应中返回此属性。
contentUrls 可以提交单个音频文件或整个存储容器。

必须通过 contentContainerUrlcontentUrls 属性指定音频数据位置。 有关详细信息,请参阅找到批量听录的音频文件

不会在响应中返回此属性。
destinationContainerUrl 结果可以存储在 Azure 容器中。 如果未指定容器,语音服务会将结果存储在由 Microsoft 管理的容器中。 删除听录作业时,听录结果数据也会被删除。 有关详细信息(例如支持的安全方案),请参阅指定目标容器 URL
diarization 指示语音服务应尝试对输入(应该为包含多个语音的单声道)进行分割聚类分析。 此功能不适用于立体声录音。

语音分离是将音频数据中的说话者区分开的过程。 批处理管道可以在单声道录制中识别和分隔多位说话者。

指定可能说话的人数的最小值和最大值。 还必须将 diarizationEnabled 属性设置为 true听录文件将包含每个听录短语的 speaker 条目。

需要三个或更多个扬声器时,需要使用此属性。 对于两个扬声器的情况,将 diarizationEnabled 属性设置为 true 就足够了。 关于属性使用的示例,请参阅 转录 - 提交

进行分割聚类的说话人的最大数目必须小于 36 个或等于 minCount 属性。 有关示例,请参阅 听录 - 提交

选择此属性后,源音频长度不能超过每个文件 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,则使用区域设置的默认基础模型。 有关详细信息,请参阅使用自定义模型
profanityFilterMode 指定如何处理识别结果中的不雅内容。 接受的值为 None(禁用不雅内容筛选)、Masked(将不雅内容替换为星号)、Removed(从结果中删除所有不雅内容)或 Tags(添加不雅内容标记)。 默认值为 Masked
punctuationMode 指定如何处理识别结果中的标点。 接受的值为 None(禁用标点)、Dictated(暗示显式(口述)标点)、Automatic(让解码器处理标点),或 DictatedAndAutomatic(使用听写标点和自动标点)。 默认值为 DictatedAndAutomatic
timeToLiveHours 此必需属性指定听录在完成后应保留在系统中的时间。

一旦转录在完成(无论成功或失败)后达到其存活时间,它将被自动删除。

最短支持的持续时间为 6 小时,最长支持的持续时间为 31 天。 当直接使用数据时,建议的值为 48 小时(两天)。

或者,可以在检索转录结果后,定期调用 转录 - 删除
wordLevelTimestampsEnabled 指定是否应在输出中包含字级时间戳。 默认值为 false

若要获取转录配置选项的语音 CLI 帮助,请运行以下命令:

spx help batch transcription create advanced

使用自定义模型

批量转录使用您指定区域设置的默认基本模型。 无需设置任何属性即可使用默认基础模型。

(可选)可以通过将 属性设置为使用特定的基本模型或model模型来修改前面的创建听录示例

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -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://chinanorth2.api.cognitive.azure.cn/speechtotext/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  }
}'  "https://YourServiceRegion.api.cognitive.azure.cn/speechtotext/transcriptions:submit?api-version=2024-11-15"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav --model "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"

若要使用自定义语音模型进行批量听录,你需要模型的 URI。 响应正文中的顶级 self 属性是模型的 URI。 创建或获取模型时,可以检索模型位置。 有关详细信息,请参阅“创建模型”中的 JSON 响应示例。

提示

无需托管部署终结点即可将自定义语音识别与批量转录服务配合使用。 如果仅将自定义语音模型用于批量听录,则可以节省资源。

已到期模型的批量听录请求会失败,并出现 4xx 错误。 将 model 属性设置为未过期的基础模型或自定义模型。 否则,请不要添加 model 属性,以始终使用最新的基本模型。 有关详细信息,请参阅选择模型自定义语音模型生命周期

指定目标容器 URL

听录结果可以存储在 Azure 容器中。 如果未指定容器,语音服务会将结果存储在由 Microsoft 管理的容器中。 在这种情况下,删除听录作业的同时,也会删除听录结果数据。

可以使用destinationContainerUrl中的选项 将批量听录的结果存储到可写的 Azure Blob 存储容器中。 此选项仅使用临时 SAS URI,不支持受信任的 Azure 服务安全机制。 此选项也不支持基于访问策略的 SAS。 目标容器的存储帐户资源必须允许所有外部流量。

如果想通过受信任的 Azure 服务安全机制将听录结果存储在 Azure Blob 存储容器中,可考虑使用自带存储 (BYOS)。 有关详细信息,请参阅将自带存储 (BYOS) 语音资源用于语音转文本

批量提交和轮询

批量听录是异步的,每个区域中一次处理一个请求。 以更高的速率提交作业不会加快处理速度。 例如,每分钟发送 600 或 6,000 个请求不会影响吞吐量。

监视作业状态时,不需要每隔几秒钟轮询一次。 如果提交多个作业,则最初只处理第一个作业;后续作业将等到第一个作业完成。 轮询所有作业会频繁增加系统负载,而不会带来好处。 建议每 10 分钟检查一次状态,建议不要每隔一分钟轮询一次。

若要优化大规模批量听录的吞吐量,请考虑跨多个受支持的 Azure 区域分配作业。 如果数据和符合性要求允许多区域使用,此方法可以帮助平衡负载并减少总体处理时间。 查看 区域可用性 ,并确保可从计划使用的每个区域访问存储和资源。