Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
使用批量听录,可以批量提交音频数据。 该服务听录音频数据,并将结果存储在存储容器中。 然后,可以从存储容器检索结果。
批量听录完成可能需要几分钟到几个小时,具体取决于音频数据的大小和提交的文件数。 即使音频数据的大小相同,也可能需要不同的时间来转录,具体取决于服务负载和其他因素。 该服务不提供估算转录一批音频数据所需的时间的方法。
提示
如果音频文件需要短于 2 小时且大小小于 300 MB 的一致快速速度,请考虑改用 快速听录 API 。
先决条件
你需要一个 Azure 语音资源。
创建听录作业
若要创建批量转录作业,请使用转录提交操作的语音转文本 REST API。 根据以下说明构造请求正文:
- 必须设置
contentContainerUrl或contentUrls属性。 有关批量听录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属性。 此值应与要听录的音频数据的预期区域设置相匹配。 之后无法更改区域设置。 语音 CLIlanguage参数对应于 JSON 请求和响应中的locale属性。 - 设置所需的
name属性。 选择一个稍后可以参考的转录名称。 听录名称不必是独一无二的,以后可以更改。 语音 CLIname参数对应于 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 操作时配置转录使用。 可以在同一页上找到更多示例,例如使用语言识别创建听录。
请求正文具有两个不同的级别。 放错属性会导致服务悄无声息地忽略它或返回验证错误。
-
根级别:描述转录任务本身(
displayName、locale、model、contentUrls、contentContainerUrl)的元数据。 -
内部
properties:控制转录行为的选项。 将这些内容包含在"properties": { }对象中。
重要
destinationContainerUrl 属于 properties 对象的内部,而不是位于请求正文的根层级。 将其置于根目录会导致服务忽略它,语音转录结果会自动写入 Azure 托管容器中。
以下示例显示了正确的结构:
{
"contentUrls": ["https://..."],
"locale": "en-US",
"displayName": "My Transcription",
"model": null,
"properties": {
"destinationContainerUrl": "https://<storage>.blob.core.chinacloudapi.cn/<container>?<SAS>",
"wordLevelTimestampsEnabled": true,
"timeToLiveHours": 48
}
}
| 属性 | 请求正文中的位置 | 说明 |
|---|---|---|
contentContainerUrl |
根层 | 可以提交单个音频文件或整个存储容器。 必须通过 contentContainerUrl 或 contentUrls 属性指定音频数据位置。 有关批量听录Azure blob 存储的详细信息,请参阅查找用于批量听录的音频文件。不会在响应中返回此属性。 |
contentUrls |
根层 | 可以提交单个音频文件或整个存储容器。 必须通过 contentContainerUrl 或 contentUrls 属性指定音频数据位置。 有关详细信息,请参阅找到批量听录的音频文件。不会在响应中返回此属性。 |
displayName |
根层 | 批量转录的名称。 选择稍后可以引用的名称。 显示名称不必是唯一的。 此属性是必需项。 |
locale |
根层 | 批量听录的区域设置。 此值应与要听录的音频数据的预期区域设置相匹配。 以后无法更改区域设置。 此属性是必需项。 |
model |
根层 | 可以将 model 属性设置为使用特定基础模型或自定义语音模型。 如果没有指定 model,则使用区域设置的默认基础模型。 有关详细信息,请参阅使用自定义模型和使用 Whisper 模型。 |
channels |
里面 properties |
待处理的通道编号数组。 默认情况下,频道 0 和 1 被转录。 |
destinationContainerUrl |
里面 properties |
结果可以存储在Azure容器中。 如果未指定容器,语音服务会将结果存储在由Microsoft管理的容器中。 删除听录作业时,听录结果数据也会被删除。 有关详细信息(例如支持的安全方案),请参阅指定目标容器 URL。 |
diarization |
里面 properties |
指示语音服务应尝试对输入(应该为包含多个语音的单声道)进行分割聚类分析。 此功能不适用于立体声录音。 语音分离是将音频数据中的说话者区分开的过程。 批处理管道可以在单声道录制中识别和分隔多位说话者。 指定可能说话的人数的最小值和最大值。 还必须将 diarizationEnabled 属性设置为 true。
听录文件将包含每个听录短语的 speaker 条目。需要三个或更多个扬声器时,需要使用此属性。 对于两个扬声器的情况,将 diarizationEnabled 属性设置为 true 就足够了。 关于属性使用的示例,请参阅 转录 - 提交。进行分割聚类的说话人的最大数目必须小于 36 个或等于 minCount 属性。 有关示例,请参阅 听录 - 提交。选择此属性后,源音频长度不能超过每个文件 240 分钟。 注意:此属性仅适用于语音转文本 REST API 版本 3.1 及更高版本。 如果使用任何之前的版本(例如版本 3.0)设置此属性,则会忽略该属性,并且仅标识两个扬声器。 |
diarizationEnabled |
里面 properties |
指定语音服务应尝试对输入(应该为包含两个语音的单声道)进行分割聚类分析。 默认值为 false。对于三个或更多声音,还需要使用属性 diarization。 仅适用于语音转文本 REST API 版本 3.1 及更高版本。选择此属性后,源音频长度不能超过每个文件 240 分钟。 |
displayFormWordLevelTimestampsEnabled |
里面 properties |
指定是否在转录结果显示形式中包含单词级别的时间戳。 结果在听录文件的 displayWords 属性中返回。 默认值为 false。注意:此属性仅适用于语音转文本 REST API 版本 3.1 及更高版本。 |
languageIdentification |
里面 properties |
语言标识用于在与支持的语言列表比较时确定音频中所说的语言。 如果设置 languageIdentification 属性,则还必须设置其封闭 candidateLocales 属性。 |
languageIdentification.candidateLocales |
里面 properties |
用于语言识别的候选区域设置,例如 "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}}。 支持最少两个、最多十个候选区域设置,包括用于听录的主要区域设置。 |
profanityFilterMode |
里面 properties |
指定如何处理识别结果中的不雅内容。 接受的值为 None(禁用不雅内容筛选)、Masked(将不雅内容替换为星号)、Removed(从结果中删除所有不雅内容)或 Tags(添加不雅内容标记)。 默认值为 Masked。 |
punctuationMode |
里面 properties |
指定如何处理识别结果中的标点。 接受的值为 None(禁用标点)、Dictated(暗示显式(口述)标点)、Automatic(让解码器处理标点),或 DictatedAndAutomatic(使用听写标点和自动标点)。 默认值为 DictatedAndAutomatic。此属性不适用于耳语模型。 |
timeToLiveHours |
里面 properties |
此必需属性指定听录在完成后应保留在系统中的时间。 一旦转录在完成(无论成功或失败)后达到其存活时间,它将被自动删除。 最短支持的持续时间为 6 小时,最长支持的持续时间为 31 天。 当直接使用数据时,建议的值为 48 小时(两天)。 或者,可以在检索转录结果后,定期调用 转录 - 删除。 |
wordLevelTimestampsEnabled |
里面 properties |
指定是否应在输出中包含字级时间戳。 默认值为 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 属性,以始终使用最新的基本模型。 有关详细信息,请参阅选择模型和自定义语音模型生命周期。
语言识别
若要使用批量转录 REST API 标识语言,请在languageIdentification请求的正文中使用属性。
警告
批量听录仅支持默认基础模型的语言标识。 如果在听录请求中同时指定了语言识别和自定义模型,则服务会回退到使用指定候选语言的基本模型。 这可能会导致意外的识别结果。
如果语音转文本方案需要语言识别和自定义模型,请使用实时语音转文本而不是批量听录。
以下示例显示了 languageIdentification 属性在四种候选语言中的用法。 有关请求属性的详细信息,请参阅创建批量听录。
{
<...>
"properties": {
<...>
"languageIdentification": {
"candidateLocales": [
"en-US",
"ja-JP",
"zh-cn",
"hi-IN"
]
},
<...>
}
}
指定目标容器 URL
听录结果可以存储在Azure容器中。 如果未指定容器,语音服务会将结果存储在由Microsoft管理的容器中。 在这种情况下,删除听录作业的同时,也会删除听录结果数据。
可以在
如果要使用 受信任的Azure服务安全机制将听录结果存储在 Azure Blob 存储容器中,请考虑使用 Bring-your-own-storage (BYOS)。 有关详细信息,请参阅将自带存储 (BYOS) 语音资源用于语音转文本。