以下是 Batch REST API 完整的参数和优化建议,全部来自官方文档:
一、请求参数(properties 字段)
必填参数
| 参数 | 说明 |
|---|---|
locale |
音频语言,如 zh-CN、en-US,提交后不可更改 |
displayName |
任务名称,无需唯一,仅用于标识 |
timeToLiveHours |
结果保留时长,最短 6 小时,最长 31 天,推荐 48 小时 |
contentUrls 或 contentContainerUrl |
二选一:单个/多个文件 URL,或整个 Blob 容器 URL |
可选优化参数
| 参数 | 默认值 | 说明 |
|---|---|---|
wordLevelTimestampsEnabled |
false |
开启词级时间戳 |
displayFormWordLevelTimestampsEnabled |
false |
词级时间戳(仅展示形式,v3.1+) |
punctuationMode |
DictatedAndAutomatic |
标点模式:None / Dictated / Automatic / DictatedAndAutomatic |
profanityFilterMode |
Masked |
敏感词处理:None / Masked / Removed / Tags |
channels |
[0, 1] |
指定处理的声道编号 |
diarizationEnabled |
false |
开启说话人分离(mono 音频,最多 2 人) |
diarization |
- | 说话人分离扩展配置,用于 3 人及以上,需同时设 diarizationEnabled: true,单文件不超过 240 分钟 |
languageIdentification |
- | 自动语言识别,需同时设 candidateLocales(2~10个候选语言) |
model |
默认基础模型 | 指定自定义模型或 Whisper 模型的 URI |
destinationContainerUrl |
微软托管容器 | 自定义结果存储 Blob 容器,删除 Job 时结果不会被删除 |
完整请求示例:
{
"contentUrls": ["https://your-blob/audio.wav"],
"locale": "zh-CN",
"displayName": "MyJob",
"properties": {
"timeToLiveHours": 48,
"wordLevelTimestampsEnabled": true,
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked",
"diarizationEnabled": true,
"diarization": {
"speakers": {
"minCount": 1,
"maxCount": 5
}
},
"languageIdentification": {
"candidateLocales": ["zh-CN", "en-US"],
"mode": "Continuous"
},
"channels": [0, 1]
}
}
二、性能优化最佳实践
批量合并提交:单次请求最多可包含约 1000 个文件,合并提交比分批单个提交效率更高。
分散提交时间:将大量任务分散到几个小时内提交,而不是集中在几分钟内,后端带宽固定,过快提交不会提升吞吐。
轮询间隔:检查状态每 10 分钟一次已足够,不建议低于 1 分钟一次。如果提交了多个 Job,服务按顺序处理,可以只检查前 100 个文件的状态,若未完成则后续 Job 肯定也未完成。
避开峰值时段:ListFiles、Update、Get 这类 API 调用在峰值时段会影响性能,尽量错峰调用。
多区域负载均衡:大规模场景下,将 Job 分发到多个 Azure 区域,可显著提升整体吞吐。
三、注意事项
| 约束 | 说明 |
|---|---|
| 处理时间 | 高峰期 Job 可能等待 30 分钟才开始,最长可达 24 小时完成 |
| 说话人分离 | 开启 diarization 时,单文件不超过 240 分钟 |
| 最大说话人数 | diarization 最大说话人数必须小于 36 |
| 文件来源 | 必须是公开 URL 或带 SAS 签名的 Blob URL,不能直接上传本地文件 |
信息非常完整,整理成完整指南如下:
一、音频质量优化(根本)
这是影响准确度最直接的因素,在送去 API 之前就要做好。
为获得最佳转录质量,建议使用无损格式,如 WAV(PCM 编码) 或 FLAC。
对于人声,16kHz 采样率通常已足够,但更高采样率(如 48kHz)可进一步提升质量。Batch Transcription 限制:单文件最大 4 小时 / 1GB。
音频预处理推荐参数:
格式:WAV (PCM) 或 FLAC
采样率:16000 Hz(推荐),8000 Hz 会导致质量下降
声道:Mono(单声道)
位深:16-bit
用 ffmpeg 转换示例:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -sample_fmt s16 output.wav
二、API 参数层面优化
2.1 语言识别精准匹配
"locale": "zh-CN"
如果指定了错误的语言(比如音频是中文但指定了 en-US),准确度会大幅下降。如果语言不确定,开启自动识别:
"languageIdentification": {
"candidateLocales": ["zh-CN", "zh-HK", "en-US"],
"mode": "Continuous"
}
2.2 说话人分离(Diarization)
多人场景必开,有助于模型区分语境:
"diarizationEnabled": true,
"diarization": {
"speakers": {
"minCount": 1,
"maxCount": 4
}
}
注意:开启后单文件不超过 240 分钟
2.3 词级时间戳
"wordLevelTimestampsEnabled": true
词级时间戳、NBest 候选项和说话人分离都能帮助提升转录准确度的评估与利用。
2.4 标点模式
"punctuationMode": "DictatedAndAutomatic"
DictatedAndAutomatic 同时支持口述标点(用户说"逗号")和自动标点,可读性和准确度最佳。
2.5 完整优化参数请求体
{
"contentUrls": ["https://your-blob/audio.wav"],
"locale": "zh-CN",
"displayName": "OptimizedJob",
"properties": {
"timeToLiveHours": 48,
"wordLevelTimestampsEnabled": true,
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "None",
"diarizationEnabled": true,
"diarization": {
"speakers": { "minCount": 1, "maxCount": 4 }
},
"channels": [0]
}
}
三、Custom Speech 自定义模型(最强提升手段)
通过 Custom Speech,你可以评估并改善语音识别准确度。Batch Transcription 使用自定义模型不需要部署托管 Endpoint,可以节省资源。
自定义模型支持以下几种训练数据类型,效果逐级递增:
3.1 纯文本(Related Text)— 最轻量
提供领域相关的句子文本,可减少常见词和领域专词的替换错误。文本不需要语法完整,但要贴近实际语音输入。
适合场景:行业术语、产品名称、专有名词。
3.2 结构化文本(Structured Text)— 有规律的话术
当数据遵循某种规律时(如话术模板),使用结构化文本,可以定义词语列表,让模型覆盖所有组合变体。
# 示例
我想查询 {product} 的 {info_type}
[product]: 账单|话费|流量|套餐
[info_type]: 余额|使用量|到期时间
3.3 自定义发音(Pronunciation Data)
提供单词的自定义音标,适合缩写词、品牌名、首字母缩合词等发音特殊的词。格式:识别形式 + Tab + 音节拼写序列。
ZPI z-i-p-p-y
Contoso k-o-n-t-o-s-o
3.4 音频 + 人工标注转录(最高精度)
音频配合人工标注转录文本,可改善口音、说话风格、背景噪声等声学层面问题,能带来最大的准确度提升。建议样本覆盖所有典型场景和不同说话人。
训练数据要求:WAV,16kHz,单声道,16-bit,单条音频不超过 40 秒。
3.5 自定义显示格式(Display Text Formatting)
支持自定义逆文本规范化(ITN):把口头数字转成展示格式,如 "花了二十块" → "花了 ¥20";还支持大小写规则、自定义敏感词过滤等。
3.6 在 Batch API 中使用自定义模型
训练完成后,直接在请求中指定模型 URI:
{
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/YOUR_MODEL_ID"
}
}
四、优化策略选择路线图
基础场景(无特殊术语)
└── 用最新默认 base model + 正确 locale 即可
有行业术语 / 专有名词
└── Custom Speech + 相关文本数据训练
有规律话术(呼叫中心、客服)
└── Custom Speech + 结构化文本 + 发音数据
口音重 / 背景噪声 / 特殊说话风格
└── Custom Speech + 音频 + 人工标注转录
数字 / 货币 / 格式规范要求高
└── Custom Speech + 自定义 Display Text 格式规则
五、评估准确度的方法
微软提供 词错误率(WER) 作为定量评估指标。建议先用 base model 跑一批音频,与人工转录对比 WER,如果 WER 偏高则针对性训练 Custom Speech 模型。WER 改善超过 5% 才认为有显著效果。