使用DashScope Python SDK调用Paraformer模型,对录音文件进行异步转写识别。
前提条件
获取API Key:请获取API Key,并配置API Key到环境变量,避免在代码中硬编码:
如需在代码中临时授权,也可使用以下方式设置API Key,但请注意该方式存在泄露风险,不建议在生产环境使用:
模型列表
v2模型(推荐)
| 模型名称 | 支持语言 | 采样率 | 标点预测 | 逆文本规范化 | 自定义热词 |
|---|---|---|---|---|---|
| paraformer-v2 | 中文(含多种方言)、英语、日语、韩语、德语、法语、俄语 | 不限 | 支持 | 支持 | 支持 |
| paraformer-8k-v2 | 中文 | 8kHz | 支持 | 支持 | 支持 |
v1模型
| 模型名称 | 支持语言 | 采样率 | 标点预测 | 逆文本规范化 | 自定义热词 |
|---|---|---|---|---|---|
| paraformer-v1 | 中文、英语 | 不限 | 支持 | 支持 | 不支持 |
| paraformer-8k-v1 | 中文 | 8kHz | 支持 | 支持 | 不支持 |
| paraformer-mtl-v1 | 中文(含多种方言)、英语、日语、韩语、西班牙语、印尼语、法语、德语、意大利语、马来语 | 16kHz及以上 | 支持 | 支持 | 不支持 |
约束
- 不支持本地文件上传,也不支持Base64编码格式。输入音频必须为公网可访问的HTTP/HTTPS URL,例如
https://your-domain.com/file.mp3。 - SDK不支持
oss://前缀的URL。RESTful API支持oss://前缀URL,但下载链接有效期仅48小时,不建议在生产环境使用。 - 每次请求最多支持100个URL。
- 支持的音频格式:aac、amr、avi、flac、flv、m4a、mkv、mov、mp3、mp4、mpeg、ogg、opus、wav、webm、wma、wmv。
- 采样率要求:
- paraformer-v2:不限
- paraformer-8k-v2、paraformer-8k-v1:仅支持8kHz
- paraformer-mtl-v1:仅支持16kHz及以上
- paraformer-v1:不限
- 单个文件最大2GB,最长12小时。
- 每次请求最多100个文件。
快速开始
异步提交任务并同步等待结果
使用 async_call() 提交转写任务,再用 wait() 同步等待任务完成:
任务提交后会进入PENDING(排队)状态,排队时长取决于当前队列长度和音频时长,通常在几分钟内完成。转写结果及下载链接有效期为24小时。
异步提交任务并轮询查询结果
使用 async_call() 提交任务,再用 fetch() 循环轮询任务状态:
任务提交后会进入PENDING(排队)状态,排队时长取决于当前队列长度和音频时长,通常在几分钟内完成。转写结果及下载链接有效期为24小时。
请求参数
以下参数通过 async_call() 方法传入:
| 参数 | 类型 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
model | str | - | 必填 | Paraformer模型名称,参见模型列表 |
file_urls | list[str] | - | 必填 | 音视频文件的公网URL列表,最多100个 |
vocabulary_id | str | - | 可选 | 热词表ID(最新版),仅支持v2模型 |
phrase_id | str | - | 可选 | 热词表ID(v1版),不适用于v2及以上模型 |
channel_id | list[int] | [0] | 可选 | 音轨索引列表(从0开始),每条音轨单独计费 |
disfluency_removal_enabled | bool | False | 可选 | 是否过滤语气词(如"嗯"、"啊"等) |
timestamp_alignment_enabled | bool | False | 可选 | 是否开启时间戳对齐,解决识别结果与音频不同步的问题 |
special_word_filter | str | - | 可选 | 敏感词过滤配置(JSON 字符串),支持自定义替换规则 |
language_hints | list[str] | ["zh", "en"] | 可选 | 语言提示列表(如 ['zh', 'en']),仅支持paraformer-v2模型 |
diarization_enabled | bool | False | 可选 | 是否开启说话人分离 |
speaker_count | int | - | 可选 | 说话人数量,与 diarization_enabled 配合使用 |
响应结果
TranscriptionOutput字段
| 字段 | 类型 | 说明 |
|---|---|---|
task_id | string | 任务ID |
task_status | string | 任务状态:PENDING、RUNNING、SUCCEEDED、FAILED |
results | array | 各文件的转写结果列表 |
results[].file_url | string | 对应的输入音频URL |
results[].transcription_url | string | 转写结果JSON文件的下载URL(有效期24小时) |
results[].subtask_status | string | 该文件的子任务状态:SUCCEEDED或FAILED |
results[].code | string | 子任务失败时的错误码 |
results[].message | string | 子任务失败时的错误描述 |
当一次请求包含多个文件时,只要有任意一个子任务成功,整体
task_status 即为SUCCEEDED。请通过 subtask_status 判断每个文件的识别结果。识别结果说明
transcription_url 指向的JSON文件结构如下:
| 参数 | 类型 | 说明 |
|---|---|---|
audio_format | string | 源音频格式 |
channels | array[integer] | 音轨索引列表 |
original_sampling_rate | integer | 采样率(Hz) |
original_duration_in_milliseconds | integer | 原始音频时长(毫秒) |
channel_id | integer | 该转写结果对应的音轨索引 |
content_duration_in_milliseconds | integer | 被判定为语音内容的时长(毫秒),按此时长计费 |
text | string | 段落级别转写结果 |
sentences | array | 句子级别转写结果列表 |
words | array | 词级别转写结果列表 |
begin_time | integer | 开始时间戳(毫秒) |
end_time | integer | 结束时间戳(毫秒) |
speaker_id | integer | 说话人索引(从0开始),仅在开启说话人分离时返回 |
punctuation | string | 词后标点符号 |