录音文件识别(Qwen-ASR)API参考

本文介绍 Qwen-ASR 模型的输入与输出参数。可通过OpenAI 兼容或DashScope协议调用 API。

用户指南:模型介绍和选型请参见录音文件识别-通义千问

模型接入方式

不同模型支持的接入方式不同,请根据下表选择正确的方式进行集成。

模型

接入方式

通义千问3-ASR-Flash-Filetrans

仅支持DashScope异步调用方式

通义千问3-ASR-Flash

OpenAI 兼容DashScope同步调用两种方式

通义千问Audio ASR

仅支持DashScope同步调用方式

OpenAI 兼容

URL

中国内地(北京)

HTTP请求地址:POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

SDK调用配置的base_url:https://dashscope.aliyuncs.com/compatible-mode/v1

国际(新加坡)

HTTP请求地址:POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions

SDK调用配置的base_url:https://dashscope-intl.aliyuncs.com/compatible-mode/v1

请求体

输入内容:音频文件URL

Python SDK

from openai import OpenAI
import os

try:
    client = OpenAI(
        # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
        # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    

    stream_enabled = False  # 是否开启流式输出
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                # 配置定制化识别的 Context
                "content": [{
                    "text": ""
                }],
                "role": "system"
            },
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                        }
                    }
                ],
                "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_usageTrue,则最后一个chunkchoices字段为空列表,需要跳过(可以通过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://help.aliyun.com/zh/model-studio/get-api-key
  // 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
  baseURL: "https://dashscope.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: "system",
          content: [
            { text: "" }
          ]
        },
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream设为False时,不能设置stream_options参数
      // stream_options: {
      //   "include_usage": true
      // },
      extra_body: {
        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

通过System Messagetext参数,可以配置Context进行定制化识别。

# ======= 重要提示 =======
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
# 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
# === 执行时请删除该注释 ===

curl -X POST 'https://dashscope.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": [
                {
                    "text": ""
                }
            ],
            "role": "system"
        },
        {
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    }
                }
            ],
            "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

    • M4A:audio/mp4

  • <data>:音频转成的Base64编码的字符串

    Base64编码会增大体积,请控制原文件大小,确保编码后仍符合输入音频大小限制(10MB)

  • 示例:data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    点击查看示例代码

    import base64, pathlib
    
    # input.mp3为用于声音复刻的本地音频文件,请替换为自己的音频文件路径,确保其符合音频要求
    file_path = pathlib.Path("input.mp3")
    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("input.mp3"));
        }
    }

Python SDK

示例中用到的音频文件为:welcome.mp3

import base64
from openai import OpenAI
import os
import pathlib

try:
    # 请替换为实际的音频文件路径
    file_path = "welcome.mp3"
    # 请替换为实际的音频文件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://help.aliyun.com/zh/model-studio/get-api-key
        # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    

    stream_enabled = False  # 是否开启流式输出
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                # 配置定制化识别的 Context
                "content": [{
                    "text": ""
                }],
                "role": "system"
            },
            {
                "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_usageTrue,则最后一个chunkchoices字段为空列表,需要跳过(可以通过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

示例中用到的音频文件为:welcome.mp3

// 运行前的准备工作:
// 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://help.aliyun.com/zh/model-studio/get-api-key
  // 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
  baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", 
});

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

// 请替换为实际的音频文件路径
const dataUri = `data:audio/mpeg;base64,${encodeAudioFile("welcome.mp3")}`;

async function main() {
  try {
    const streamEnabled = false; // 是否开启流式输出
    const completion = await client.chat.completions.create({
      model: "qwen3-asr-flash",
      messages: [
        {
          role: "system",
          content: [
            { text: "" }
          ]
        },
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: dataUri
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream设为False时,不能设置stream_options参数
      // stream_options: {
      //   "include_usage": true
      // },
      extra_body: {
        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();

model string (必选)

模型名称。仅适用于通义千问3-ASR-Flash模型。

messages array (必选)

消息列表。

消息类型

System Message object(可选)

模型的目标或角色。如果设置系统消息,请放在messages列表的第一位。

属性

content array(必选)

消息内容。仅允许设置一组消息。

属性

text string

指定上下文(Context)。通义千问3-ASR-Flash支持用户在语音识别的同时,提供背景文本、实体词表等参考信息(Context),从而获得定制化的识别结果。

长度限制:不超过10000 Token。

具体介绍请参见上下文增强

role string (必选)

固定为system

User Message object(必选)

用户发送给模型的消息。

属性

content array (必选)

用户消息的内容。仅允许设置一组消息。

属性

type string(必选)

固定为input_audio,代表输入的是音频。

input_audio string(必选)

待识别音频。具体用法请参见快速开始

通义千问3-ASR-Flash模型在OpenAI兼容模式下支持两种输入形式:Base64编码的文件和公网可访问的待识别文件URL。

使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。

使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意:

重要
  • 临时 URL 有效期48小时,过期后无法使用,请勿用于生产环境。

  • 文件上传凭证接口限流为 100 QPS 且不支持扩容,请勿用于生产环境、高并发及压测场景。

  • 生产环境建议使用阿里云OSS 等稳定存储,确保文件长期可用并规避限流问题。

role string (必选)

用户消息的角色,固定为user

asr_options object (可选)

用来指定某些功能是否启用。

asr_optionsOpenAI标准参数,若使用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_itn boolean(可选)默认值为false

是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。

参数值:

  • true:开启;

  • false:关闭。

stream boolean (可选)默认值为false

是否以流式输出方式回复。相关文档:流式输出

可选值:

  • false:模型生成全部内容后一次性返回;

  • true:边生成边输出,每生成一部分内容即返回一个数据块(chunk)。需实时逐个读取这些块以拼接完整回复。

推荐设置为true,可提升阅读体验并降低超时风险。

stream_options object (可选)

流式输出的配置项,仅在 stream 为 true 时生效。

属性

include_usage boolean (可选)默认值为false

是否在响应的最后一个数据块包含Token消耗信息。

可选值:

  • true:包含;

  • false:不包含。

流式输出时,Token 消耗信息仅可出现在响应的最后一个数据块。

返回体

非流式输出

{
    "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]

id string

本次调用的唯一标识符。

choices array

模型的输出信息。

属性

finish_reason string

有三种情况:

  • 正在生成时为null;

  • 因模型输出自然结束,或触发输入参数中的stop条件而结束时为stop;

  • 因生成长度过长而结束为length。

index integer

当前对象在choices数组中的索引。

message object

模型输出的消息对象。

属性

role string

输出消息的角色,固定为assistant。

content array

语音识别结果。

annotations array

输出标注信息(如语种)

属性

language string

被识别音频的语种。当请求参数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:瑞典语

type string

固定为audio_info,表示音频信息。

emotion string

被识别音频的情感。支持的情感如下:

  • surprised:惊讶

  • neutral:平静

  • happy:愉快

  • sad:悲伤

  • disgusted:厌恶

  • angry:愤怒

  • fearful:恐惧

created integer

请求创建时的 Unix 时间戳(秒)。

model string

本次请求使用的模型。

object string

始终为chat.completion

usage object

本次请求的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规则:每秒音频转换为25Token,不足1秒按1秒计算。

text_tokens integer

通义千问3-ASR-Flash使用上下文增强功能时输入的文本长度(Token),上限为10000 Token。

seconds integer

音频时长(秒)。

total_tokens integer

输入和输出总Token数(total_tokens = completion_tokens + prompt_tokens)。

DashScope同步调用

URL

中国内地(北京)

HTTP请求地址:POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

SDK调用配置的base_url:https://dashscope.aliyuncs.com/api/v1

国际(新加坡)

HTTP请求地址:POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

SDK调用配置的base_url:https://dashscope-intl.aliyuncs.com/api/v1

请求体

通义千问3-ASR-Flash

以下示例为音频 URL 识别;本地音频文件识别示例请参见快速开始

cURL

# ======= 重要提示 =======
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
# === 执行时请删除该注释 ===

curl -X POST "https://dashscope.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": [
                    {
                        "text": ""
                    }
                ],
                "role": "system"
            },
            {
                "content": [
                    {
                        "audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "asr_options": {
            "enable_itn": false
        }
    }
}'

Java

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", "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3")))
                .build();

        MultiModalMessage sysMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                // 此处用于配置定制化识别的Context
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .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://help.aliyun.com/zh/model-studio/get-api-key
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-asr-flash")
                .message(sysMessage)
                .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 {
            // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1
            Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

Python

import os
import dashscope

# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'

messages = [
    {"role": "system", "content": [{"text": ""}]},  # 配置定制化识别的 Context
    {"role": "user", "content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}
]

response = dashscope.MultiModalConversation.call(
    # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # 可选,若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率
        "enable_itn":False
    }
)
print(response)

通义千问Audio ASR

以下示例为音频 URL 识别;本地音频文件识别示例请参见快速开始

cURL

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-audio-asr",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [
                    {"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}
                ]
            }
        ]
    }
}'

Java

import java.util.Arrays;
import java.util.Collections;
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.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", "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3")))
                .build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model("qwen-audio-asr")
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

Python

import dashscope

messages = [{"role": "user","content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}]
response = dashscope.MultiModalConversation.call(
    model="qwen-audio-asr",
    messages=messages,
    result_format="message")
print(response)

model string (必选)

模型名称。仅适用于通义千问3-ASR-Flash和通义千问Audio ASR模型。

messages array (必选)

消息列表。

通过HTTP调用时,请将messages 放入 input 对象中。

消息类型

System Message object(可选)

模型的目标或角色。如果设置系统消息,请放在messages列表的第一位。

仅通义千问3-ASR-Flash支持该参数,通义千问Audio ASR不支持

属性

content array(必选)

消息内容。仅允许设置一组消息。

属性

text string

指定上下文(Context)。通义千问3-ASR-Flash支持用户在语音识别的同时,提供背景文本、实体词表等参考信息(Context),从而获得定制化的识别结果。

长度限制:不超过10000 Token。

具体介绍请参见上下文增强

role string (必选)

固定为system

User Message object(必选)

用户发送给模型的消息。

属性

content array (必选)

用户消息的内容。仅允许设置一组消息。

属性

audio string(必选)

待识别音频。具体用法请参见快速开始

通义千问3-ASR-Flash模型在DashScope调用方式下支持三种输入形式:Base64编码的文件、本地文件绝对路径、公网可访问的待识别文件URL。

通义千问Audio ASR模型支持两种输入形式:本地文件绝对路径、公网可访问的待识别文件URL。

使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。

使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意:

重要
  • 临时 URL 有效期48小时,过期后无法使用,请勿用于生产环境。

  • 文件上传凭证接口限流为 100 QPS 且不支持扩容,请勿用于生产环境、高并发及压测场景。

  • 生产环境建议使用阿里云OSS 等稳定存储,确保文件长期可用并规避限流问题。

role string (必选)

用户消息的角色,固定为user

asr_options object (可选)

用来指定某些功能是否启用。

仅通义千问3-ASR-Flash支持该参数,通义千问Audio ASR不支持

属性

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_itn boolean(可选)默认值为false

是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。

参数值:

  • true:开启;

  • false:关闭。

返回体

通义千问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"
}

通义千问Audio ASR

{
    "status_code": 200,
    "request_id": "802e87ff-1875-99cd-96c0-16a50338836a",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "text": "欢迎使用阿里云"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "input_tokens": 74,
        "output_tokens": 7,
        "audio_tokens": 46
    }
}

request_id string

本次调用的唯一标识符。

Java SDK返回参数为requestId。

output object

调用结果信息。

属性

choices array

模型的输出信息。当result_formatmessage时返回choices参数。

属性

finish_reason string

有三种情况:

  • 正在生成时为null;

  • 因模型输出自然结束,或触发输入参数中的stop条件而结束时为stop;

  • 因生成长度过长而结束为length。

message object

模型输出的消息对象。

属性

role string

输出消息的角色,固定为assistant。

content array

输出消息的内容。

属性

text string

语音识别结果。

annotations array

输出标注信息(如语种)

属性

language string

被识别音频的语种。当请求参数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:瑞典语

type string

固定为audio_info,表示音频信息。

emotion string

被识别音频的情感。支持的情感如下:

  • surprised:惊讶

  • neutral:平静

  • happy:愉快

  • sad:悲伤

  • disgusted:厌恶

  • angry:愤怒

  • fearful:恐惧

usage object

本次请求的Token消耗信息。

属性

input_tokens_details object

通义千问3-ASR-Flash输入内容长度(Token)。

属性

text_tokens integer

通义千问3-ASR-Flash使用上下文增强功能时输入的文本长度(Token),上限为10000 Token。

output_tokens_details object

通义千问3-ASR-Flash输出内容长度(Token)。

属性

text_tokens integer

通义千问3-ASR-Flash输出的识别结果文本长度(Token)。

seconds integer

通义千问3-ASR-Flash音频时长(秒)。

input_tokens integer

通义千问Audio ASR输入音频长度(Token)。音频转换Token规则:每秒音频转换为25Token,不足1秒按1秒计算。

output_tokens integer

通义千问Audio ASR输出的识别结果文本长度(Token)。

audio_tokens integer

通义千问Audio ASR输出的音频长度(Token)。音频转换Token规则:每秒音频转换为25Token,不足1秒按1秒计算。

DashScope异步调用

流程说明

OpenAI兼容模式或DashScope同步调用(均为一次请求、立即返回结果)不同,异步调用专为处理长音频文件或耗时较长的任务设计,该模式采用“提交-轮询”的两步式流程,避免了因长时间等待而导致的请求超时:

  1. 第一步:提交任务

    • 客户端发起一个异步处理请求。

    • 服务器验证请求后,不会立即执行任务,而是返回一个唯一的 task_id,表示任务已成功创建。

  2. 第二步:获取结果

    • 客户端使用获取到的 task_id,通过轮询方式反复调用结果查询接口。

    • 当任务处理完成后,结果查询接口将返回最终的识别结果。

您可以根据集成环境选择使用SDK或直接调用RESTful API。

  • 使用 SDK(示例代码请参见快速开始,请求参数请参见提交任务请求体,返回结果请参见异步调用识别结果说明

    SDK封装了底层的API调用细节,提供了更便捷的编程体验。

    1. 提交任务:调用 async_call() (Python) 或 asyncCall() (Java) 方法提交任务。此方法将返回一个包含 task_id 的任务对象。

    2. 获取结果:使用上一步返回的任务对象或 task_id,调用 fetch() 方法获取结果。SDK内部会自动处理轮询逻辑,直到任务完成或超时。

  • 2. 使用 RESTful API

    直接调用HTTP接口提供了最大的灵活性。

    1. 提交任务,如果请求成功,返回体中将包含一个 task_id

    2. 使用上一步获取的 task_id获取任务执行结果

提交任务

URL

中国内地(北京)

HTTP请求地址:POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription

SDK调用配置的base_url:https://dashscope.aliyuncs.com/api/v1

国际(新加坡)

HTTP请求地址:POST https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription

SDK调用配置的base_url:https://dashscope-intl.aliyuncs.com/api/v1

请求体

cURL

# ======= 重要提示 =======
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription
# 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
# === 执行时请删除该注释 ===

curl --location --request POST 'https://dashscope.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": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
    },
    "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 {
    // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription
    private static final String API_URL = "https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription";

    public static void main(String[] args) {
        // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/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": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "language": "zh",
                        "corpus": {
                            "text": ""
                        }
                    }
                }
                """;*/
        String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    },
                    "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

# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription
url = "https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription"

# 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/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": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
    },
    "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())

model string (必选)

模型名称。仅适用于通义千问3-ASR-Flash-Filetrans模型。

input object (必选)

属性

file_url string(必选)

待识别音频文件URL,URL必须公网可访问。

使用SDK时,若录音文件存储在阿里云OSS,不支持使用以 oss://为前缀的临时 URL。

使用RESTful API时,若录音文件存储在阿里云OSS,支持使用以 oss://为前缀的临时 URL。但需注意:

重要
  • 临时 URL 有效期48小时,过期后无法使用,请勿用于生产环境。

  • 文件上传凭证接口限流为 100 QPS 且不支持扩容,请勿用于生产环境、高并发及压测场景。

  • 生产环境建议使用阿里云OSS 等稳定存储,确保文件长期可用并规避限流问题。

parameters object (可选)

属性

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_itn boolean(可选)默认值为false

是否启用ITN(Inverse Text Normalization,逆文本标准化)。该功能仅适用于中文和英文音频。

参数值:

  • true:开启;

  • false:关闭。

text string

指定上下文(Context)。通义千问3-ASR-Flash支持用户在语音识别的同时,提供背景文本、实体词表等参考信息(Context),从而获得定制化的识别结果。

长度限制:不超过10000 Token。

具体介绍请参见上下文增强

channel_id array (可选)默认值为[0]

指定在多音轨音频文件中需要识别的音轨索引,索引从 0 开始。例如,[0] 表示识别第一个音轨,[0, 1] 表示同时识别第一和第二个音轨。如果省略此参数,则默认处理第一个音轨。

重要

指定的每一个音轨都将独立计费。例如,为单个文件请求 [0, 1] 会产生两笔独立的费用。

返回体

{
    "request_id": "92e3decd-0c69-47a8-************",
    "output": {
        "task_id": "8fab76d0-0eed-4d20-************",
        "task_status": "PENDING"
    }
}

request_id string

本次调用的唯一标识符。

output object

调用结果信息。

属性

task_id string

任务ID。该ID在查询语音识别任务接口中作为请求参数传入。

task_status string

任务状态:

  • PENDING:任务排队中

  • RUNNING:任务处理中

  • SUCCEEDED:任务执行成功

  • FAILED:任务执行失败

  • UNKNOWN:任务不存在或状态未知

获取任务执行结果

URL

中国内地(北京)

HTTP请求地址:GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

SDK调用配置的base_url:https://dashscope.aliyuncs.com/api/v1

国际(新加坡)

HTTP请求地址:GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

SDK调用配置的base_url:https://dashscope-intl.aliyuncs.com/api/v1

请求体

cURL

# ======= 重要提示 =======
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id},注意,将{task_id}替换为待查询任务ID
# 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
# === 执行时请删除该注释 ===

curl --location --request GET 'https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--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://help.aliyun.com/zh/model-studio/get-api-key
        // 若没有配置环境变量,请用百炼API Key将下行替换为:String apiKey = "sk-xxx"
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id},注意,将{task_id}替换为待查询任务ID
        String apiUrl = "https://dashscope.aliyuncs.com/api/v1/tasks/" + taskId;

        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(apiUrl)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("X-DashScope-Async", "enable")
                .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://help.aliyun.com/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"
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id},注意,将{task_id}替换为待查询任务ID
url = f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}"

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

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

task_id string (必选)

任务ID。将提交任务返回结果中的task_id作为参数传入,查询语音识别结果。

返回体

RUNNING

{
    "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
        }
    }
}

SUCCEEDED

{
    "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=LTAI**************&Signature=1lKv4RgyWCarRuUdIiErOeOBnwM%3D&response-content-disposition=attachment%3Bfilename%3D7a3a8236-ffd1-4099-a280-0299686ac7da.json"
        }
    },
    "usage": {
        "seconds": 3
    }
}

FAILED

{
    "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"
    }
}

request_id string

本次调用的唯一标识符。

output object

调用结果信息。

属性

task_id string

任务ID。该ID在查询语音识别任务接口中作为请求参数传入。

task_status string

任务状态:

  • PENDING:任务排队中

  • RUNNING:任务处理中

  • SUCCEEDED:任务执行成功

  • FAILED:任务执行失败

  • UNKNOWN:任务不存在或状态未知

result object

语音识别结果。

属性

transcription_url string

识别结果文件的下载 URL,链接有效期为 24 小时。过期后无法查询任务,也无法通过先前的 URL 下载结果。
识别结果以 JSON 文件保存,可通过该链接下载文件,或直接使用 HTTP 请求读取文件内容。

详情参见异步调用识别结果说明

submit_time string

任务提交时间。

schedule_time string

任务调度时间,即开始执行时间。

end_time string

任务结束时间。

task_metrics object

任务指标,包含子任务状态的统计信息。

属性

TOTAL integer

子任务总数。

SUCCEEDED integer

子任务成功数。

FAILED integer

子任务失败数。

code string

错误码,仅在任务失败时返回。

message string

错误信息,仅任务失败时返回。

usage object

本次请求的Token消耗信息。

属性

seconds integer

通义千问3-ASR-Flash音频时长(秒)。

异步调用识别结果说明

{
    "file_url":"https://***.wav",
    "audio_info":{
        "format":"wav",
        "sample_rate": 16000
    },
    "transcripts":[
        {
            "channel_id":0,
            "text":"今天天气还行吧。",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"今天天气还行吧。",
                    "sentence_id":0,
                    "language":"zh",
                    "emotion":"neutral"
                }
            ]
        }
    ]
}

file_url string

被识别的音频文件URL。

audio_info object

被识别音频文件相关信息。

属性

format string

音频格式。

sample_rate integer

音频采样率。

transcripts array

完整的识别结果列表,每个元素对应一条音轨的识别内容。

属性

channel_id integer

音轨索引,以0为起始。

text string

识别结果文本。

sentences object

句子级别的识别结果列表。

属性

begin_timeinteger

句子开始时间戳(毫秒)。

end_timeinteger

句子结束时间戳(毫秒)。

text string

识别结果文本。

sentence_id integer

句子索引,以0为起始。

language string

被识别音频的语种。当请求参数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:瑞典语

emotion string

被识别音频的情感。支持的情感如下:

  • surprised:惊讶

  • neutral:平静

  • happy:愉快

  • sad:悲伤

  • disgusted:厌恶

  • angry:愤怒

  • fearful:恐惧