批量转录Batch REST API


以下是 Batch REST API 完整的参数和优化建议,全部来自官方文档:


一、请求参数(properties 字段)

必填参数

参数 说明
locale 音频语言,如 zh-CNen-US,提交后不可更改
displayName 任务名称,无需唯一,仅用于标识
timeToLiveHours 结果保留时长,最短 6 小时,最长 31 天,推荐 48 小时
contentUrlscontentContainerUrl 二选一:单个/多个文件 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 肯定也未完成。

避开峰值时段ListFilesUpdateGet 这类 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% 才认为有显著效果。



扫描二维码,在手机上阅读
收藏

语言优先级

异步 ASR 方式

评 论
请登录后再评论