使用 HTTPS 接口提交文本提示词和参考音频,获取生成的音频文件。本文说明请求参数、响应结构和错误处理。
接入前准备
获取 API Key 和业务空间 ID,分别配置为环境变量 DASHSCOPE_API_KEY 和 SFM_WORKSPACE_ID。
请求方法为 HTTPS POST,端点如下,其中 {WorkspaceId} 为业务空间 ID:
请求头
| 字段 | 必填 | 说明 |
|---|---|---|
| Authorization | 是 | Bearer <API Key> |
| Content-Type | 是 | application/json |
调用示例
output.audio.url 下载文件,URL 有效期为 24 小时。不要使用上述示意地址下载。
请求参数
model 位于请求体顶层,其余生成参数位于 input 对象内。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | — | 模型 ID,见支持的模型。 |
| input | object | 是 | — | 音频生成输入。 |
| input.text_prompt | string | 是 | — | 音频描述或待合成文本。参考音频按顺序使用 @voice1、@voice2、@voice3 引用。长度上限见模型表。 |
| input.references | array | 否 | — | 参考音频列表。不传时仅使用文本生成。当前模型最多支持 3 条,每条最长 30 秒、不超过 10 MB。 |
| input.references[].audio_url | string | 条件必填 | — | 服务端可访问的公网音频 URL,与 audio_data 二选一。 |
| input.references[].audio_data | string | 条件必填 | — | 音频 data URI:data:{mime_type};base64,{base64_encoded_data}。与 audio_url 二选一。 |
| input.format | string | 否 | wav | 输出格式:wav、mp3、pcm。不支持 Opus 输出。 |
| input.sample_rate | integer | 否 | 48000 | 输出采样率,单位 Hz:8000、16000、24000、44100、48000。 |
| input.channels | integer | 否 | 2 | 声道数:1(单声道)、2(双声道)。 |
| input.volume | integer | 否 | 50 | 音量,取值范围 [0, 100]。 |
| input.enable_cbr | boolean | 否 | false | 仅 MP3 生效。true 为恒定码率(CBR),false 为可变码率(VBR)。 |
| input.bit_rate | integer | 否 | 128 | 仅 MP3 CBR 生效,单位 kbps。实际输出受采样率及 MP3 编码档位约束,见下表。 |
| input.quality | integer | 否 | 5 | 仅 MP3 VBR 生效。取值范围 [0, 9],0 为最高质量。 |
| input.rate | float | 否 | 1.0 | 语速,取值范围 [0.5, 2.0]。 |
| input.seed | integer | 否 | 42 | 请求级别随机种子。 |
| input.enable_aigc_tag | boolean | 否 | false | 是否在生成音频中添加 AIGC 标识水印。 |
MP3 CBR 码率
| 采样率(Hz) | 输出码率下限(kbps) | 输出码率上限(kbps) |
|---|---|---|
| 8000 | 8 | 64 |
| 16000、24000 | 8 | 160 |
| 44100、48000 | 32 | 320 |
提交参考音频
以下 Python 示例使用两条参考音频生成双人对话。先安装 requests,准备分别包含两位说话人声音、符合模型限制的 reference1.wav 和 reference2.wav,并配置前述环境变量。
references 按列表顺序分配槽位:第一项 reference1.wav 对应 @voice1,第二项 reference2.wav 对应 @voice2。示例将两条音频分别编码为 Base64,并在提示词中引用对应说话人。
{"audio_url": "可公开访问的音频URL"},不要同时填写 audio_data。多人参考按列表顺序编号,不能引用不存在的编号。
响应参数
| 字段 | 类型 | 说明 |
|---|---|---|
| request_id | string | 请求 ID,用于问题排查。 |
| output.finish_reason | string | 正常结束时为 "stop"。 |
| output.audio.data | string | 此调用方式下为空字符串;通过 output.audio.url 下载完整音频。 |
| output.audio.url | string | 完整音频文件的下载 URL,有效期 24 小时。 |
| output.audio.id | string | 生成音频的 ID。 |
| output.audio.expires_at | integer | 下载 URL 的过期时间戳。 |
| output.audio.duration | float | 生成音频的时长,单位秒。 |
| usage.duration | integer | 本次生成音频的时长,按秒四舍五入。此字段不用于计算 Token 费用。 |
支持的模型
| 模型 ID | Prompt 上限 | 单次生成时长上限 |
|---|---|---|
| qwen-audio-3.1-tts-next | 3000 字符 | 播客:240 秒(4 分钟);其他场景:120 秒 |
错误处理
错误响应示例:
| HTTP 状态码 | code | 处理方式 |
|---|---|---|
| 400 | CLIENT_ERROR | 检查 Prompt 长度、参考音频数量与时长、URL/Base64 互斥关系、引用编号,以及是否使用了不支持的 voice 字段。 |
| 404 | InvalidParameter | 若 message 为 "Model not exist.",核对模型 ID、地域及当前账号可用范围。 |
| 401 | InvalidApiKey | 核对 API Key 是否有效。 |
| 403 | AccessDenied | 检查模型调用权限。 |
| 429 | Throttling.RateQuota | 降低请求频率。 |
| 400 | DataInspectionFailed | 检查文本或参考音频是否符合内容安全要求。 |
| 500 | InternalError | 保留 request_id,稍后重试或联系技术支持。 |