跳转到主要内容
非实时

OpenAI 兼容语音识别

通过 Chat API 进行语音识别

POST
/compatible-mode/v1/chat/completions
from openai import OpenAI
import os

try:
  client = OpenAI(
    # 如果您尚未配置环境变量,请将以下代码行替换为您的 API Key:api_key = "sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.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": "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_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}")
{
  "id": "chatcmpl-487abe5f-d4f2-9363-a877-xxxxxxx",
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "annotations": [
          {
            "emotion": "neutral",
            "language": "zh",
            "type": "audio_info"
          }
        ],
        "content": "欢迎使用千问云。",
        "role": "assistant"
      }
    }
  ],
  "created": 1767683986,
  "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
  }
}

接入方式

根据模型选择对应的接入方式。
模型接入方式
Qwen3-ASR-Flash-Filetrans仅支持 DashScope 异步调用
Qwen3-ASR-FlashOpenAI 兼容接口和 DashScope 同步调用

支持的音频格式

Qwen3-ASR-Flash 支持 Base64 编码音频和可公开访问的 URL 作为输入。

Base64 编码音频输入

使用 Data URL 格式:data:<mediatype>;base64,<data>
  • <mediatype>:MIME 类型。例如 WAV:audio/wav,MP3:audio/mpeg
  • <data>:Base64 编码字符串。编码会增大文件体积,请确保编码后的音频不超过 10 MB。
示例:data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9
  • Python
  • Java
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}"
asr_options 是非标准参数。使用 OpenAI SDK 时,需通过 extra_body 传入。

鉴权

string
header
必填

千问云 API Key。详见获取 API Key

请求体

application/json
string
必填

模型名称。仅支持 Qwen3-ASR-Flash。

object[]
必填

消息列表。

object

是否启用特定功能。非标准 OpenAI 参数——使用 OpenAI SDK 时请通过 extra_body 传递。

boolean
默认值false

是否使用流式输出。建议设置为 true 以提高响应速度并降低超时风险。

object

流式输出配置。仅在 streamtrue 时生效。

响应

200-application/json
string

本次调用的唯一标识符。

chatcmpl-487abe5f-d4f2-9363-a877-xxxxxxx
object[]

模型的输出信息。

[
  {
    "finish_reason": "stop",
    "index": 0,
    "message": {
      "annotations": [
        {
          "emotion": "neutral",
          "language": "zh",
          "type": "audio_info"
        }
      ],
      "content": "欢迎使用千问云。",
      "role": "assistant"
    }
  }
]
integer

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

1767683986
string

本次请求使用的模型。

qwen3-asr-flash
string

始终为 chat.completion

chat.completion
object

Token 消耗信息。