Skip to main content

音频理解(Qwen-Audio)

千问Audio是阿里云研发的大规模音频语言模型,能够理解多种音频(包括说话人语音、自然声音、音乐、歌声等)。模型的核心能力包括音频转录、提取内容摘要、情感分析、音频事件检测及语音聊天等。

  • 适用地域:本文档仅支持中国内地部署模式。接入点与数据存储均位于北京地域,推理计算资源仅限于中国内地。如需使用模型,需使用北京地域的API Key
  • 仅供免费体验:千问 Audio 模型当前仅提供免费体验,免费额度用完后不可调用且不支持付费,对于生产级应用,推荐使用千问Omni作为替代模型。

效果示例

应用场景输入示例输出结果
语音识别与分析
  • 识别人类语音除了语音转文本,还能分析说话人的性别、年龄段、口音、情绪、意图等。
  • 识别自然声音例如汽车喇叭声、钟声、雷声、破碎玻璃声等。
  • 识别音乐分许音乐,识别音乐中的乐器、节奏、调性、风格等。
这段音频里说了什么?说话者是男是女?大致什么年龄?用的是什么语言或方言?听起来什么情绪?这段音频的原始内容是:'这是一封来自四川攀枝花钢铁厂的信',说话者为男性,年龄大约30岁,使用西南官话-重庆话。听起来情绪平静。
音频问答基于音频内容进行提问和回答,例如定位特定信息在音频中出现的时间点。"阿里"出现在这段音频中的什么位置?" 阿里" 从第1.53秒开始出现,至第1.87秒结束。
语音聊天在不提供任何文本指令的情况下,模型可以直接对语音内容做出回应。你可以尝试使用耳塞或者寻找一个相对安静的工作环境来帮助你集中注意力。

支持的模型

模型名称版本上下文长度最大输入最大输出输入成本输出成本免费额度(注)
(Token数)(每百万Token)
qwen-audio-turbo稳定版8,0006,0001,500目前仅供免费体验。
免费额度用完后不可调用,推荐使用Qwen-Omni作为替代模型
10万Token有效期:阿里云百炼开通后90天内
qwen-audio-turbo-latest最新版8,1926,1442,048

音频转换为Token的规则

每一秒钟的音频对应25个Token。若音频时长不足1秒,则按 25 个Token计算。

快速开始

前提条件 千问Audio模型仅支持通过API调用,暂不支持在阿里云百炼的控制台在线体验。 以下是理解在线音频(通过URL指定,非本地音频)的示例代码。了解如何传入本地文件音频文件的限制
  • Python
  • Java
  • curl
import dashscope
import os

messages = [
    {
        "role": "user",
        "content": [
            {"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"},
            {"text": "这段音频在说什么?"}
        ]
    }
]

response = dashscope.MultiModalConversation.call(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model="qwen-audio-turbo",
    messages=messages,
    result_format="message"
    )
print("输出结果为:")
print(response["output"]["choices"][0]["message"].content[0]["text"])
响应示例
输出结果为:
这段音频说的是:'欢迎使用阿里云'

核心能力

语音对话

在不提供任何文本指令的情况下,模型可以直接对语音内容做出回应。例如:如果音频中包含内容“这种环境下适合做什么”,模型会回复适合做的事情。
目前qwen-audio-turbo-latest、qwen2-audio-instruct模型支持语音聊天。
  • Python
  • Java
  • curl
import dashscope
import os

messages = [
    {
        "role": "user",
        "content": [
            {"audio": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20240916/kvkadk/%E6%8E%A8%E8%8D%90%E4%B9%A6.wav"}
        ]
    }
]

response = dashscope.MultiModalConversation.call(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen2-audio-instruct',
    messages=messages)
print("输出结果为:")
print(response["output"]["choices"][0]["message"].content[0]["text"])
响应示例
输出结果为:
当然可以,文学类的书籍种类繁多,根据你的兴趣和偏好,我可以给你一些建议。你喜欢哪种类型的文学作品呢?比如是 现代文学、古典文学、科幻小说、历史小说、诗歌、散文等等。

传入本地文件(Base64 编码或文件路径)

千问 Audio 提供两种本地文件上传方式:Base64 编码上传和文件路径直接上传。可根据文件大小、SDK类型选择上传方式,具体建议请参见如何选择文件上传方式
  • 文件路径传入
  • Base64 编码传入
直接向模型传入文件路径。仅 DashScope Python 和 Java SDK 支持,不支持 HTTP 方式。请您参考下表,结合您的编程语言与操作系统指定文件的路径。两种方式均需满足支持的音频文件中的要求。

指定文件的路径

系统

SDK

传入的文件路径

示例

Linux或macOS系统

Python SDK

file://{文件的绝对路径}

file:///home/images/test.mp3

Java SDK

Windows系统

Python SDK

file://{文件的绝对路径}

file://D:/images/test.mp3

Java SDK

file:///{文件的绝对路径}

file:///D:/images/test.mp3

  • 文件路径传入
  • Base64 编码传入
传入文件路径仅支持 DashScope Python 和 Java SDK方式调用,不支持 HTTP 方式。
  • Python
  • Java
from dashscope import MultiModalConversation

# 将 ABSOLUTE_PATH/welcome.mp3 替换为本地音频的绝对路径,
# 本地文件的完整路径必须以 file:// 为前缀,以保证路径的合法性,例如:file:///home/images/test.mp3
audio_file_path = "file://ABSOLUTE_PATH/welcome.mp3"
messages = [
    {
        "role": "system",
        "content": [{"text": "You are a helpful assistant."}]},
    {
        "role": "user",
        # 在 audio 参数中传入以 file:// 为前缀的文件路径
        "content": [{"audio": audio_file_path}, {"text": "音频里在说什么?"}],
    }
]

response = MultiModalConversation.call(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model="qwen-audio-turbo",
    messages=messages)

print("输出结果为:")
print(response["output"]["choices"][0]["message"].content[0]["text"])
响应示例
输出结果为:
这段音频说的是:'欢迎使用阿里云'。

更多用法

使用限制

支持的音频文件

  • 文件大小:
    • 以公网 URL 和本地路径传入时:音频文件大小不超过10 MB
    • 以 Base64 编码传入时,编码后的字符串大小不超过 10MB。
  • 音频时长:音频的时长限制为不超过30秒,如果超过30秒,模型仅处理前30秒的内容。
  • 文件格式:支持常见编码的音频格式,例如AMR、WAV(CodecID: GSM_MS)、WAV(PCM)、3GP、3GPP、AAC、MP3等。
  • 支持的语言:中文、英语、粤语、法语、意大利语、西班牙语、德语和日语。

音频文件输入方式

  • 公网URL:提供一个公网可访问的文件地址,支持 HTTP 或 HTTPS 协议。可将本地文件上传至OSS上传文件获取临时URL,获取公网 URL。
  • Base64编码传入:将文件转换为 Base64 编码字符串。
  • 本地文件路径传入:直接传入本地文件的路径。

应用于生产环境

因千问 Audio 模型仅供免费体验,存在调用额度限制且不提供付费选项,若计划在生产环境中使用音频理解功能,建议迁移至千问Omni 模型。
  • 迁移优势

    对比项

    千问 Audio

    千问Omni

    商业支持

    免费体验,无付费选项

    支持付费,可用于生产环境

    功能

    音频理解能力

    包含音频在内的全模态能力

    地域限制

    仅支持北京地域

    支持国际版(新加坡)和中国大陆版(北京)地域

  • 迁移方法 千问Omni模型的使用方法与千问 Audio不同,请参见操作指南非实时(Qwen-Omni)

API参考

关于千问Audio 模型的输入输出参数,请参见文本生成

错误码

如果模型调用失败并返回报错信息,请参见错误码进行解决。

常见问题

推荐综合考虑SDK 类型、文件大小以及网络稳定性来选择最合适的上传方式。

音频文件规格

DashScope SDK(Python、Java)

DashScope HTTP

大于 7MB 小于 10 MB

传入本地路径

仅支持公网 URL,建议使用阿里云对象存储服务

小于 7MB

传入本地路径

Base64 编码

如何压缩音频文件到满足要求的大小?

  • 在线工具:使用 Compresss 等在线工具压缩音频文件。
  • 代码实现:使用FFmpeg工具,更多用法请参见FFmpeg官网
# 基础转换命令示例
# -i,作用:输入文件路径,常用值示例:input.mp3

# -b:a,作用: 设置音频比特率 ,
  # 一般取值有64kbps(低质量,适合语音、低带宽流媒体)、128k(中等质量,适合日常音频、播客)、192kbps(高质量,适合音乐、广播)
  # 比特率越高,音质越好,文件体积越大

# -ar,作用:设置音频采样率,表示每秒采样的次数,
 # 一般取值为8000Hz、22050Hz、44100 Hz(标准采样率)
 # 采样率越高,文件体积越大

# -ac,作用:设置音频通道数。一般取值有 1(单声道),2(立体声),单声道文件体积更小

# -y,作用:覆盖已存在文件(无需值)# output.mp4,作用:输出文件路径

ffmpeg -i input.mp3 -b:a 128k -ar 44100 -ac 1 output.mp3 -y
Token Plan
模型体验
  • 3D模型生成
  • 音乐生成
模型调优
模型压缩目录节点
用量统计与性能监控
资产中心
服务支持