全部產品
Search
文件中心

Alibaba Cloud Model Studio:非即時語音辨識(Qwen-ASR)API參考

更新時間:Oct 11, 2026

本文介紹 Qwen-ASR 模型的輸入與輸出參數。可通過OpenAI 相容或DashScope協議調用 API。

模型接入方式

不同模型支援的接入方式不同,請根據下表選擇正確的方式進行整合。

模型

接入方式

千問3-ASR-Flash-Filetrans

僅支援DashScope非同步呼叫方式

千問3-ASR-Flash

OpenAI 相容和DashScope同步調用兩種方式

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。現有網域名稱仍可正常使用。

請求參數

modelstring(必選)

模型名稱。僅適用於千問3-ASR-Flash模型。

messagesarray(必選)

訊息列表。

訊息類型

System Messageobject(可選)

用於為語音辨識提供上下文(Context),如背景文本和實體詞表等參考資訊,不支援設定模型角色等傳統系統提示詞。如果設定系統訊息,請放在messages列表的第一位。

屬性

rolestring(必選)

固定為system。

User Messageobject(必選)

使用者發送給模型的訊息。

屬性

contentarray(必選)

使用者訊息的內容。僅允許設定一組訊息。

屬性

typestring(必選)

固定為input_audio,代表輸入的是音頻。

input_audiostring(必選)

待識別音頻。具體用法請參見調用範例。

千問3-ASR-Flash模型在OpenAI相容模式下支援兩種輸入形式:Base64編碼的檔案和公網可訪問的待識別檔案URL。

使用SDK時,若錄音檔案儲存體在阿里雲OSS,不支援使用以 oss://為首碼的臨時 URL。

使用RESTful API時,若錄音檔案儲存體在阿里雲OSS,支援使用以 oss://為首碼的臨時 URL。但需注意:

重要

  • 臨時 URL 有效期間48小時,到期後無法使用,請勿用於生產環境。
  • 檔案上傳憑證介面限流為 100 QPS 且不支援擴容,請勿用於生產環境、高並發及壓測情境。
  • 生產環境建議使用阿里雲OSS 等穩定儲存,確保檔案長期可用並規避限流問題。

rolestring(必選)

使用者訊息的角色,固定為user。

asr_optionsobject(可選)

用來指定某些功能是否啟用。

asr_options非OpenAI標準參數,若使用OpenAI SDK,請通過extra_body傳入。

屬性

language string(可選)無預設值

若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率。

只能指定一個語種。

若音頻語種不確定,或包含多種語種(例如中英日韓混合),請勿指定該參數。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

enable_itnboolean(可選)預設值為false

是否啟用ITN(Inverse Text Normalization,逆文本標準化)。該功能僅適用於中文和英文音頻。

開啟後,語音辨識結果中的中文數字(如"一百二十三")或英文數字(如"one hundred")將自動轉換為阿拉伯數字(如"123")。

參數值:

  • true:開啟;
  • false:關閉。

streamboolean(可選)預設值為false

是否以流式輸出方式回複。相關文檔:流式輸出

可選值:

  • false:模型產生全部內容後一次性返回;
  • true:邊產生邊輸出,每產生一部分內容即返回一個資料區塊(chunk)。需即時逐個讀取這些塊以拼接完整回複。

推薦設定為true,可提升閱讀體驗並降低逾時風險。

stream_optionsobject(可選)

流式輸出的配置項,僅在 stream 為 true 時生效。

屬性

include_usageboolean(可選)預設值為false

是否在響應的最後一個資料區塊包含Token消耗資訊。

可選值:

  • true:包含;
  • false:不包含。

流式輸出時,Token 消耗資訊僅可出現在響應的最後一個資料區塊。

調用範例

輸入內容:音頻檔案URL

Python SDK

from openai import OpenAI
import os

try:
    client = OpenAI(
        # 新加坡/美國地區和北京地區的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"),
        # 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )

    stream_enabled = False  # 是否開啟流式輸出
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # stream設為False時,不能設定stream_options參數
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("流式輸出內容為:")
        for chunk in completion:
            # 如果stream_options.include_usage為True,則最後一個chunk的choices欄位為空白列表,需要跳過(可以通過chunk.usage擷取 Token 使用量)
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"完整內容為:{full_content}")
    else:
        print(f"非流式輸出內容為:{completion.choices[0].message.content}")
except Exception as e:
    print(f"錯誤資訊:{e}")

Node.js SDK

// 運行前的準備工作:
// Windows/Mac/Linux 通用:
// 1. 確保已安裝 Node.js (建議版本 >= 14)
// 2. 運行以下命令安裝必要的依賴: npm install openai

import OpenAI from "openai";

const client = new OpenAI({
  // 新加坡/美國地區和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
  // 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
  baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});

async function main() {
  try {
    const streamEnabled = false; // 是否開啟流式輸出
    const completion = await client.chat.completions.create({
      model: "qwen3-asr-flash",
      messages: [
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: "{YOUR_AUDIO_URL}"
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream設為False時,不能設定stream_options參數
      // stream_options: {
      //   "include_usage": true
      // },
      asr_options: {
        // language: "zh",
        enable_itn: false
      }
    });

    if (streamEnabled) {
      let fullContent = "";
      console.log("流式輸出內容為:");
      for await (const chunk of completion) {
        console.log(JSON.stringify(chunk));
        if (chunk.choices && chunk.choices.length > 0) {
          const delta = chunk.choices[0].delta;
          if (delta && delta.content) {
            fullContent += delta.content;
          }
        }
      }
      console.log(`完整內容為:${fullContent}`);
    } else {
      console.log(`非流式輸出內容為:${completion.choices[0].message.content}`);
    }
  } catch (err) {
    console.error(`錯誤資訊:${err}`);
  }
}

main();

cURL

以下為新加坡地區的配置,調用時請將{WorkspaceId}替換為真實的Workspace ID,各地區的配置不同。

curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-asr-flash",
    "messages": [
        {
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": "{YOUR_AUDIO_URL}"
                    }
                }
            ],
            "role": "user"
        }
    ],
    "stream":false,
    "asr_options": {
        "enable_itn": false
    }
}'

輸入內容:Base64編碼的音頻檔案

可輸入Base64編碼資料(Data URL),格式為:data:<mediatype>;base64,<data>。

  • <mediatype>:MIME類型

    因音頻格式而異,例如:

    • WAV:audio/wav
    • MP3:audio/mpeg
  • <data>:音頻轉成的Base64編碼的字串

    Base64編碼會增大體積,請控制原檔案大小,確保編碼後仍符合輸入音頻大小限制(10MB)

  • 樣本:data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    點擊查看範例程式碼

    import base64, pathlib
    
    # input.mp3為用於聲音複刻的本地音頻檔案,請替換為自己的音頻檔案路徑,確保其符合音頻要求
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/mpeg;base64,{base64_str}"
    
    import java.nio.file.*;
    import java.util.Base64;
    
    public class Main {
        /**
         * filePath為用於聲音複刻的本地音頻檔案,請替換為自己的音頻檔案路徑,確保其符合音頻要求
         */
        public static String toDataUrl(String filePath) throws Exception {
            byte[] bytes = Files.readAllBytes(Paths.get(filePath));
            String encoded = Base64.getEncoder().encodeToString(bytes);
            return "data:audio/mpeg;base64," + encoded;
        }
    
        // 使用樣本
        public static void main(String[] args) throws Exception {
            System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
        }
    }
    
import base64
from openai import OpenAI
import os
import pathlib

try:
    # 請替換為實際的音頻檔案路徑
    file_path = "{YOUR_AUDIO_FILE}"
    # 請替換為實際的音頻檔案MIME類型
    audio_mime_type = "audio/mpeg"

    file_path_obj = pathlib.Path(file_path)
    if not file_path_obj.exists():
        raise FileNotFoundError(f"音頻檔案不存在: {file_path}")

    base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
    data_uri = f"data:{audio_mime_type};base64,{base64_str}"

    client = OpenAI(
        # 新加坡/美國和北京地區的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"),
        # 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )

    stream_enabled = False  # 是否開啟流式輸出
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": data_uri
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # stream設為False時,不能設定stream_options參數
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("流式輸出內容為:")
        for chunk in completion:
            # 如果stream_options.include_usage為True,則最後一個chunk的choices欄位為空白列表,需要跳過(可以通過chunk.usage擷取 Token 使用量)
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"完整內容為:{full_content}")
    else:
        print(f"非流式輸出內容為:{completion.choices[0].message.content}")
except Exception as e:
    print(f"錯誤資訊:{e}")
// 運行前的準備工作:
// Windows/Mac/Linux 通用:
// 1. 確保已安裝 Node.js (建議版本 >= 14)
// 2. 運行以下命令安裝必要的依賴: npm install openai

import OpenAI from "openai";
import { readFileSync } from 'fs';

const client = new OpenAI({
  // 新加坡/美國和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
  // 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
  baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});

const encodeAudioFile = (audioFilePath) => {
    const audioFile = readFileSync(audioFilePath);
    return audioFile.toString('base64');
};

// 請替換為實際的音頻檔案路徑
const dataUri = `data:audio/mpeg;base64,${encodeAudioFile("{YOUR_AUDIO_FILE}")}`;

async function main() {
  try {
    const streamEnabled = false; // 是否開啟流式輸出
    const completion = await client.chat.completions.create({
      model: "qwen3-asr-flash",
      messages: [
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: dataUri
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream設為False時,不能設定stream_options參數
      // stream_options: {
      //   "include_usage": true
      // },
      asr_options: {
        // language: "zh",
        enable_itn: false
      }
    });

    if (streamEnabled) {
      let fullContent = "";
      console.log("流式輸出內容為:");
      for await (const chunk of completion) {
        console.log(JSON.stringify(chunk));
        if (chunk.choices && chunk.choices.length > 0) {
          const delta = chunk.choices[0].delta;
          if (delta && delta.content) {
            fullContent += delta.content;
          }
        }
      }
      console.log(`完整內容為:${fullContent}`);
    } else {
      console.log(`非流式輸出內容為:${completion.choices[0].message.content}`);
    }
  } catch (err) {
    console.error(`錯誤資訊:${err}`);
  }
}

main();

響應參數

idstring

本次調用的唯一識別碼。

choicesarray

模型的輸出資訊。

屬性

finish_reasonstring

有三種情況:

  • 正在產生時為null;
  • 因模型輸出自然結束,或觸發輸入參數中的stop條件而結束時為stop;
  • 因產生長度過長而結束為length。

indexinteger

當前對象在choices數組中的索引。

messageobject

模型輸出的訊息對象。

屬性

rolestring

輸出訊息的角色,固定為assistant。

contentarray

語音辨識結果。

annotationsarray

輸出標註資訊(如語種)

屬性

languagestring

被識別音訊語種。當請求參數language已指定語種時,該值與所指定的參數一致。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

typestring

固定為audio_info,表示音頻資訊。

emotionstring

被識別音訊情感。支援的情感如下:

  • surprised:驚訝
  • neutral:平靜
  • happy:愉快
  • sad:悲傷
  • disgusted:厭惡
  • angry:憤怒
  • fearful:恐懼

createdinteger

請求建立時的 Unix 時間戳記(秒)。

modelstring

本次請求使用的模型。

objectstring

始終為chat.completion。

usageobject

本次請求的Token消耗資訊。

屬性

completion_tokens integer

模型輸出的 Token 數。

completion_tokens_details object

模型輸出的 Token 細粒度詳情。

屬性

text_tokens integer

模型輸出文本的Token數。

prompt_tokens object

輸入的Token數。

prompt_tokens_details object

輸入的 Token 細粒度詳情。

屬性

audio_tokens integer

輸入音頻長度(Token)。音頻轉換Token規則:每秒音頻轉換為25個Token,不足1秒按1秒計算。

text_tokens integer

無需關注該參數。

seconds integer

音頻時間長度(秒)。

total_tokens integer

輸入和輸出總Token數(total_tokens = completion_tokens + prompt_tokens)。

{
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "annotations": [
                    {
                        "emotion": "neutral",
                        "language": "zh",
                        "type": "audio_info"
                    }
                ],
                "content": "歡迎使用阿里雲。",
                "role": "assistant"
            }
        }
    ],
    "created": 1767683986,
    "id": "chatcmpl-487abe5f-d4f2-9363-a877-xxxxxxx",
    "model": "qwen3-asr-flash",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 12,
        "completion_tokens_details": {
            "text_tokens": 12
        },
        "prompt_tokens": 42,
        "prompt_tokens_details": {
            "audio_tokens": 42,
            "text_tokens": 0
        },
        "seconds": 1,
        "total_tokens": 54
    }
}
data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","created":1767685989,"object":"chat.completion.chunk","usage":null,"choices":[{"logprobs":null,"index":0,"delta":{"content":"","role":"assistant"}}]}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"annotations":[{"type":"audio_info","language":"zh","emotion":"neutral"}],"content":"歡迎","role":null},"index":0}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"annotations":[{"type":"audio_info","language":"zh","emotion":"neutral"}],"content":"使用","role":null},"index":0}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"annotations":[{"type":"audio_info","language":"zh","emotion":"neutral"}],"content":"阿里","role":null},"index":0}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"annotations":[{"type":"audio_info","language":"zh","emotion":"neutral"}],"content":"雲","role":null},"index":0}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"annotations":[{"type":"audio_info","language":"zh","emotion":"neutral"}],"content":"。","role":null},"index":0}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: {"model":"qwen3-asr-flash","id":"chatcmpl-3fb97803-d27f-9289-8889-xxxxx","choices":[{"delta":{"role":null},"index":0,"finish_reason":"stop"}],"created":1767685989,"object":"chat.completion.chunk","usage":null}

data: [DONE]

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。現有網域名稱仍可正常使用。

請求參數

modelstring(必選)

模型名稱。僅適用於千問3-ASR-Flash模型。

messagesarray(必選)

訊息列表。

通過HTTP調用時,請將messages放入 input 對象中。

訊息類型

System Messageobject(可選)

用於為語音辨識提供上下文(Context),如背景文本和實體詞表等參考資訊,不支援設定模型角色等傳統系統提示詞。如果設定系統訊息,請放在messages列表的第一位。

僅千問3-ASR-Flash支援該參數。

屬性

rolestring(必選)

固定為system。

User Messageobject(必選)

使用者發送給模型的訊息。

屬性

contentarray(必選)

使用者訊息的內容。僅允許設定一組訊息。

屬性

audiostring(必選)

待識別音頻。具體用法請參見調用範例。

千問3-ASR-Flash模型在DashScope調用方式下支援三種輸入形式:Base64編碼的檔案、本地檔案絕對路徑、公網可訪問的待識別檔案URL。

使用SDK時,若錄音檔案儲存體在阿里雲OSS,不支援使用以 oss://為首碼的臨時 URL。

使用RESTful API時,若錄音檔案儲存體在阿里雲OSS,支援使用以 oss://為首碼的臨時 URL。但需注意:

重要

  • 臨時 URL 有效期間48小時,到期後無法使用,請勿用於生產環境。
  • 檔案上傳憑證介面限流為 100 QPS 且不支援擴容,請勿用於生產環境、高並發及壓測情境。
  • 生產環境建議使用阿里雲OSS 等穩定儲存,確保檔案長期可用並規避限流問題。

rolestring(必選)

使用者訊息的角色,固定為user。

asr_optionsobject(可選)

用來指定某些功能是否啟用。

僅千問3-ASR-Flash支援該參數。

屬性

language string(可選)無預設值

若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率。

只能指定一個語種。

若音頻語種不確定,或包含多種語種(例如中英日韓混合),請勿指定該參數。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

enable_itnboolean(可選)預設值為false

是否啟用ITN(Inverse Text Normalization,逆文本標準化)。該功能僅適用於中文和英文音頻。

開啟後,語音辨識結果中的中文數字(如"一百二十三")或英文數字(如"one hundred")將自動轉換為阿拉伯數字(如"123")。

參數值:

  • true:開啟;
  • false:關閉。

調用範例

Qwen3-ASR-Flash 支援最長 5 分鐘錄音,輸入支援公網音頻檔案 URL 或本地檔案上傳,可流式返回識別結果。

輸入內容:音頻檔案URL

curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-asr-flash",
    "input": {
        "messages": [
            {
                "content": [
                    {
                        "audio": "{YOUR_AUDIO_URL}"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "asr_options": {
            "enable_itn": false
        }
    }
}'
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", "{YOUR_AUDIO_URL}")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        MultiModalConversationParam param = MultiModalConversationParam.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"))
                // 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
                .model("qwen3-asr-flash")
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
            Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
import os
import dashscope

# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

messages = [
    {"role": "user", "content": [{"audio": "{YOUR_AUDIO_URL}"}]}
]

response = dashscope.MultiModalConversation.call(
    # 新加坡/美國地區和北京地區的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"),
    # 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        #"language": "zh", # 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        "enable_itn":False
    }
)
print(response)

輸入內容:Base64編碼的音頻檔案

可輸入Base64編碼資料(Data URL),格式為:data:<mediatype>;base64,<data>。

  • <mediatype>:MIME類型

    因音頻格式而異,例如:

    • WAV:audio/wav
    • MP3:audio/mpeg
  • <data>:音頻轉成的Base64編碼的字串

    Base64編碼會增大體積,請控制原檔案大小,確保編碼後仍符合輸入音頻大小限制(10MB)

  • 樣本:data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    點擊查看範例程式碼

    import base64, pathlib
    
    # input.mp3為待識別的本地音頻檔案,請替換為自己的音頻檔案路徑,確保其符合音頻要求
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/mpeg;base64,{base64_str}"
    
    import java.nio.file.*;
    import java.util.Base64;
    
    public class Main {
        /**
         * filePath為待識別的本地音頻檔案,請替換為自己的音頻檔案路徑,確保其符合音頻要求
         */
        public static String toDataUrl(String filePath) throws Exception {
            byte[] bytes = Files.readAllBytes(Paths.get(filePath));
            String encoded = Base64.getEncoder().encodeToString(bytes);
            return "data:audio/mpeg;base64," + encoded;
        }
    
        // 使用樣本
        public static void main(String[] args) throws Exception {
            System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
        }
    }
    
import base64
import dashscope
import os
import pathlib

# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# 請替換為實際的音頻檔案路徑
file_path = "{YOUR_AUDIO_FILE}"
# 請替換為實際的音頻檔案MIME類型
audio_mime_type = "audio/mpeg"

file_path_obj = pathlib.Path(file_path)
if not file_path_obj.exists():
    raise FileNotFoundError(f"音頻檔案不存在: {file_path}")

base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
data_uri = f"data:{audio_mime_type};base64,{base64_str}"

messages = [
    {"role": "user", "content": [{"audio": data_uri}]}
]
response = dashscope.MultiModalConversation.call(
    # 新加坡/美國和北京地區的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"),
    # 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        "enable_itn":False
    }
)
print(response)
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    // 請替換為實際的音頻檔案路徑
    private static final String AUDIO_FILE = "{YOUR_AUDIO_FILE}";
    // 請替換為實際的音頻檔案MIME類型
    private static final String AUDIO_MIME_TYPE = "audio/mpeg";

    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException, IOException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", toDataUrl())))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        MultiModalConversationParam param = MultiModalConversationParam.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"))
                // 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
                .model("qwen3-asr-flash")
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
            Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }

    // 產生 data URI
    public static String toDataUrl() throws IOException {
        byte[] bytes = Files.readAllBytes(Paths.get(AUDIO_FILE));
        String encoded = Base64.getEncoder().encodeToString(bytes);
        return "data:" + AUDIO_MIME_TYPE + ";base64," + encoded;
    }
}

輸入內容:本地音頻檔案絕對路徑

使用 DashScope SDK 處理本地音頻檔案時需傳入檔案路徑。請參考下表,結合調用方式與作業系統建立對應路徑。

系統

SDK

傳入的檔案路徑

樣本

Linux或macOS系統

Python SDK

file://{檔案的絕對路徑}

file:///home/images/test.png

Java SDK

Windows系統

Python SDK

file://{檔案的絕對路徑}

file://D:/images/test.png

Java SDK

file:///{檔案的絕對路徑}

file:///D:/images/test.png

重要本地檔案調用上限 100 QPS,不支援擴容,不適合生產環境、高並發或壓測情境;如需更高並發,請將檔案上傳至 OSS 並通過 URL 方式調用。

import os
import dashscope

# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# 請用您的本地音訊絕對路徑替換 ABSOLUTE_PATH/{YOUR_AUDIO_FILE}
audio_file_path = "file://ABSOLUTE_PATH/{YOUR_AUDIO_FILE}"

messages = [
    {"role": "user", "content": [{"audio": audio_file_path}]}
]
response = dashscope.MultiModalConversation.call(
    # 新加坡/美國地區和北京地區的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"),
    # 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        "enable_itn":False
    }
)
print(response)
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        // 請用您本地檔案的絕對路徑替換掉ABSOLUTE_PATH/{YOUR_AUDIO_FILE}
        String localFilePath = "file://ABSOLUTE_PATH/{YOUR_AUDIO_FILE}";
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", localFilePath)))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        MultiModalConversationParam param = MultiModalConversationParam.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"))
                // 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
                .model("qwen3-asr-flash")
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
            Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

流式輸出

模型逐步產生中間結果,最終結果由其拼接而成。非流式調用需等待全部結果產生後一次性返回;流式調用邊產生邊返回,可顯著降低首字延遲。根據調用方式選擇對應的流式參數:

  • DashScope Python SDK方式:設定stream參數為true。
  • DashScope Java SDK方式:需要通過streamCall介面調用。
  • DashScope HTTP方式:需要在Header中指定X-DashScope-SSE為enable。

Python SDK

import os
import dashscope

# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

messages = [
    {"role": "user", "content": [{"audio": "{YOUR_AUDIO_URL}"}]}
]
response = dashscope.MultiModalConversation.call(
    # 新加坡/美國地區和北京地區的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"),
    # 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        "enable_itn":False
    },
    stream=True
)

for response in response:
    try:
        print(response["output"]["choices"][0]["message"].content[0]["text"])
    except Exception as e:
        print(f"解析響應失敗:{e}")

Java SDK

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", "{YOUR_AUDIO_URL}")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // 可選,若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率
        MultiModalConversationParam param = MultiModalConversationParam.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"))
                // 若使用美國地區的模型,需在模型後面加上“-us”尾碼,例如qwen3-asr-flash-us
                .model("qwen3-asr-flash")
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        Flowable<MultiModalConversationResult> resultFlowable = conv.streamCall(param);
        resultFlowable.blockingForEach(item -> {
            try {
                System.out.println(item.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
            } catch (Exception e){
                System.out.println("解析響應失敗:" + e.getMessage());
                System.exit(1);
            }
        });
    }

    public static void main(String[] args) {
        try {
            // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
            Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

cURL

以下為新加坡地區的配置,調用時請將{WorkspaceId}替換為真實的Workspace ID,各地區的配置不同。

curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
    "model": "qwen3-asr-flash",
    "input": {
        "messages": [
            {
                "content": [
                    {
                        "audio": "{YOUR_AUDIO_URL}"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "incremental_output": true,
        "asr_options": {
            "enable_itn": false
        }
    }
}'

響應參數

request_idstring

本次調用的唯一識別碼。

Java SDK返回參數為requestId。

outputobject

調用結果資訊。

屬性

choicesarray

模型的輸出資訊。當result_format為message時返回choices參數。

屬性

finish_reasonstring

有三種情況:

  • 正在產生時為null;
  • 因模型輸出自然結束,或觸發輸入參數中的stop條件而結束時為stop;
  • 因產生長度過長而結束為length。

messageobject

模型輸出的訊息對象。

屬性

rolestring

輸出訊息的角色,固定為assistant。

contentarray

輸出訊息的內容。

屬性

textstring

語音辨識結果。

annotationsarray

輸出標註資訊(如語種)

屬性

languagestring

被識別音訊語種。當請求參數language已指定語種時,該值與所指定的參數一致。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

typestring

固定為audio_info,表示音頻資訊。

emotionstring

被識別音訊情感。支援的情感如下:

  • surprised:驚訝
  • neutral:平靜
  • happy:愉快
  • sad:悲傷
  • disgusted:厭惡
  • angry:憤怒
  • fearful:恐懼

usageobject

本次請求的Token消耗資訊。

屬性

input_tokens_details object

千問3-ASR-Flash輸入內容長度(Token)。

屬性

text_tokens integer

無需關注該參數。

output_tokens_details object

千問3-ASR-Flash輸出內容長度(Token)。

屬性

text_tokens integer

千問3-ASR-Flash輸出的識別結果文本長度(Token)。

seconds integer

千問3-ASR-Flash音頻時間長度(秒)。

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "annotations": [
                        {
                            "language": "zh",
                            "type": "audio_info",
                            "emotion": "neutral"
                        }
                    ],
                    "content": [
                        {
                            "text": "歡迎使用阿里雲。"
                        }
                    ],
                    "role": "assistant"
                }
            }
        ]
    },
    "usage": {
        "input_tokens_details": {
            "text_tokens": 0
        },
        "output_tokens_details": {
            "text_tokens": 6
        },
        "seconds": 1
    },
    "request_id": "568e2bf0-d6f2-97f8-9f15-a57b11dc6977"
}

DashScope非同步呼叫

流程說明

與OpenAI相容模式或DashScope同步調用(均為一次請求、立即返回結果)不同,非同步呼叫專為處理長音頻檔案或耗時較長的任務設計,該模式採用“提交-輪詢”的兩步式流程,避免了因長時間等待而導致的請求逾時:

  1. 第一步:提交任務

    • 用戶端發起一個非同步處理請求。
    • 伺服器驗證請求後,不會立即執行任務,而是返回一個唯一的 task_id,表示任務已成功建立。
  2. 第二步:擷取結果

    • 用戶端使用擷取到的 task_id,通過輪詢方式反覆調用結果查詢介面。
    • 當任務處理完成後,結果查詢介面將返回最終的識別結果。

您可以根據Integration Environment選擇使用SDK或直接調用RESTful API。

  • 使用 SDK(範例程式碼請參見調用範例,請求參數請參見提交任務的請求參數請求參數,返回結果請參見非同步呼叫識別結果說明)

    SDK封裝了底層的API調用細節,提供了更便捷的編程體驗。

    1. 提交任務:調用 async_call() (Python) 或 asyncCall() (Java) 方法提交任務。此方法將返回一個包含 task_id 的任務對象。
    2. 擷取結果:使用上一步返回的任務對象或 task_id,調用 fetch() 方法擷取結果。SDK內部會自動處理輪詢邏輯,直到任務完成或逾時。
    1. 使用 RESTful API

    直接調用HTTP介面提供了最大的靈活性。

    1. 提交任務,如果請求成功,響應參數響應參數中將包含一個 task_id。
    2. 使用上一步擷取的 task_id,擷取任務執行結果。

完整範例

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。現有網域名稱仍可正常使用。

請求參數

modelstring(必選)

模型名稱。僅適用於千問3-ASR-Flash-Filetrans模型。

inputobject(必選)

屬性

file_url string(必選)

待識別音頻檔案URL,URL必須公網可訪問。

使用SDK時,若錄音檔案儲存體在阿里雲OSS,不支援使用以 oss://為首碼的臨時 URL。

使用RESTful API時,若錄音檔案儲存體在阿里雲OSS,支援使用以 oss://為首碼的臨時 URL。但需注意:

重要

  • 臨時 URL 有效期間48小時,到期後無法使用,請勿用於生產環境。
  • 檔案上傳憑證介面限流為 100 QPS 且不支援擴容,請勿用於生產環境、高並發及壓測情境。
  • 生產環境建議使用阿里雲OSS 等穩定儲存,確保檔案長期可用並規避限流問題。

parametersobject(可選)

屬性

language string(可選)無預設值

若已知音訊語種,可通過該參數指定待識別語種,以提升識別準確率。

只能指定一個語種。

若音頻語種不確定,或包含多種語種(例如中英日韓混合),請勿指定該參數。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

enable_itnboolean(可選)預設值為false

是否啟用ITN(Inverse Text Normalization,逆文本標準化)。該功能僅適用於中文和英文音頻。

開啟後,語音辨識結果中的中文數字(如"一百二十三")或英文數字(如"one hundred")將自動轉換為阿拉伯數字(如"123")。

參數值:

  • true:開啟;
  • false:關閉。

enable_wordsboolean(可選)預設值為false

控制是否返回字層級時間戳記:

  • false:返回句級時間戳記

  • true:返回字級時間戳記

    字層級時間戳記僅支援以下語種:中文、英語、日語、韓語、德語、法語、西班牙語、意大利語、葡萄牙語、俄語,其他語種可能無法保證準確性

同時,該參數還影響斷句規則:

  • false:基於 VAD(語音活動檢測)斷句
  • true:基於 VAD + 標點符號斷句

channel_idarray(可選)預設值為[0]

指定在多音軌音頻檔案中需要識別的音軌索引,索引從 0 開始。例如,[0] 表示識別第一個音軌,[0, 1] 表示同時識別第一和第二個音軌。如果省略此參數,則預設處理第一個音軌。

重要指定的每一個音軌都將獨立計費。例如,為單個檔案請求 [0, 1] 會產生兩筆獨立的費用。

cURL

# ======= 重要提示 =======
# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
# 新加坡地區和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 執行時請刪除該注釋 ===

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "qwen3-asr-flash-filetrans",
    "input": {
        "file_url": "{YOUR_AUDIO_URL}"
    },
    "parameters": {
        "channel_id":[
            0
        ],
        "enable_itn": false
    }
}'

Java

SDK樣本請參見調用範例。

import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import okhttp3.*;

import java.io.IOException;

public class Main {
    // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
    private static final String API_URL = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription";

    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();
        Gson gson = new Gson();

        /*String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "{YOUR_AUDIO_URL}"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "language": "zh",
                        "corpus": {
                            "text": ""
                        }
                    }
                }
                """;*/
        String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "{YOUR_AUDIO_URL}"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false
                    }
                }
                """;

        RequestBody body = RequestBody.create(payloadJson, MediaType.get("application/json; charset=utf-8"));
        Request request = new Request.Builder()
                .url(API_URL)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .addHeader("X-DashScope-Async", "enable")
                .post(body)
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful() && response.body() != null) {
                String respBody = response.body().string();
                // 用 Gson 解析 JSON
                ApiResponse apiResp = gson.fromJson(respBody, ApiResponse.class);
                if (apiResp.output != null) {
                    System.out.println("task_id: " + apiResp.output.taskId);
                } else {
                    System.out.println(respBody);
                }
            } else {
                System.out.println("task failed! HTTP code: " + response.code());
                if (response.body() != null) {
                    System.out.println(response.body().string());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    static class ApiResponse {
        @SerializedName("request_id")
        String requestId;

        Output output;
    }

    static class Output {
        @SerializedName("task_id")
        String taskId;

        @SerializedName("task_status")
        String taskStatus;
    }
}

Python

SDK樣本請參見調用範例。

import requests
import json
import os

# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription"

# 新加坡和北京地區的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")

headers = {
    "Authorization": f"Bearer {DASHSCOPE_API_KEY}",
    "Content-Type": "application/json",
    "X-DashScope-Async": "enable"
}

payload = {
    "model": "qwen3-asr-flash-filetrans",
    "input": {
        "file_url": "{YOUR_AUDIO_URL}"
    },
    "parameters": {
        "channel_id": [0],
        # "language": "zh",
        "enable_itn": False
        # "corpus": {
        #     "text": ""
        # }
    }
}

response = requests.post(url, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
    print(f"task_id: {response.json()["output"]["task_id"]}")
else:
    print("task failed!")
    print(response.json())

響應參數

request_idstring

本次調用的唯一識別碼。

outputobject

調用結果資訊。

屬性

task_idstring

任務ID。該ID在查詢語音辨識任務介面中作為請求參數傳入。

task_statusstring

任務狀態:

  • PENDING:任務排隊中
  • RUNNING:任務處理中
  • SUCCEEDED:任務執行成功
  • FAILED:任務執行失敗
  • UNKNOWN:任務不存在或狀態未知
{
    "request_id": "92e3decd-0c69-47a8-************",
    "output": {
        "task_id": "8fab76d0-0eed-4d20-************",
        "task_status": "PENDING"
    }
}

擷取任務執行結果

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_idstring(必選)

任務ID。將提交任務返回結果中的task_id作為參數傳入,查詢語音辨識結果。

cURL

# ======= 重要提示 =======
# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
# 新加坡地區和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 執行時請刪除該注釋 ===

curl --location --request GET 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json"

Java

SDK樣本請參見調用範例。

import okhttp3.*;

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        // 替換為實際的task_id
        String taskId = "xxx";
        // 新加坡地區和北京地區的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");

        // 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
        String apiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/" + taskId;

        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(apiUrl)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .get()
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.body() != null) {
                System.out.println(response.body().string());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Python

SDK樣本請參見調用範例。

import os
import requests

# 新加坡地區和北京地區的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")

# 替換為實際的task_id
task_id = "xxx"
# 以下為新加坡地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
url = f"https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}"

headers = {
    "Authorization": f"Bearer {DASHSCOPE_API_KEY}",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
print(response.json())

響應參數

request_idstring

本次調用的唯一識別碼。

outputobject

調用結果資訊。

屬性

task_idstring

任務ID。該ID在查詢語音辨識任務介面中作為請求參數傳入。

task_statusstring

任務狀態:

  • PENDING:任務排隊中
  • RUNNING:任務處理中
  • SUCCEEDED:任務執行成功
  • FAILED:任務執行失敗
  • UNKNOWN:任務不存在或狀態未知

resultobject

語音辨識結果。

屬性

transcription_urlstring

識別結果檔案的下載 URL,連結有效期間為 24 小時。到期後無法查詢任務,也無法通過先前的 URL 下載結果。
識別結果以 JSON 檔案儲存,可通過該連結下載檔案,或直接使用 HTTP 要求讀取檔案內容。

詳情參見非同步呼叫識別結果說明。

submit_timestring

任務提交時間。

schedule_timestring

任務調度時間,即開始執行時間。

end_timestring

任務結束時間。

task_metricsobject

任務指標,包含子任務狀態的統計資訊。

屬性

TOTALinteger

子任務總數。

SUCCEEDEDinteger

子任務成功數。

FAILEDinteger

子任務失敗數。

codestring

錯誤碼,僅在任務失敗時返回。

messagestring

錯誤資訊,僅任務失敗時返回。

usageobject

本次請求的Token消耗資訊。

屬性

seconds integer

千問3-ASR-Flash音頻時間長度(秒)。

{
    "request_id": "6769df07-2768-4fb0-ad59-************",
    "output": {
        "task_id": "9be1700a-0f8e-4778-be74-************",
        "task_status": "RUNNING",
        "submit_time": "2025-10-27 14:19:31.150",
        "scheduled_time": "2025-10-27 14:19:31.233",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 0,
            "FAILED": 0
        }
    }
}
{
    "request_id": "1dca6c0a-0ed1-4662-aa39-************",
    "output": {
        "task_id": "8fab76d0-0eed-4d20-929f-************",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-10-27 13:57:45.948",
        "scheduled_time": "2025-10-27 13:57:46.018",
        "end_time": "2025-10-27 13:57:47.079",
        "result": {
            "transcription_url": "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/pre/pre-funasr-mlt-v1/20251027/13%3A57/7a3a8236-ffd1-4099-a280-0299686ac7da.json?Expires=1761631066&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE&response-content-disposition=attachment%3Bfilename%3D7a3a8236-ffd1-4099-a280-0299686ac7da.json"
        }
    },
    "usage": {
        "seconds": 3
    }
}
{
    "request_id": "3d141841-858a-466a-9ff9-************",
    "output": {
        "task_id": "c58c7951-7789-4557-9ea3-************",
        "task_status": "FAILED",
        "submit_time": "2025-10-27 15:06:06.915",
        "scheduled_time": "2025-10-27 15:06:06.967",
        "end_time": "2025-10-27 15:06:07.584",
        "code": "FILE_403_FORBIDDEN",
        "message": "FILE_403_FORBIDDEN"
    }
}

非同步呼叫識別結果說明

file_url string

被識別的音頻檔案URL。

audio_infoobject

被識別音頻檔案相關資訊。

屬性

format string

音頻格式。

sample_rate integer

音頻採樣率。

transcriptsarray

完整的識別結果清單,每個元素對應一條音軌的識別內容。

屬性

channel_idinteger

音軌索引,以0為起始。

textstring

識別結果文本。

sentencesobject

句子層級的識別結果清單。

屬性

begin_timeinteger

句子開始時間戳(毫秒)。

end_timeinteger

句子結束時間戳記(毫秒)。

textstring

識別結果文本。

sentence_idinteger

句子索引,以0為起始。

languagestring

被識別音訊語種。當請求參數language已指定語種時,該值與所指定的參數一致。

取值範圍

  • zh:中文(普通話、四川話、閩南語、吳語)
  • yue:粵語
  • en:英文
  • ja:日語
  • de:德語
  • ko:韓語
  • ru:俄語
  • fr:法語
  • pt:葡萄牙語
  • ar:阿拉伯語
  • it:意大利語
  • es:西班牙語
  • hi:印地語
  • id:印尼語
  • th:泰語
  • tr:土耳其語
  • uk:烏克蘭語
  • vi:越南語
  • cs:捷克語
  • da:丹麥語
  • fil:菲律賓語
  • fi:芬蘭語
  • is:冰島語
  • ms:馬來語
  • no:挪威語
  • pl:波蘭語
  • sv:瑞典語

emotionstring

被識別音訊情感。支援的情感如下:

  • surprised:驚訝
  • neutral:平靜
  • happy:愉快
  • sad:悲傷
  • disgusted:厭惡
  • angry:憤怒
  • fearful:恐懼

wordsobject

詞層級的識別結果清單。當請求參數enable_words設為true時展示該結果。

屬性

begin_timeinteger

開始時間戳(毫秒)。

end_timeinteger

結束時間戳記(毫秒)。

textstring

識別結果文本。

punctuationstring

標點符號。

{
    "file_url": "https://***.wav",
    "audio_info": {
        "format": "wav",
        "sample_rate": 16000
    },
    "transcripts": [
        {
            "channel_id": 0,
            "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.I am honored to have been chosen to speak before my classmates as well as the students across America today.",
            "sentences": [
                {
                    "sentence_id": 0,
                    "begin_time": 240,
                    "end_time": 6720,
                    "language": "en",
                    "emotion": "happy",
                    "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.",
                    "words": [
                        {
                            "begin_time": 240,
                            "end_time": 1120,
                            "text": "Senior ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 1120,
                            "end_time": 1200,
                            "text": "staff",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 1680,
                            "end_time": 1920,
                            "text": " Principal ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2000,
                            "end_time": 2320,
                            "text": "Doris ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2320,
                            "end_time": 2960,
                            "text": "Jackson",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 3360,
                            "end_time": 3840,
                            "text": " Wakefield ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 3840,
                            "end_time": 4480,
                            "text": "faculty",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 4800,
                            "end_time": 4960,
                            "text": " and ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 4960,
                            "end_time": 5040,
                            "text": "of ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5040,
                            "end_time": 5520,
                            "text": "course ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5520,
                            "end_time": 5680,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5760,
                            "end_time": 6000,
                            "text": "fellow ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 6000,
                            "end_time": 6720,
                            "text": "classmates",
                            "punctuation": "."
                        }
                    ]
                },
                {
                    "sentence_id": 1,
                    "begin_time": 12268,
                    "end_time": 17388,
                    "language": "en",
                    "emotion": "neutral",
                    "text": "I am honored to have been chosen to speak before my classmates as well as the students across America today.",
                    "words": [
                        {
                            "begin_time": 12268,
                            "end_time": 12428,
                            "text": "I ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12428,
                            "end_time": 12508,
                            "text": "am ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12588,
                            "end_time": 12828,
                            "text": "honored ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 12908,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 13068,
                            "text": "have ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13068,
                            "end_time": 13228,
                            "text": "been ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13228,
                            "end_time": 13628,
                            "text": "chosen ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13628,
                            "end_time": 13708,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13708,
                            "end_time": 14028,
                            "text": "speak ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14028,
                            "end_time": 14268,
                            "text": "before ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14268,
                            "end_time": 14428,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14428,
                            "end_time": 15148,
                            "text": "classmates ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15308,
                            "end_time": 15468,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15468,
                            "end_time": 15628,
                            "text": "well ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15628,
                            "end_time": 15788,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 15788,
                            "text": "the ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 16188,
                            "text": "students ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16188,
                            "end_time": 16588,
                            "text": "across ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16588,
                            "end_time": 16988,
                            "text": "America ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16988,
                            "end_time": 17388,
                            "text": "today",
                            "punctuation": "."
                        }
                    ]
                }
            ]
        }
    ]
}