通义千问系列的录音文件识别模型能将录制好的音频精准地转换为文本,支持多语言识别、歌唱识别、噪声拒识等功能。
支持的模型
提供正式版(Qwen3-ASR)和Beta版(Qwen-Audio-ASR)两种模型。正式版具备更强的功能和稳定性,Beta版仅供体验。
Qwen3-ASR
基于通义千问多模态基座,支持多语言识别、歌唱识别、噪声拒识等功能,推荐用于生产环境。
具备如下优势:
多语种高精度识别:支持多语言高精度语音识别。
复杂环境适应:具备应对复杂声学环境的能力,支持自动语种检测与智能非人声过滤。
高精度歌唱识别:即使在伴随背景音乐(BGM)的情况下,也能实现整首歌曲的准确转写。
上下文增强:通过配置上下文提高识别准确率。参见上下文增强。
模型名称 | 版本 | 支持的语言 | 支持的采样率 | 单价 | 免费额度(注) |
qwen3-asr-flash 当前等同qwen3-asr-flash-2025-09-08 | 稳定版 | 中文、英文、日语、德语、韩语、俄语、法语、葡萄牙语、阿拉伯语、意大利语、西班牙语 | 16kHz | 0.00022元/秒 | 36,000秒(10小时) 有效期:百炼开通后180天内 |
qwen3-asr-flash-2025-09-08 | 快照版 |
Qwen-Audio-ASR
基于Qwen-Audio
训练,支持中英文识别,不建议用于生产环境。
Token计算规则:每秒音频转换为25个Token,不足1秒按1秒计算。
模型名称 | 版本 | 支持的语言 | 支持的格式 | 支持的采样率 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | |||||||||
qwen-audio-asr 当前等同qwen-audio-asr-2024-12-04 | 稳定版 | 中文、英文 | 音频 | 16kHz | 8,192 | 6,144 | 2,048 | 目前仅供免费体验。 免费额度用完后不可调用,推荐使用 Qwen3 ASR。 | 10万Token 有效期:阿里云百炼开通后180天内 | |
qwen-audio-asr-latest 始终等同最新快照版 | 最新版 | |||||||||
qwen-audio-asr-2024-12-04 | 快照版 |
功能特性
功能特性 | Qwen3-ASR | Qwen-Audio-ASR |
接入方式 | Java/Python SDK,HTTP API | Java/Python SDK,HTTP API |
多语言 | 中文、英文、日语、德语、韩语、俄语、法语、葡萄牙语、阿拉伯语、意大利语、西班牙语 | 中文、英文 |
上下文增强 | ✅ 通过请求参数 | ❌ |
语种识别 | ✅ 将请求参数 | ❌ |
指定待识别语种 | ✅ 若已知音频的语种,可通过请求参数 | ❌ |
歌唱识别 | ✅ | ❌ |
噪声拒识 | ✅ | ❌ |
ITN(Inverse Text Normalization,逆文本规范化) | ✅ 将请求参数 | ❌ |
标点符号预测 | ✅ | ❌ |
流式输出 | ✅ | ✅ |
音频输入方式 |
| |
待识别音频格式 | aac、amr、avi、aiff、flac、flv、m4a、mkv、mp3、mp4、mpeg、ogg、opus、wav、webm、wma、wmv | |
待识别音频声道 | 单声道 | |
待识别音频采样率 | 16kHz | |
待识别音频大小 | 音频文件大小不超过10MB,且时长不超过3分钟 |
快速开始
暂不支持在线体验,如需使用请通过API接入。下面是调用API的示例代码。
开始前,请确保您已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装最新版DashScope SDK。
Qwen3-ASR
Qwen3-ASR模型为单轮调用模型,不支持多轮对话和自定义Prompt(包括System Prompt和User Prompt)。
录音文件URL
Python
import os
import dashscope
messages = [
{
"role": "system",
"content": [
# 此处用于配置定制化识别的Context
{"text": ""},
]
},
{
"role": "user",
"content": [
{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"},
]
}
]
response = dashscope.MultiModalConversation.call(
# 若没有配置环境变量,请用百炼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_lid":True,
"enable_itn":True
}
)
print(response)
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.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_lid", true);
asrOptions.put("enable_itn", true);
// asrOptions.put("language", "zh"); // 可选,若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-asr-flash")
.message(userMessage)
.message(sysMessage)
.parameter("asr_options", asrOptions)
.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);
}
}
curl
通过System Message的text
参数,可以配置Context进行定制化识别。
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header 'Authorization: Bearer $DASHSCOPE_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"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_lid": true,
"enable_itn": true
}
}
}'
本地文件
使用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 |
Python
import os
import dashscope
# 请用您的本地音频的绝对路径替换 ABSOLUTE_PATH/welcome.mp3
audio_file_path = "file://ABSOLUTE_PATH/welcome.mp3"
messages = [
{
"role": "system",
"content": [
# 此处用于配置定制化识别的Context
{"text": ""},
]
},
{
"role": "user",
"content": [
{"audio": audio_file_path},
]
}
]
response = dashscope.MultiModalConversation.call(
# 若没有配置环境变量,请用百炼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_lid":True,
"enable_itn":True
}
)
print(response)
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.JsonUtils;
public class Main {
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
// 请用您本地文件的绝对路径替换掉ABSOLUTE_PATH/welcome.mp3
String localFilePath = "file://ABSOLUTE_PATH/welcome.mp3";
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("audio", localFilePath)))
.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_lid", true);
asrOptions.put("enable_itn", true);
// asrOptions.put("language", "zh"); // 可选,若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-asr-flash")
.message(userMessage)
.message(sysMessage)
.parameter("asr_options", asrOptions)
.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);
}
}
流式输出
模型并不是一次性生成最终结果,而是逐步地生成中间结果,最终结果由中间结果拼接而成。使用非流式输出方式需要等待模型生成结束后再将生成的中间结果拼接后返回,而流式输出可以实时地将中间结果返回,您可以在模型进行输出的同时进行阅读,减少等待模型回复的时间。您可以根据调用方式来设置不同的参数以实现流式输出:
DashScope Python SDK方式:设置
stream
参数为true。DashScope Java SDK方式:需要通过
streamCall
接口调用。DashScope HTTP方式:需要在Header中指定
X-DashScope-SSE
为enable
。
Python
import os
import dashscope
messages = [
{
"role": "system",
"content": [
# 此处用于配置定制化识别的Context
{"text": ""},
]
},
{
"role": "user",
"content": [
{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"},
]
}
]
response = dashscope.MultiModalConversation.call(
# 若没有配置环境变量,请用百炼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_lid":True,
"enable_itn":True
},
stream=True
)
for response in response:
try:
print(response["output"]["choices"][0]["message"].content[0]["text"])
except:
pass
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 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", "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_lid", true);
asrOptions.put("enable_itn", true);
// asrOptions.put("language", "zh"); // 可选,若已知音频的语种,可通过该参数指定待识别语种,以提升识别准确率
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-asr-flash")
.message(userMessage)
.message(sysMessage)
.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.exit(0);
}
});
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl
通过System Message的text
参数,可以配置Context进行定制化识别。
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header 'Authorization: Bearer $DASHSCOPE_API_KEY' \
--header 'Content-Type: application/json' \
--header 'X-DashScope-SSE: enable' \
--data '{
"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": {
"incremental_output": true,
"asr_options": {
"enable_lid": true,
"enable_itn": true
}
}
}'
Qwen-Audio-ASR
Qwen-Audio-ASR模型为单轮调用模型,不支持多轮对话和自定义Prompt(包括System Prompt和User Prompt)。Beta版本功能有限,且不保证服务稳定,仅供体验。生产环境请务必使用Qwen3-ASR。
录音文件URL
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)
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);
}
}
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"}
]
}
]
}
}'
本地文件
使用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 |
Python
from dashscope import MultiModalConversation
# 请用您的本地音频的绝对路径替换 ABSOLUTE_PATH/welcome.mp3
audio_file_path = "file://ABSOLUTE_PATH/welcome.mp3"
messages = [
{
"role": "user",
"content": [{"audio": audio_file_path}],
}
]
response = MultiModalConversation.call(model="qwen-audio-asr", messages=messages)
print(response)
Java
import java.util.Arrays;
import java.util.HashMap;
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 callWithLocalFile()
throws ApiException, NoApiKeyException, UploadFileException {
// 请用您本地文件的绝对路径替换掉ABSOLUTE_PATH/welcome.mp3
String localFilePath = "file://ABSOLUTE_PATH/welcome.mp3";
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>(){{put("audio", localFilePath);}}
))
.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 {
callWithLocalFile();
} 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
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",
stream=True
)
full_content = ""
print("流式输出内容为:")
for response in response:
try:
print(response["output"]["choices"][0]["message"].content[0]["text"])
full_content += response["output"]["choices"][0]["message"].content[0]["text"]
except:
pass
print(f"完整内容为:{full_content}")
Java
import java.util.Arrays;
import java.util.HashMap;
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 io.reactivex.Flowable;
public class Main {
public static void streamCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// must create mutable map.
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>(){{put("audio", "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3");}}
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model("qwen-audio-asr")
.message(userMessage)
.incrementalOutput(true)
.build();
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(item -> {
try {
System.out.println(item.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
} catch (Exception e){
System.exit(0);
}
});
}
public static void main(String[] args) {
try {
streamCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
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' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen-audio-asr",
"input":{
"messages":[
{
"role": "user",
"content": [
{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}
]
}
]
},
"parameters": {
"incremental_output": true
}
}'
核心用法:上下文增强
Qwen3-ASR支持通过提供上下文(Context),对特定领域的专有词汇(如人名、地名、产品术语)进行识别优化,显著提升转写准确率。此功能远比传统的热词方案更灵活、强大。
长度限制:Context内容不超过 10000 Token。
用法:调用API时,通过System Message的text
参数传入文本即可。
支持的文本类型:包括(但不限于)
热词列表(多种分隔符格式,如热词 1、热词 2、热词 3、热词 4)
任意格式与长度的文本段落或篇章
混合内容:词表与段落的任意组合
无关或无意义文本(包括乱码,对无关文本的容错性极高,几乎不会受到负面影响)
示例:
某段音频正确识别结果应该为“投行圈内部的那些黑话,你了解哪些?首先,外资九大投行,Bulge Bracket,BB ...”。
不使用上下文增强 未使用上下文增强时,部分投行公司名称识别有误,例如 “Bird Rock” 正确应为 “Bulge Bracket”。 识别结果:“投行圈内部的那些黑话,你了解哪些?首先,外资九大投行,Bird Rock,BB ...” | 使用上下文增强 使用上下文增强,对投行公司名称识别正确。 识别结果:“投行圈内部的那些黑话,你了解哪些?首先,外资九大投行,Bulge Bracket,BB ...” |
实现上述效果,可在上下文中加入以下任一内容:
词表:
词表1:
Bulge Bracket、Boutique、Middle Market、国内券商
词表2:
Bulge Bracket Boutique Middle Market 国内券商
词表3:
['Bulge Bracket', 'Boutique', 'Middle Market', '国内券商']
自然语言:
投行分类大揭秘! 最近有不少澳洲的小伙伴问我,到底什么是投行?今天就来给大家科普一下,对于留学生来说,投行主要可以分为四大类:Bulge Bracket、Boutique、Middle Market和国内券商。 Bulge Bracket投行:这就是我们常说的九大投行,包括高盛、摩根士丹利等。这些大行在业务范围和规模上都相当庞大。 Boutique投行:这些投行规模相对较小,但业务领域非常专注。比如Lazard、Evercore等,它们在特定领域有着深厚的专业知识和经验。 Middle Market投行:这类投行主要服务于中型公司,提供并购、IPO等业务。虽然规模不如大行,但在特定市场上有很高的影响力。 国内券商:随着中国市场的崛起,国内券商在国际市场上也扮演着越来越重要的角色。 此外,还有一些Position和business的划分,大家可以参考相关的图表。希望这些信息能帮助大家更好地了解投行,为未来的职业生涯做好准备!
有干扰的自然语言:有些文本和识别内容无关,例如下面这个示例里的人名
投行分类大揭秘! 最近有不少澳洲的小伙伴问我,到底什么是投行?今天就来给大家科普一下,对于留学生来说,投行主要可以分为四大类:Bulge Bracket、Boutique、Middle Market和国内券商。 Bulge Bracket投行:这就是我们常说的九大投行,包括高盛、摩根士丹利等。这些大行在业务范围和规模上都相当庞大。 Boutique投行:这些投行规模相对较小,但业务领域非常专注。比如Lazard、Evercore等,它们在特定领域有着深厚的专业知识和经验。 Middle Market投行:这类投行主要服务于中型公司,提供并购、IPO等业务。虽然规模不如大行,但在特定市场上有很高的影响力。 国内券商:随着中国市场的崛起,国内券商在国际市场上也扮演着越来越重要的角色。 此外,还有一些Position和business的划分,大家可以参考相关的图表。希望这些信息能帮助大家更好地了解投行,为未来的职业生涯做好准备! 王皓轩 李梓涵 张景行 刘欣怡 陈俊杰 杨思远 赵雨桐 黄志强 周子墨 吴雅静 徐若曦 孙浩然 胡瑾瑜 朱晨曦 郭文博 何静姝 高宇航 林逸飞 郑晓燕 梁博文 罗佳琪 宋明哲 谢婉婷 唐子骞 韩梦瑶 冯毅然 曹沁雪 邓子睿 萧望舒 许嘉树 程一诺 袁芷若 彭浩宇 董思淼 范景玉 苏子衿 吕文轩 蒋诗涵 丁沐宸 魏书瑶 任天佑 姜亦辰 华清羽 沈星河 傅瑾瑜 姚星辰 钟灵毓 阎立诚 金若水 陶然亭 戚少商 薛芷兰 邹云帆 熊子昂 柏文峰 易千帆
API参考
模型应用上架及备案
参见应用合规备案。
常见问题
Q:如何为API提供公网可访问的音频URL?
推荐使用阿里云对象存储OSS,它提供了高可用、高可靠的存储服务,并且可以方便地生成公网访问URL。
在公网环境下验证生成的 URL 可正常访问:可在浏览器或通过 curl 命令访问该 URL,确保音频文件能够成功下载或播放(HTTP状态码为200)。
Q:如何检查音频格式是否符合要求?
可以使用开源工具ffprobe快速获取音频的详细信息:
# 查询音频的容器格式(format_name)、编码(codec_name)、采样率(sample_rate)、声道数(channels)
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 your_audio_file.mp3
Q:如何处理音频以满足模型要求?
可以使用开源工具FFmpeg对音频进行裁剪或格式转换:
音频裁剪:从长音频中截取片段
# -i: 输入文件 # -ss 00:01:30: 设置裁剪的起始时间 (从1分30秒开始) # -t 00:02:00: 设置裁剪的持续时长 (裁剪2分钟) # -c copy: 直接复制音频流,不重新编码,速度快 # output_clip.wav: 输出文件 ffmpeg -i long_audio.wav -ss 00:01:30 -t 00:02:00 -c copy output_clip.wav
格式转换
例如,将任意音频转换为16kHz、16-bit、单声道WAV文件
# -i: 输入文件 # -ac 1: 设置声道数为1 (单声道) # -ar 16000: 设置采样率为16000Hz (16kHz) # -sample_fmt s16: 设置采样格式为16-bit signed integer PCM # output.wav: 输出文件 ffmpeg -i input.mp3 -ac 1 -ar 16000 -sample_fmt s16 output.wav