本文介绍 Qwen-ASR 模型的输入与输出参数。可通过OpenAI 兼容或DashScope协议调用 API。
模型接入方式
不同模型支持的接入方式不同,请根据下表选择正确的方式进行集成。
| 模型 | 接入方式 |
|---|---|
| 千问3-ASR-Flash-Filetrans | 仅支持DashScope异步调用方式 |
| 千问3-ASR-Flash | OpenAI 兼容和DashScope同步调用两种方式 |
OpenAI 兼容
URL
HTTP请求地址:POST https://maas.qianwenaiapi.com/compatible-mode/v1/chat/completions
SDK调用配置的base_url:https://maas.qianwenaiapi.com/compatible-mode/v1
请求参数
调用示例
- 输入内容:音频文件URL
- 输入内容:Base64编码的音频文件
- Python SDK
- Node.js SDK
- cURL
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | (必选) 模型名称。仅适用于千问3-ASR-Flash模型。 |
| messages | array | (必选) 消息列表。 System Message(object) (可选) 用于为语音识别提供上下文(Context),如背景文本和实体词表等参考信息,不支持设置模型角色等传统系统提示词。如果设置系统消息,请放在messages列表的第一位。 User Message(object) (必选) 用户发送给模型的消息。 |
| 参数 | 类型 | 说明 |
|---|---|---|
| messages.role | string | (必选) 固定为system。 |
| 参数 | 类型 | 说明 |
|---|---|---|
| messages.content | array | (必选) 用户消息的内容。仅允许设置一组消息。 |
| messages.content.type | string | (必选) 固定为input_audio,代表输入的是音频。 |
| messages.content.input_audio | object | (必选) 待识别音频对象。 |
| messages.content.input_audio.data | string | (必选) 待识别音频。具体用法请参见调用示例。 千问3-ASR-Flash模型在OpenAI兼容模式下支持两种输入形式:Base64编码的文件和公网可访问的待识别文件URL。 使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。 使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意: 提示: - 临时 URL 有效期48小时,过期后无法使用,请勿用于生产环境。
|
| messages.role | string | (必选) 用户消息的角色,固定为user。 |
| 参数 | 类型 | 说明 |
|---|---|---|
| asr_options | object | (可选) 用来指定某些功能是否启用。 > asr_options非OpenAI标准参数,若使用OpenAI SDK,请通过extra_body传入。 |
| asr_options.language | string | (可选)无默认值 若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率。 只能指定一个语种。 若音频语种不确定,或包含多种语种(例如中英日韩混合),请勿指定该参数。
|
| asr_options.enable_itn | boolean | (可选)默认值为false 是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。 开启后,语音识别结果中的中文数字(如"一百二十三")或英文数字(如"one hundred")将自动转换为阿拉伯数字(如"123")。 参数值:
|
| stream | boolean | (可选)默认值为false 是否以流式输出方式回复。相关文档:流式输出 可选值:
true,可提升阅读体验并降低超时风险。 |
| stream_options | object | (可选) 流式输出的配置项,仅在 stream 为 true 时生效。 |
| stream_options.include_usage | boolean | (可选)默认值为false 是否在响应的最后一个数据块包含Token消耗信息。 可选值:
|
响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
| id | string | 本次调用的唯一标识符。 |
| choices | array | 模型的输出信息。 |
| choices.finish_reason | string | 有三种情况:
|
| choices.index | integer | 当前对象在choices数组中的索引。 |
| choices.message | object | 模型输出的消息对象。 |
| choices.message.role | string | 输出消息的角色,固定为assistant。 |
| choices.message.content | array | 语音识别结果。 |
| choices.message.annotations | array | 输出标注信息(如语种) |
| choices.message.annotations.language | string | 被识别音频的语种。当请求参数language已指定语种时,该值与所指定的参数一致。
|
| choices.message.annotations.type | string | 固定为audio_info,表示音频信息。 |
| choices.message.annotations.emotion | string | 被识别音频的情感。支持的情感如下:
|
| created | integer | 请求创建时的 Unix 时间戳(秒)。 |
| model | string | 本次请求使用的模型。 |
| object | string | 始终为chat.completion。 |
| usage | object | 本次请求的Token消耗信息。 |
| usage.completion_tokens | integer | 模型输出的 Token 数。 |
| usage.completion_tokens_details | object | 模型输出的 Token 细粒度详情。 |
| usage.completion_tokens_details.text_tokens | integer | 模型输出文本的Token数。 |
| usage.prompt_tokens | object | 输入的Token数。 |
| usage.prompt_tokens_details | object | 输入的 Token 细粒度详情。 |
| usage.prompt_tokens_details.audio_tokens | integer | 输入音频长度(Token)。音频转换Token规则:每秒音频转换为25个Token,不足1秒按1秒计算。 |
| usage.prompt_tokens_details.text_tokens | integer | 无需关注该参数。 |
| usage.seconds | integer | 音频时长(秒)。 |
| usage.total_tokens | integer | 输入和输出总Token数(total_tokens = completion_tokens + prompt_tokens)。 |
DashScope同步调用
URL
HTTP请求地址:POST https://maas.qianwenaiapi.com/api/v1/services/aigc/multimodal-generation/generation
SDK调用配置的base_url:https://maas.qianwenaiapi.com/api/v1
请求参数modelstring(必选)模型名称。仅适用于千问3-ASR-Flash模型。messagesarray(必选)消息列表。通过HTTP调用时,请将messages放入 input 对象中。
消息类型 System Message object(可选)用于为语音识别提供上下文(Context),如背景文本和实体词表等参考信息,不支持设置模型角色等传统系统提示词。如果设置系统消息,请放在messages列表的第一位。仅千问3-ASR-Flash支持该参数。
属性 role string(必选)固定为system。object(必选)用户发送给模型的消息。
属性 content array(必选)用户消息的内容。仅允许设置一组消息。
属性 audio string(必选)待识别音频。具体用法请参见调用示例。千问3-ASR-Flash模型在DashScope调用方式下支持三种输入形式:Base64编码的文件、本地文件绝对路径、公网可访问的待识别文件URL。使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意:
string(必选)用户消息的角色,固定为user。object(可选)用来指定某些功能是否启用。仅千问3-ASR-Flash支持该参数。
属性 language string(可选)无默认值若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率。只能指定一个语种。若音频语种不确定,或包含多种语种(例如中英日韩混合),请勿指定该参数。
取值范围
boolean(可选)默认值为false是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。开启后,语音识别结果中的中文数字(如"一百二十三")或英文数字(如"one hundred")将自动转换为阿拉伯数字(如"123")。参数值:
| 调用示例Qwen3-ASR-Flash 支持最长 5 分钟录音,输入支持公网音频文件 URL 或本地文件上传,可流式返回识别结果。
|
响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
| request_id | string | 本次调用的唯一标识符。 > Java SDK返回参数为requestId。 |
| output | object | 调用结果信息。 |
| output.choices | array | 模型的输出信息。当result_format为message时返回choices参数。 |
| output.choices.finish_reason | string | 有三种情况:
|
| output.choices.message | object | 模型输出的消息对象。 |
| output.choices.message.role | string | 输出消息的角色,固定为assistant。 |
| output.choices.message.content | array | 输出消息的内容。 |
| output.choices.message.content.text | string | 语音识别结果。 |
| output.choices.message.annotations | array | 输出标注信息(如语种) |
| output.choices.message.annotations.language | string | 被识别音频的语种。当请求参数language已指定语种时,该值与所指定的参数一致。
|
| output.choices.message.annotations.type | string | 固定为audio_info,表示音频信息。 |
| output.choices.message.annotations.emotion | string | 被识别音频的情感。支持的情感如下:
|
| usage | object | 本次请求的Token消耗信息。 |
| usage.input_tokens_details | object | 千问3-ASR-Flash输入内容长度(Token)。 |
| usage.input_tokens_details.text_tokens | integer | 无需关注该参数。 |
| usage.output_tokens_details | object | 千问3-ASR-Flash输出内容长度(Token)。 |
| usage.output_tokens_details.text_tokens | integer | 千问3-ASR-Flash输出的识别结果文本长度(Token)。 |
| usage.seconds | integer | 千问3-ASR-Flash音频时长(秒)。 |
DashScope异步调用
流程说明
与OpenAI兼容模式或DashScope同步调用(均为一次请求、立即返回结果)不同,异步调用专为处理长音频文件或耗时较长的任务设计,该模式采用“提交-轮询”的两步式流程,避免了因长时间等待而导致的请求超时:
-
第一步:提交任务
- 客户端发起一个异步处理请求。
- 服务器验证请求后,不会立即执行任务,而是返回一个唯一的
task_id,表示任务已成功创建。
-
第二步:获取结果
- 客户端使用获取到的
task_id,通过轮询方式反复调用结果查询接口。 - 当任务处理完成后,结果查询接口将返回最终的识别结果。
- 客户端使用获取到的
-
使用 SDK(示例代码请参见调用示例,请求参数请参见提交任务的请求参数请求参数,返回结果请参见异步调用识别结果说明)
SDK封装了底层的API调用细节,提供了更便捷的编程体验。
- 提交任务:调用
async_call()(Python) 或asyncCall()(Java) 方法提交任务。此方法将返回一个包含task_id的任务对象。 - 获取结果:使用上一步返回的任务对象或
task_id,调用fetch()方法获取结果。SDK内部会自动处理轮询逻辑,直到任务完成或超时。
- 提交任务:调用
-
- 使用 RESTful API
完整示例
- HTTP
- Java SDK
- Python SDK
- 下载识别结果
Java
提交任务
URL
HTTP请求地址:POST https://maas.qianwenaiapi.com/api/v1/services/audio/asr/transcription
SDK调用配置的base_url:https://maas.qianwenaiapi.com/api/v1
请求参数
- cURL
- Java
- Python
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | (必选) 模型名称。仅适用于千问3-ASR-Flash-Filetrans模型。 |
| input | object | (必选) |
| input.file_url | string | (必选) 待识别音频文件URL,URL必须公网可访问。 使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。 使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意: 提示: - 临时 URL 有效期48小时,过期后无法使用,请勿用于生产环境。
|
| parameters | object | (可选) |
| parameters.language | string | (可选)无默认值 若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率。 只能指定一个语种。 若音频语种不确定,或包含多种语种(例如中英日韩混合),请勿指定该参数。
|
| parameters.enable_itn | boolean | (可选)默认值为false 是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。 开启后,语音识别结果中的中文数字(如"一百二十三")或英文数字(如"one hundred")将自动转换为阿拉伯数字(如"123")。 参数值:
|
| parameters.enable_words | boolean | (可选)默认值为false 控制是否返回字级别时间戳:
|
| parameters.channel_id | array | (可选)默认值为[0] 指定在多音轨音频文件中需要识别的音轨索引,索引从 0 开始。例如,[0] 表示识别第一个音轨,[0, 1] 表示同时识别第一和第二个音轨。如果省略此参数,则默认处理第一个音轨。 提示: 指定的每一个音轨都将独立计费。例如,为单个文件请求 [0, 1] 会产生两笔独立的费用。 |
响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
| request_id | string | 本次调用的唯一标识符。 |
| output | object | 调用结果信息。 |
| output.task_id | string | 任务ID。该ID在查询语音识别任务接口中作为请求参数传入。 |
| output.task_status | string | 任务状态:
|
获取任务执行结果
URL
HTTP请求地址:GET https://maas.qianwenaiapi.com/api/v1/tasks/{task_id}
SDK调用配置的base_url:https://maas.qianwenaiapi.com/api/v1
请求参数
- cURL
- Java
- Python
| 参数 | 类型 | 说明 |
|---|---|---|
| task_id | string | (必选) 任务ID。将提交任务返回结果中的task_id作为参数传入,查询语音识别结果。 |
响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
| request_id | string | 本次调用的唯一标识符。 |
| output | object | 调用结果信息。 |
| output.task_id | string | 任务ID。该ID在查询语音识别任务接口中作为请求参数传入。 |
| output.task_status | string | 任务状态:
|
| output.result | object | 语音识别结果。 |
| output.result.transcription_url | string | 识别结果文件的下载 URL,链接有效期为 24 小时。过期后无法查询任务,也无法通过先前的 URL 下载结果。 识别结果以 JSON 文件保存,可通过该链接下载文件,或直接使用 HTTP 请求读取文件内容。 详情参见异步调用识别结果说明。 |
| output.submit_time | string | 任务提交时间。 |
| output.schedule_time | string | 任务调度时间,即开始执行时间。 |
| output.end_time | string | 任务结束时间。 |
| output.task_metrics | object | 任务指标,包含子任务状态的统计信息。 |
| output.task_metrics.TOTAL | integer | 子任务总数。 |
| output.task_metrics.SUCCEEDED | integer | 子任务成功数。 |
| output.task_metrics.FAILED | integer | 子任务失败数。 |
| output.code | string | 错误码,仅在任务失败时返回。 |
| output.message | string | 错误信息,仅任务失败时返回。 |
| output.usage | object | 本次请求的Token消耗信息。 |
| output.usage.seconds | integer | 千问3-ASR-Flash音频时长(秒)。 |
异步调用识别结果说明
| 参数 | 类型 | 说明 |
|---|---|---|
| file_url | string | 被识别的音频文件URL。 |
| audio_info | object | 被识别音频文件相关信息。 |
| audio_info.format | string | 音频格式。 |
| audio_info.sample_rate | integer | 音频采样率。 |
| transcripts | array | 完整的识别结果列表,每个元素对应一条音轨的识别内容。 |
| transcripts.channel_id | integer | 音轨索引,以0为起始。 |
| transcripts.text | string | 识别结果文本。 |
| transcripts.sentences | object | 句子级别的识别结果列表。 |
| transcripts.sentences.begin_time | integer | 句子开始时间戳(毫秒)。 |
| transcripts.sentences.end_time | integer | 句子结束时间戳(毫秒)。 |
| transcripts.sentences.text | string | 识别结果文本。 |
| transcripts.sentences.sentence_id | integer | 句子索引,以0为起始。 |
| transcripts.sentences.language | string | 被识别音频的语种。当请求参数language已指定语种时,该值与所指定的参数一致。
|
| transcripts.sentences.emotion | string | 被识别音频的情感。支持的情感如下:
|
| transcripts.sentences.words | object | 词级别的识别结果列表。当请求参数enable_words设为true时展示该结果。 |
| transcripts.sentences.words.begin_time | integer | 开始时间戳(毫秒)。 |
| transcripts.sentences.words.end_time | integer | 结束时间戳(毫秒)。 |
| transcripts.sentences.words.text | string | 识别结果文本。 |
| transcripts.sentences.words.punctuation | string | 标点符号。 |