本文介紹 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,通過輪詢方式反覆調用結果查詢介面。 - 當任務處理完成後,結果查詢介面將返回最終的識別結果。
- 用戶端使用擷取到的
您可以根據Integration Environment選擇使用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/zh/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("X-DashScope-Async", "enable")
.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/zh/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=headers)
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/zh/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/zh/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 完整的識別結果清單,每個元素對應一條音軌的識別內容。 | |