本文介绍非实时语音合成Qwen-Audio-TTS的Python SDK调用方法,支持非流式和流式两种调用模式。
前提条件
- 已获取与配置 API Key并将其配置到环境变量
- 已安装符合版本要求的DashScope Java SDK,建议安装最新版,SDK版本需≥1.25.17
HttpSpeechSynthesizer 类
包路径:dashscope.audio.http_tts.http_speech_synthesizer.HttpSpeechSynthesizer
功能:基于HTTP的语音合成,通过stream参数控制非流式或流式调用模式。
call() - 语音合成调用
方法签名:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | str | 是 | 语音合成模型。 |
text | str | 是 | 待合成文本。 支持 SSML 和 LaTeX 格式输入。将待合成文本替换为对应格式即可。
|
voice | str | 是 | 音色。 取值范围:
|
format | str | 否 | 音频编码格式。 默认值:mp3。 取值范围:
|
sample_rate | int | 否 | 音频采样率(Hz)。 取值范围:8000, 16000, 22050(默认), 24000, 44100, 48000。 |
volume | int | 否 | 音量。 默认值:50。 取值范围:[0, 100]。 |
rate | float | 否 | 语速。 默认值:1.0。 取值范围:[0.5, 2.0]。 |
pitch | float | 否 | 音调。 默认值:1.0。 取值范围:[0.5, 2.0]。 |
bit_rate | int | 否 | 音频码率(单位:kbps)。 默认值:32。 取值范围:[6, 510]。 提示: 仅在format为opus时支持使用该参数。 |
enable_ssml | bool | 否 | 是否开启SSML功能。当text使用SSML格式时,需设为True。默认为False。支持的SSML标签及用法,请参考SSML 与 LaTeX。SSML 的使用限制(支持的模型、音色和接口),请参见使用限制。 |
word_timestamp_enabled | bool | 否 | 是否开启字级别时间戳。 默认值:False。
|
seed | int | 否 | 生成时使用的随机数种子,使合成的效果产生变化。在模型版本、文本、音色及其他参数均相同的前提下,使用相同的seed可复现相同的合成结果。 默认值0。 取值范围:[0, 65535]。 |
language_hints | list | 否 | 提示: - 此参数为数组,但当前版本仅处理第一个元素,因此建议只传入一个值。
|
instruction | str | 否 | 设置指令,用于控制方言、情感或角色等合成效果。 具体用法请参见非实时语音合成。 |
enable_aigc_tag | bool | 否 | 是否在生成的音频中添加AIGC隐性标识。设置为True时,会将隐性标识嵌入到支持格式(wav/mp3/opus)的音频中。 默认值:false。 |
aigc_propagator | str | 否 | 设置AIGC隐性标识中的 ContentPropagator 字段,用于标识内容的传播者。仅在 enable_aigc_tag 为 True 时生效。 默认值:千问AI平台账号。 |
aigc_propagate_id | str | 否 | 设置AIGC隐性标识中的 PropagateID 字段,用于唯一标识一次具体的传播行为。仅在 enable_aigc_tag 为 True 时生效。 默认值:本次语音合成请求Request ID。 |
hot_fix | dict | 否 | 文本热修复配置,用于自定义指定词语的发音或对待合成文本进行替换。 参数介绍:
|
stream | bool | 否 | 是否启用流式模式。设为False时为非流式调用,返回包含音频URL的结果对象;设为True时为流式调用,返回音频数据分片的迭代器。默认为False。 |
api_key | str | 否 | API Key。如果未指定,SDK会自动从环境变量DASHSCOPE_API_KEY中读取。 |
-
非流式模式(
stream=False):返回结果对象,包含以下属性:audio_url:音频下载URL(有效期有限)。audio_id:音频ID。expires_at:URL过期时间。
-
流式模式(
stream=True):返回迭代器,每个元素包含以下属性:audio_data:当前分片的音频二进制数据(bytes)。sentences:句子级别的合成信息(如有)。
流式模式下,迭代器的最后一个元素除了包含音频数据分片外,还会额外返回audio_url(完整音频的下载地址)。如果在拼接音频数据时不跳过该元素,会导致最终生成的音频中同一段内容重复播放。因此在遍历迭代器时,需通过not chunk.audio_url条件过滤包含完整音频URL的最后一个元素。
示例代码
以下示例展示Qwen-Audio-TTS语音合成的非流式和流式调用方式。运行前请确保已设置环境变量DASHSCOPE_API_KEY。
不同模型需使用匹配的音色。更换模型时,请同步更换音色,并确认音色支持目标语言。具体对应关系请参见Qwen-Audio-TTS音色列表。