本文介绍 Qwen-ASR 模型的输入与输出参数。可通过OpenAI 兼容或DashScope协议调用 API。
模型接入方式
不同模型支持的接入方式不同,请根据下表选择正确的方式进行集成。
模型 | 接入方式 |
|---|---|
千问3-ASR-Flash-Filetrans | 仅支持DashScope异步调用方式 |
千问3-ASR-Flash |
OpenAI 兼容
重要美国地域不支持OpenAI兼容模式。
URL
新加坡
HTTP请求地址:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
SDK调用配置的base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
美国(弗吉尼亚)
HTTP请求地址:POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
SDK调用配置的base_url:https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
华北2(北京)
HTTP请求地址:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
SDK调用配置的base_url:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
重要阿里云百炼为华北2(北京)、新加坡地域推出了业务空间专属域名,能够为推理请求提供卓越的性能和更高的稳定性,建议迁移至新域名:
- 华北2(北京)地域:从
dashscope.aliyuncs.com迁移至{WorkspaceId}.cn-beijing.maas.aliyuncs.com - 新加坡地域:从
dashscope-intl.aliyuncs.com迁移至{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId}需要替换为真实的Workspace ID。现有域名仍可正常使用。
请求参数model 模型名称。仅适用于千问3-ASR-Flash模型。 messages 消息列表。 asr_options 用来指定某些功能是否启用。
stream 是否以流式输出方式回复。相关文档:流式输出 可选值:
推荐设置为 stream_options 流式输出的配置项,仅在 | 调用示例输入内容:音频文件URLPython SDKNode.js SDKcURL以下为新加坡地域的配置,调用时请将 输入内容:Base64编码的音频文件可输入Base64编码数据(Data URL),格式为:
|
响应参数id 本次调用的唯一标识符。 choices 模型的输出信息。 属性 finish_reason 有三种情况:
index 当前对象在 message 模型输出的消息对象。 created 请求创建时的 Unix 时间戳(秒)。 model 本次请求使用的模型。 object 始终为 usage 本次请求的Token消耗信息。 | |
DashScope同步调用
URL
新加坡
HTTP请求地址:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
SDK调用配置的base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
美国(弗吉尼亚)
HTTP请求地址:POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
SDK调用配置的base_url:https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1
华北2(北京)
HTTP请求地址:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
SDK调用配置的base_url:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
重要阿里云百炼为华北2(北京)、新加坡地域推出了业务空间专属域名,能够为推理请求提供卓越的性能和更高的稳定性,建议迁移至新域名:
- 华北2(北京)地域:从
dashscope.aliyuncs.com迁移至{WorkspaceId}.cn-beijing.maas.aliyuncs.com - 新加坡地域:从
dashscope-intl.aliyuncs.com迁移至{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId}需要替换为真实的Workspace ID。现有域名仍可正常使用。
请求参数model 模型名称。仅适用于千问3-ASR-Flash模型。 messages 消息列表。
asr_options 用来指定某些功能是否启用。 仅千问3-ASR-Flash支持该参数。 | 调用示例Qwen3-ASR-Flash 支持最长 5 分钟录音,输入支持公网音频文件 URL 或本地文件上传,可流式返回识别结果。 输入内容:音频文件URL输入内容:Base64编码的音频文件可输入Base64编码数据(Data URL),格式为:
输入内容:本地音频文件绝对路径使用 DashScope SDK 处理本地音频文件时需传入文件路径。请参考下表,结合调用方式与操作系统创建对应路径。
重要本地文件调用上限 100 QPS,不支持扩容,不适合生产环境、高并发或压测场景;如需更高并发,请将文件上传至 OSS 并通过 URL 方式调用。 流式输出模型逐步生成中间结果,最终结果由其拼接而成。非流式调用需等待全部结果生成后一次性返回;流式调用边生成边返回,可显著降低首字延迟。根据调用方式选择对应的流式参数:
Python SDKJava SDKcURL以下为新加坡地域的配置,调用时请将 |
响应参数request_id 本次调用的唯一标识符。
output 调用结果信息。 usage 本次请求的Token消耗信息。 | |
DashScope异步调用
流程说明
与OpenAI兼容模式或DashScope同步调用(均为一次请求、立即返回结果)不同,异步调用专为处理长音频文件或耗时较长的任务设计,该模式采用“提交-轮询”的两步式流程,避免了因长时间等待而导致的请求超时:
-
第一步:提交任务
- 客户端发起一个异步处理请求。
- 服务器验证请求后,不会立即执行任务,而是返回一个唯一的
task_id,表示任务已成功创建。
-
第二步:获取结果
- 客户端使用获取到的
task_id,通过轮询方式反复调用结果查询接口。 - 当任务处理完成后,结果查询接口将返回最终的识别结果。
- 客户端使用获取到的
您可以根据集成环境选择使用SDK或直接调用RESTful API。
-
使用 SDK(示例代码请参见调用示例,请求参数请参见提交任务的请求参数请求参数,返回结果请参见异步调用识别结果说明)
SDK封装了底层的API调用细节,提供了更便捷的编程体验。
- 提交任务:调用
async_call()(Python) 或asyncCall()(Java) 方法提交任务。此方法将返回一个包含task_id的任务对象。 - 获取结果:使用上一步返回的任务对象或
task_id,调用fetch()方法获取结果。SDK内部会自动处理轮询逻辑,直到任务完成或超时。
- 提交任务:调用
-
- 使用 RESTful API
直接调用HTTP接口提供了最大的灵活性。
完整示例
HTTP
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class Main {
// 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
private static final String API_URL_SUBMIT = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription";
// 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
private static final String API_URL_QUERY = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/";
private static final Gson gson = new Gson();
public static void main(String[] args) {
// 新加坡地域和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:String apiKey = "sk-xxx"
String apiKey = System.getenv("DASHSCOPE_API_KEY");
OkHttpClient client = new OkHttpClient();
// 1. 提交任务
String payloadJson = """
{
"model": "qwen3-asr-flash-filetrans",
"input": {
"file_url": "{YOUR_AUDIO_URL}"
},
"parameters": {
"channel_id": [0],
"enable_itn": false,
"enable_words": true
}
}
""";
RequestBody body = RequestBody.create(payloadJson, MediaType.get("application/json; charset=utf-8"));
Request submitRequest = new Request.Builder()
.url(API_URL_SUBMIT)
.addHeader("Authorization", "Bearer " + apiKey)
.addHeader("Content-Type", "application/json")
.addHeader("X-DashScope-Async", "enable")
.post(body)
.build();
String taskId = null;
try (Response response = client.newCall(submitRequest).execute()) {
if (response.isSuccessful() && response.body() != null) {
String respBody = response.body().string();
ApiResponse apiResp = gson.fromJson(respBody, ApiResponse.class);
if (apiResp.output != null) {
taskId = apiResp.output.taskId;
System.out.println("任务已提交,task_id: " + taskId);
} else {
System.out.println("提交返回内容: " + respBody);
return;
}
} else {
System.out.println("任务提交失败! HTTP code: " + response.code());
if (response.body() != null) {
System.out.println(response.body().string());
}
return;
}
} catch (IOException e) {
e.printStackTrace();
return;
}
// 2. 轮询任务状态
boolean finished = false;
while (!finished) {
try {
TimeUnit.SECONDS.sleep(2); // 等待 2 秒再查询
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
String queryUrl = API_URL_QUERY + taskId;
Request queryRequest = new Request.Builder()
.url(queryUrl)
.addHeader("Authorization", "Bearer " + apiKey)
.addHeader("Content-Type", "application/json")
.get()
.build();
try (Response response = client.newCall(queryRequest).execute()) {
if (response.body() != null) {
String queryResponse = response.body().string();
ApiResponse apiResp = gson.fromJson(queryResponse, ApiResponse.class);
if (apiResp.output != null && apiResp.output.taskStatus != null) {
String status = apiResp.output.taskStatus;
System.out.println("当前任务状态: " + status);
if ("SUCCEEDED".equalsIgnoreCase(status)
|| "FAILED".equalsIgnoreCase(status)
|| "UNKNOWN".equalsIgnoreCase(status)) {
finished = true;
System.out.println("任务完成,最终结果: ");
System.out.println(queryResponse);
}
} else {
System.out.println("查询返回内容: " + queryResponse);
}
}
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
static class ApiResponse {
@SerializedName("request_id")
String requestId;
Output output;
}
static class Output {
@SerializedName("task_id")
String taskId;
@SerializedName("task_status")
String taskStatus;
}
}
import os
import time
import requests
import json
# 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
API_URL_SUBMIT = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription"
# 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
API_URL_QUERY_BASE = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/"
def main():
# 新加坡地域和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key = "sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable"
}
# 1. 提交任务
payload = {
"model": "qwen3-asr-flash-filetrans",
"input": {
"file_url": "{YOUR_AUDIO_URL}"
},
"parameters": {
"channel_id": [0],
# "language": "zh",
"enable_itn": False,
"enable_words": True
}
}
print("提交 ASR 转写任务...")
try:
submit_resp = requests.post(API_URL_SUBMIT, headers=headers, data=json.dumps(payload))
except requests.RequestException as e:
print(f"请求提交任务失败: {e}")
return
if submit_resp.status_code != 200:
print(f"任务提交失败! HTTP code: {submit_resp.status_code}")
print(submit_resp.text)
return
resp_data = submit_resp.json()
output = resp_data.get("output")
if not output or "task_id" not in output:
print("提交返回内容异常:", resp_data)
return
task_id = output["task_id"]
print(f"任务已提交,task_id: {task_id}")
# 2. 轮询任务状态
finished = False
while not finished:
time.sleep(2) # 等待 2 秒再查询
query_url = API_URL_QUERY_BASE + task_id
try:
query_resp = requests.get(query_url, headers={"Authorization": f"Bearer {api_key}"})
except requests.RequestException as e:
print(f"请求查询任务失败: {e}")
return
if query_resp.status_code != 200:
print(f"查询任务失败! HTTP code: {query_resp.status_code}")
print(query_resp.text)
return
query_data = query_resp.json()
output = query_data.get("output")
if output and "task_status" in output:
status = output["task_status"]
print(f"当前任务状态: {status}")
if status.upper() in ("SUCCEEDED", "FAILED", "UNKNOWN"):
finished = True
print("任务完成,最终结果如下:")
print(json.dumps(query_data, indent=2, ensure_ascii=False))
else:
print("查询返回内容:", query_data)
if __name__ == "__main__":
main()
Java SDK
import com.alibaba.dashscope.audio.qwen_asr.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
QwenTranscriptionParam param =
QwenTranscriptionParam.builder()
// 新加坡地域和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-asr-flash-filetrans")
.fileUrl("{YOUR_AUDIO_URL}")
//.parameter("language", "zh")
//.parameter("channel_id", new ArrayList<String>(){{add("0");add("1");}})
.parameter("enable_itn", false)
.parameter("enable_words", true)
.build();
try {
QwenTranscription transcription = new QwenTranscription();
// 提交任务
QwenTranscriptionResult result = transcription.asyncCall(param);
System.out.println("create task result: " + result);
// 检查任务是否提交成功
if (result.getTaskId() == null) {
System.out.println("Error: " + result.getOutput());
return;
}
// 查询任务状态
result = transcription.fetch(QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
System.out.println("task status: " + result);
// 等待任务完成
result =
transcription.wait(
QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
System.out.println("task result: " + result);
// 获取语音识别结果
QwenTranscriptionTaskResult taskResult = result.getResult();
if (taskResult != null) {
// 获取识别结果的url
String transcriptionUrl = taskResult.getTranscriptionUrl();
// 获取url内对应的结果
HttpURLConnection connection =
(HttpURLConnection) new URL(transcriptionUrl).openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader =
new BufferedReader(new InputStreamReader(connection.getInputStream()));
// 格式化输出json结果
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(gson.fromJson(reader, JsonObject.class)));
}
} catch (Exception e) {
System.out.println("error: " + e);
}
}
}
Python SDK
import json
import os
import sys
from http import HTTPStatus
import dashscope
from dashscope.audio.qwen_asr import QwenTranscription
from dashscope.api_entities.dashscope_response import TranscriptionResponse
# run the transcription script
if __name__ == '__main__':
# 新加坡地域和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
# 以下为新加坡地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
task_response = QwenTranscription.async_call(
model='qwen3-asr-flash-filetrans',
file_url='{YOUR_AUDIO_URL}',
#language="",
enable_itn=False,
enable_words=True
)
print(f'task_response: {task_response}')
print(task_response.output.task_id)
query_response = QwenTranscription.fetch(task=task_response.output.task_id)
print(f'query_response: {query_response}')
task_result = QwenTranscription.wait(task=task_response.output.task_id)
print(f'task_result: {task_result}')
下载识别结果
任务成功后,查询接口返回的 output.result.transcription_url 指向公网可下载的 JSON 文件,包含完整识别结果。该 URL 默认在 24 小时内有效,请及时下载并落盘保存。
# 将 {transcription_url} 替换为查询接口返回的 transcription_url 值
curl -sS '{transcription_url}' -o transcription.json
cat transcription.json | jq .
提交任务
URL
新加坡
HTTP请求地址:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription
SDK调用配置的base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
华北2(北京)
HTTP请求地址:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription
SDK调用配置的base_url:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
重要阿里云百炼为华北2(北京)、新加坡地域推出了业务空间专属域名,能够为推理请求提供卓越的性能和更高的稳定性,建议迁移至新域名:
- 华北2(北京)地域:从
dashscope.aliyuncs.com迁移至{WorkspaceId}.cn-beijing.maas.aliyuncs.com - 新加坡地域:从
dashscope-intl.aliyuncs.com迁移至{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId}需要替换为真实的Workspace ID。现有域名仍可正常使用。
请求参数model 模型名称。仅适用于千问3-ASR-Flash-Filetrans模型。 input parameters | cURLJavaSDK示例请参见调用示例。 PythonSDK示例请参见调用示例。 |
响应参数request_id 本次调用的唯一标识符。 output 调用结果信息。 | |
获取任务执行结果
URL
新加坡
HTTP请求地址:GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
SDK调用配置的base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
华北2(北京)
HTTP请求地址:GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
SDK调用配置的base_url:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
调用时请将{WorkspaceId}替换为真实的Workspace ID。
重要阿里云百炼为华北2(北京)、新加坡地域推出了业务空间专属域名,能够为推理请求提供卓越的性能和更高的稳定性,建议迁移至新域名:
- 华北2(北京)地域:从
dashscope.aliyuncs.com迁移至{WorkspaceId}.cn-beijing.maas.aliyuncs.com - 新加坡地域:从
dashscope-intl.aliyuncs.com迁移至{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId}需要替换为真实的Workspace ID。现有域名仍可正常使用。
请求参数task_id 任务ID。将提交任务返回结果中的task_id作为参数传入,查询语音识别结果。 | cURLJavaSDK示例请参见调用示例。 PythonSDK示例请参见调用示例。 |
响应参数request_id 本次调用的唯一标识符。 output 调用结果信息。 | |
异步调用识别结果说明file_url 被识别的音频文件URL。 audio_info 被识别音频文件相关信息。 transcripts 完整的识别结果列表,每个元素对应一条音轨的识别内容。 | |