单向流式API为用户提供文本转语音的能力,支持多语种、多方言,同时支持http协议流式输出。
session = requests.Session() response = session.post(url, headers=headers, json=payload, stream=True)
https://openspeech.bytedance.com/api/v3/tts/unidirectionalKey | 说明 | 是否必须 | Value示例 |
|---|---|---|---|
X-Api-App-Id | 使用火山引擎控制台获取的APP ID,可参考 控制台使用FAQ-Q1 | 是 | 123456789 |
X-Api-Access-Key | 使用火山引擎控制台获取的Access Token,可参考 控制台使用FAQ-Q1 | 是 | your-access-key |
X-Api-Resource-Id | 表示调用服务的资源信息 ID
注意:
| 是 |
|
X-Api-Request-Id | 标识客户端请求ID,uuid随机字符串 | 否 | 67ee89ba-7050-4c04-a3d7-ac61a63499b3 |
X-Control-Require-Usage-Tokens-Return | 请求消耗的用量返回控制标记。当携带此字段,在合成音频结束时的返回数据中会多一个usage的JSON Object字段,其中包含了所需的用量数据。 | 否 |
|
Key | 说明 | Value示例 |
|---|---|---|
X-Tt-Logid | 服务端返回的 logid,建议用户获取和打印方便定位问题 | 2025041513355271DF5CF1A0AE0508E78C |
字段 | 描述 | 是否必须 | 类型 | 默认值 |
|---|---|---|---|---|
user | 用户信息 | |||
user.uid | 用户uid | |||
namespace | 请求方法 | string | BidirectionalTTS | |
req_params.text | 输入文本 | string | ||
req_params.model | 模型版本,传 | 否 | string | —— |
req_params.ssml | 当文本格式是ssml时,需要将文本赋值为ssml,此时文本处理的优先级高于text。ssml和text字段,至少有一个不为空 | string | ||
req_params.speaker | 发音人,具体见发音人列表 | √ | string | |
req_params.audio_params | 音频参数,便于服务节省音频解码耗时 | √ | object | |
req_params.audio_params.format | 音频编码格式,mp3/ogg_opus/pcm。接口传入wav并不会报错,在流式场景下传入wav会多次返回wav header,这种场景建议使用pcm。 | string | mp3 | |
req_params.audio_params.sample_rate | 音频采样率,可选值 [8000,16000,22050,24000,32000,44100,48000] | number | 24000 | |
req_params.audio_params.bit_rate | 音频比特率,可传16000、32000等。 | number | ||
req_params.audio_params.emotion | 设置音色的情感。示例:"emotion": "angry" | string | ||
req_params.audio_params.emotion_scale | 调用emotion设置情感参数后可使用emotion_scale进一步设置情绪值,范围1~5,不设置时默认值为4。 | number | 4 | |
req_params.audio_params.speech_rate | 语速,取值范围[-50,100],100代表2.0倍速,-50代表0.5倍数 | number | 0 | |
req_params.audio_params.loudness_rate | 音量,取值范围[-50,100],100代表2.0倍音量,-50代表0.5倍音量(mix音色暂不支持) | number | 0 | |
req_params.audio_params.enable_timestamp | 设置 "enable_timestamp": true 返回句级别字的时间戳(默认为 flase,参数传入 true 即表示启用)
| bool | false | |
req_params.additions | 用户自定义参数 | jsonstring | ||
req_params.additions.silence_duration | 设置该参数可在句尾增加静音时长,范围0~30000ms。(注:增加的句尾静音主要针对传入文本最后的句尾,而非每句话的句尾) | number | 0 | |
req_params.additions.enable_language_detector | 自动识别语种 | bool | false | |
req_params.additions.disable_markdown_filter | 是否开启markdown解析过滤, | bool | false | |
req_params.additions.disable_emoji_filter | 开启emoji表情在文本中不过滤显示,默认为false,建议搭配时间戳参数一起使用。 | bool | false | |
req_params.additions.mute_cut_remain_ms | 该参数需配合mute_cut_threshold参数一起使用,其中:
| string | ||
req_params.additions.enable_latex_tn | 是否可以播报latex公式,需将disable_markdown_filter设为true | bool | false | |
req_params.additions.max_length_to_filter_parenthesis | 是否过滤括号内的部分,0为不过滤,100为过滤 | int | 100 | |
req_params.additions.explicit_language(明确语种) | 仅读指定语种的文本
DIT 声音复刻场景:
当音色是使用model_type=3训练的,即采用dit还原版效果时,必须指定明确语种,目前支持:
声音复刻 ICL2.0场景:
GoLang示例: | string | ||
req_params.additions.context_language(参考语种) | 给模型提供参考的语种
| string | ||
req_params.additions.unsupported_char_ratio_thresh | 默认: 0.3,最大值: 1.0 | float | 0.3 | |
req_params.additions.aigc_watermark | 默认:false | bool | false | |
req_params.additions.aigc_metadata (meta 水印) | 在合成音频 header加入元数据隐式表示,支持 mp3/wav/ogg_opus | object | ||
req_params.additions.aigc_metadata.enable | 是否启用隐式水印 | bool | false | |
req_params.additions.aigc_metadata.content_producer | 合成服务提供者的名称或编码 | string | "" | |
req_params.additions.aigc_metadata.produce_id | 内容制作编号 | string | "" | |
req_params.additions.aigc_metadata.content_propagator | 内容传播服务提供者的名称或编码 | string | "" | |
req_params.additions.aigc_metadata.propagate_id | 内容传播编号 | string | "" | |
req_params.additions.cache_config(缓存相关参数) | 开启缓存,开启后合成相同文本时,服务会直接读取缓存返回上一次合成该文本的音频,可明显加快相同文本的合成速率,缓存数据保留时间1小时。 | object | ||
req_params.additions.cache_config.text_type(缓存相关参数) | 和use_cache参数一起使用,需要开启缓存时传1 | int | 1 | |
req_params.additions.cache_config.use_cache(缓存相关参数) | 和text_type参数一起使用,需要开启缓存时传true | bool | true | |
req_params.additions.post_process | 后处理配置 | object | ||
req_params.additions.post_process.pitch | 音调取值范围是[-12,12] | int | 0 | |
req_params.additions.context_texts | 语音合成的辅助信息,用于模型对话式合成,能更好的体现语音情感;
注意:
| string list | null | |
[]req_params.mix_speaker | 混音参数结构
| object | ||
req_params.mix_speaker.speakers | 混音音色名以及影响因子列表
注意:使用Mix能力时,req_params.speaker = custom_mix_bigtts | list | null | |
req_params.mix_speaker.speakers[i].source_speaker | 混音源音色名(支持大小模型音色和复刻2.0音色) | string | "" | |
req_params.mix_speaker.speakers[i].mix_factor | 混音源音色名影响因子 | float | 0 |
单音色请求参数示例:
{ "user": { "uid": "12345" }, "req_params": { "text": "明朝开国皇帝朱元璋也称这本书为,万物之根", "speaker": "zh_female_shuangkuaisisi_moon_bigtts", "audio_params": { "format": "mp3", "sample_rate": 24000 }, } } }
mix请求参数示例:
{ "user": { "uid": "12345" }, "req_params": { "text": "明朝开国皇帝朱元璋也称这本书为万物之根", "speaker": "custom_mix_bigtts", "audio_params": { "format": "mp3", "sample_rate": 24000 }, "mix_speaker": { "speakers": [{ "source_speaker": "zh_male_bvlazysheep", "mix_factor": 0.3 }, { "source_speaker": "BV120_streaming", "mix_factor": 0.3 }, { "source_speaker": "zh_male_ahu_conversation_wvae_bigtts", "mix_factor": 0.4 }] } } }
2.3 响应Response
{ "code": 0, "message": "", "data" : {{STRING}} }
{ "code": 0, "message": "", "data" : null, "sentence": <object> }
示例json:
{ "code": 0, "message": "", "data": null, "sentence": { "text": "其他人。", "words": [ { "confidence": 0.8531248, "endTime": 0.315, "startTime": 0.205, "word": "其" }, { "confidence": 0.9710379, "endTime": 0.515, "startTime": 0.315, "word": "他" }, { "confidence": 0.9189944, "endTime": 0.815, "startTime": 0.515, "word": "人。" } ] } }
{ "code": 20000000, "message": "ok", "data": null, "usage": {"text_words":10} }
Code | Message | 说明 |
|---|---|---|
20000000 | ok | 音频合成结束的成功状态码 |
40402003 | TTSExceededTextLimit:exceed max limit | 提交文本长度超过限制 |
45000000 | speaker permission denied: get resource id: access denied | 音色鉴权失败,一般是speaker指定音色未授权或者错误导致 |
quota exceeded for types: concurrency | 并发限流,一般是请求并发数超过限制 | |
55000000 | 服务端一些error | 服务端通用错误 |