拿到百炼语音识别模型名称后,直接塞进聊天代码,可能遇到接口不匹配,也可能只得到任务编号而不是转写文本。本文面向首次做语音转文字的同学,先区分 Qwen-ASR 的短音频同步路线与文件异步路线,再完成一段虚构口述的验收。限定北京地域及 Python SDK,依据 2026 年 10 月 13 日官方说明整理,未在读者账号实测。
1. 先看模型后缀,再选择接入方式
不要把所有带 ASR 的名称当成同一个聊天模型。ASR 指自动语音识别,它的任务是把声音转换成文字;同步与异步是交付结果的方式,决定了调用后应该拿什么、下一步做什么。
官方当前说明把千问3-ASR-Flash 与千问3-ASR-Flash-Filetrans 分开:前者支持 OpenAI 兼容和 DashScope 同步调用;后者走 DashScope 异步调用。Qwen-ASR API 参考 只改 model 字符串而沿用旧方法,不能完成这两条路线的迁移。
| 你的任务 | 本文采用的路线 | 第一次调用后关注什么 |
|---|---|---|
| 先识别一小段录音 | qwen3-asr-flash 的 Chat Completions | 转写文本 |
| 转写整份录音文件 | Filetrans 对应的异步路线 | 任务状态和最终结果 |
| 麦克风边说边出文字 | 另查实时识别能力 | 持续音频连接与事件 |
最短路径是先拿短音频验证 qwen3-asr-flash,成功后再根据真实任务选择是否改用异步文件识别。流式返回文本也不等于持续接收麦克风,它只是改变当前请求结果的输出方式。
2. 用十秒测试录音完成第一条链路
准备一段自己录制、没有其他人声音的测试音频,读一句:“测试订单数量是二十三,仓库叫蓝杉。”十秒只是本文建议的短测试长度,不是平台限制。先听一遍确保可辨认,再放到自己管理的可访问 HTTPS 存储中。
本文采用 URL 输入。将 API Key、北京业务空间的兼容 Base URL 和测试音频地址分别设置为环境变量 DASHSCOPE_API_KEY、BAILIAN_BASE_URL、TEST_AUDIO_URL;不把音频直链与密钥贴到公开报错帖。Python 环境安装 OpenAI SDK 后可参考以下独立示例。
importosfromopenaiimportOpenAI speech=OpenAI(api_key=os.environ["DASHSCOPE_API_KEY"],base_url=os.environ["BAILIAN_BASE_URL"],timeout=60.0,max_retries=0,)result=speech.chat.completions.create(model="qwen3-asr-flash",messages=[{"role":"user","content":[{"type":"input_audio","input_audio":{"data":os.environ["TEST_AUDIO_URL"]}}]}],stream=False,extra_body={"asr_options":{"language":"zh","enable_itn":False}},)print(result.choices[0].message.content)与普通聊天不同,这里提交的是 input_audio 内容项,而不是把 URL 写在普通 text 里。地址可访问、音频符合当前模型要求、账号已开通能力和额度是运行前提。示例可能产生费用,未实际发送;第一次测试不设置复杂背景词,也不连续自动重试。
3. 文本、数字和任务编号要分别理解
转写结果应能覆盖订单数量和仓库名称。不要要求它必须使用与你口述完全一致的标点,这会把排版差异误当成识别失败。可以先人工对照关键词,再用几段不同发音重复检查。
示例关闭了 ITN,即逆文本标准化,用来尽量区分识别内容与数字格式变化。需要把口述数字转换为数字表示时,可以在同一短录音上开启 enable_itn 再比较;格式变化不代表语义变化。具体转换由模型能力决定,不能假定每个专业编号都能自动保真。
如果响应只有 task_id,说明你可能采用了异步路线。按照该路线说明查询任务状态,直到得到成功结果或明确失败原因;任务受理并不代表转写完成。不要把任务编号显示给用户当作识别文本,也不要因为尚未结束就立刻提交同一录音第二遍。
官方非实时识别指南提供了按模型选择同步、异步和输入形式的路径。百炼非实时语音识别指南 长文件的后续查询、结果取回和失败处理应按所选模型示例实现,本文不把短音频脚本扩写为通用长录音方案。
4. 提示词越复杂,未必越能识别
Qwen-ASR 的系统消息用于背景信息和实体词表等上下文,不能照搬普通聊天的角色扮演提示。首次测试建议不设置 system,确保声音本身可识别。随后只增加必要的真实专有名词,避免让模型把一整篇材料当成录音内容。
录音只有中文时可指定 zh;多语言混合或不确定语言时,不要沿用本文的单语配置。若识别出的词与背景词表非常接近,却与原音不符,先移除背景信息重试,再比较同一段声音。通过控制变量找到原因,比不断加“必须准确”更可靠。
接口不匹配时,检查具体模型和协议;文件读取失败时,检查直链有效性以及下载内容是否真的是音频。把文件扩展名从别的格式改成 mp3,不会转换编码。能在浏览器里看到播放页面,也不等于模型能直接读取页面背后的录音。
结果缺字时,先听原音,确认开头结尾有没有被录制工具切掉,再看噪声、重叠说话和音量。不要先提高采样率就宣布质量提高:把低质量录音重新保存为更大文件,无法恢复原本不存在的声音细节。真实业务录音需另外考虑授权、存储和访问控制。
5. 从短样本迁移到真实任务
首次成功后保存一份测试记录:模型名、调用路线、音频时长和格式、是否指定语言、是否启用数字标准化,以及人工对照结果。音频格式和大小限制以当前模型页面为准,不能把另一款语音模型的限制搬过来。
接入长文件时,先选合适的文件异步能力,维护一个任务记录表,把本地文件标识与远端任务编号对应起来。查询到最终失败后再决定重试,查询等待期间不重新提交。只在拿到最终结果后进入摘要或会议纪要工作流,让下游清楚接收的是转写文本。
本文的结束条件是一段真实测试录音返回可对照的文字,而且你能说明为何采用这条接口路线。只有短样本成功,才值得添加长录音、背景词或多语言;遇到报错时,最先贴出来的脱敏信息应是模型名和方法名,而不是整段密钥或音频地址。
参考资料
- 非实时语音识别 Qwen-ASR API 参考,阿里云百炼,更新时间未显示。
- 非实时语音识别指南,阿里云百炼,更新时间未显示。两页访问于 2026-10-13。