必须先通过ListAITranslationSpeech接口查询音色ID。调用预设音色时可直接传入对应ID;使用自定义音色时,则需要同时传递speaker_id="custom_speaker_id"与custom_speaker_id字段,并确保该音色当前状态为“可用”。

想在火山引擎TTS服务中正确选择符合业务场景的AI音色,需要明确区分预设音色调用、自定义音色训练以及音色设计这三种方式,不能简单理解为在控制台界面中直接点选即可完成。若使用了错误的音色ID,或相关鉴权、配置未完成,语音合成请求通常会直接返回400错误。
查询可用音色列表(包含预设音色与自建音色)
应通过ListAITranslationSpeech接口获取当前账号下全部可用音色,这是查询火山引擎AI音色列表的唯一权威方式,控制台UI中的展示信息可能存在延迟,或显示不完整。
构建GET请求:https://vod.volcengineapi.com?Action=ListAITranslationSpeech&Version=2025-01-01&SpaceName=your_space_name&SpeechTypeFilter=Preset,User&Language=zh
注意:SpaceName必须填写你在视频点播控制台中创建的真实空间名称,【填写错误会直接返回空列表】;如果SpeechTypeFilter只传Preset,则无法查询到你已训练完成的自定义音色或自建音色。
接口响应体中的每个音色对象通常包含id、name、language、type等字段,其中真正用于TTS语音合成请求的speaker_id,就是id字段的值。
调用预设音色(无需训练,开箱即用)
方法一:直接使用最新的音色ID(推荐新手使用)
可以从VOICE_PROFILES字典中选择目标音色,例如四川话可对应zh_male_sichuan_xiaoming_bigtts,将其直接作为speaker_id参数传入TTS合成接口即可完成调用。
方法二:通过音色名称进行模糊匹配(需自行解析ListAITranslationSpeech返回结果)
遍历接口返回的音色列表,筛选name字段包含“四川”且type为Preset的项目,再读取其id字段作为speaker_id。这一步很容易忽略带有版本后缀的音色,例如_xxx_v2,从而导致最终调用失败或选错音色。
方法三:在控制台能力体验页面试听后复制ID(仅适合调试排查)
进入豆包语音控制台→能力体验→输入测试文本→播放任意音色→打开浏览器开发者工具→抓取Network中的tts/synthesis请求→查看POST body里的speaker_id字段。这个ID通常是真实可用的,但【不建议用于生产环境批量调用,因为不具备完整的权限校验依据】。
启用自定义音色(需提前完成训练)
第一步:确认音色已经训练完成,且状态显示为“可用”
登录火山引擎控制台→豆包语音→声音复刻,查看目标custom_speaker_id对应任务的当前状态。如果页面显示“处理中”或“失败”,那么此时发起TTS合成调用一定会报错,无法正常生成语音。
第二步:严格按照格式传递speaker_id与custom_speaker_id
在请求体JSON中,必须同时包含两个字段:speaker_id固定填写"custom_speaker_id"这个字符串,custom_speaker_id则填写你训练时设定的合法ID,例如my_sichuan_voice_01。两者缺一不可,否则自定义音色无法正确生效。
第三步:首次合成即开始扣费,正式调用前务必先试听验证
在接入正式业务流程之前,建议先使用极短文本(例如“你好”)发起一次语音合成请求,拿到audio返回结果后立即试听,确认音色、发音效果与场景匹配度是否符合预期。一旦合成成功,系统会立即收取音色槽位费用,【费用无法退款,也无法撤销】。
