语音合成
功能介绍
语音合成,是一种将文本转换成逼真语音的服务。用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。该接口的使用限制请参见约束与限制,详细使用指导请参见SIS服务使用简介章节。
SIS服务控制台提供了语音合成的在线使用页面,用户无需编程即可使用服务功能。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。 |
Enterprise-Project-Id |
否 |
String |
企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。
企业项目创建步骤请参见用户指南。
说明:
账户创建企业项目后,在传参时,有以下三类场景。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
text |
是 |
String |
待合成的文本,文本长度限制不大于500字符。 |
config |
否 |
TtsConfig object |
语音合成配置信息。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
audio_format |
否 |
String |
语音格式头:wav、mp3、pcm 默认:wav 父节点:config |
sample_rate |
否 |
String |
采样率:16000、8000赫兹 默认:8000 父节点:config |
property |
否 |
String |
语音合成特征字符串,组成形式为{language}_{speaker}_{domain},即“语种_人员标识_领域”。发音人分为普通发音人和精品发音人,每次调用价格相同,针对精品发音人,每50字计一次调用,不足50字按一次计;普通发音人每100字计一次调用,不足100字按一次计。其中1个汉字、1个英文字母或1个标点均算作1个字符,具体费用请参考价格计算器。
默认:chinese_xiaoyan_common,中文发音,小燕,温柔女声发音人。 父节点:config |
speed |
否 |
Integer |
语速。 取值范围:-500~500 默认值:0 父节点:config
说明:
当取值为“0”时,表示一个成年人正常的语速,约为250字/分钟。设置该值时,语速和数值没有绝对的映射关系。 |
pitch |
否 |
Integer |
音高。 取值范围: -500~500 默认值:0 父节点:config |
volume |
否 |
Integer |
音量。 取值范围:0~100 默认值:50 父节点:config |
名称 |
property取值 |
类型 |
使用场景 |
支持采样率(Hz) |
---|---|---|---|---|
小琪 |
chinese_xiaoqi_common |
标准女声 |
客服 |
8k/16k |
小雯 |
chinese_xiaowen_common |
柔美女声 |
客服 |
8k/16k |
小宇 |
chinese_xiaoyu_common |
标准男声 |
电销 |
8k/16k |
小夏 |
chinese_xiaoxia_common |
热情女声 |
电销 |
8k/16k |
小燕 |
chinese_xiaoyan_common |
温柔女声 |
文学 |
8k/16k |
小倩 |
chinese_xiaoqian_common |
成熟女声 |
文学 |
8k/16k |
小王 |
chinese_xiaowang_common |
童声 |
童声 |
8k/16k |
小呆 |
chinese_xiaodai_common |
呆萌童声 |
童声 |
8k/16k |
小婧 |
chinese_xiaojing_common |
俏皮女声 |
新闻播报 |
8k/16k |
小宋 |
chinese_xiaosong_common |
激昂男声 |
新闻播报 |
8k/16k |
cameal |
english_cameal_common |
英文女声 |
英文 |
8k/16k |
名称 |
property取值 |
类型 |
使用场景 |
支持采样率(Hz) |
---|---|---|---|---|
华小夏 |
chinese_huaxiaoxia_common |
热情女声 |
电销 |
8k/16k |
华小唯 |
chinese_huaxiaowei_common |
嗲柔女声 |
电销 |
8k/16k |
华小颜 |
chinese_huaxiaoyan_common |
严厉女声 |
电销 |
8k/16k |
华晓阳 |
chinese_huaxiaoyang_common |
朝气男声 |
电销 |
8k/16k |
华晓刚 |
chinese_huaxiaogang_common |
利落男声 |
客服 |
8k/16k |
华小雯 |
chinese_huaxiaowen_common |
柔美女声 |
客服 |
8k/16k |
华小美 |
chinese_huaxiaomei_common |
温柔女声 |
客服 |
8k/16k |
华小飞 |
chinese_huaxiaofei_common |
朝气男声 |
客服 |
8k/16k |
华小璐 |
chinese_huaxiaolu_common |
知性女声 |
新闻播报 |
8k/16k |
华小靓 |
chinese_huaxiaoliang_common |
嘹亮女声 |
新闻播报 |
8k/16k |
华晓东 |
chinese_huaxiaodong_common |
成熟男声 |
新闻播报 |
8k/16k |
华小蕊 |
chinese_huaxiaorui_common |
知性女声 |
中英混合 |
16k |
华小萱 |
chinese_huaxiaoxuan_common |
台湾女声 |
方言 |
8k/16k |
华小闽 |
chinese_huaxiaomin_common |
闽南女声 |
方言 |
8k/16k |
华小舒 |
chinese_huaxiaoshu_common |
舒缓女声 |
文学 |
8k/16k |
华女侠 |
chinese_huanvxia_literature |
武侠女生(只支持http形式调用) |
文学 |
16k |
华晓悬 |
chinese_huaxiaoxuan_literature |
悬疑男声(只支持http形式调用) |
文学 |
16k |
华小龙 |
chinese_huaxiaolong_common |
朝气男声 |
中英混合 |
16k |
华小汝 |
chinese_huaxiaoru_common |
柔美女声 |
中英混合 |
8k/16k |
华小涵 |
chinese_huaxiaohan_common |
知性女声 |
中英混合 |
8k/16k |
华小宁 |
chinese_huaxiaoning_common |
沉稳男声 |
中英混合 |
8k/16k |
华小珍 |
chinese_huaxiaozhen_common |
温柔女声 |
中英混合 |
8k/16k |
华小曼 |
chinese_huaxiaoman_common |
温柔女声 |
中英混合 |
16k |
华小芳 |
chinese_huaxiaofang_common |
朝气女声 |
中英混合 |
16k |
华小筠 |
chinese_huaxiaojun_common |
成熟女声 |
中英混合 |
16k |
alvin |
english_alvin_common |
成熟男声 |
纯英文 |
8k/16k |
amy |
english_amy_common |
成熟女声 |
纯英文 |
8k/16k |
响应参数
状态码: 200
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
trace_id |
否 |
String |
服务内部的令牌,可用于在日志中追溯具体流程。 在某些错误情况下可能没有此令牌字符串。 |
result |
否 |
CustomResult object |
调用成功表示合成结果,调用失败时无此字段。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
data |
否 |
String |
语音数据,以Base64编码格式返回。 用户如需生成音频,需要将Base64编码解码成byte数组,再保存为音频,音频格式同“audio_format”参数设置的值,默认为wav格式。 语音合成代码示例请参考SDK,SDK已对Base64转音频过程进行封装,可以直接获取音频文件。 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
调用失败时的错误码。 调用成功时无此字段。 |
error_msg |
String |
调用失败时的错误信息。 调用成功时无此字段。 |
请求示例
“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点。
- 调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
POST https://{endpoint}/v1/{project_id}/tts Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text": "欢迎使用语音云服务。", "config": { "audio_format": "wav", "sample_rate": "8000", "property": "chinese_xiaoyan_common", "speed": 10, "pitch": 10, "volume": 60 } }
- 使用Python3语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
# -*- coding: utf-8 -*- # 此demo仅供测试使用,强烈建议使用sdk。需提前安装requests,执行pip install requests import requests import json def stts_demo(): url = 'https://{{endpoint}}/v1/{{project_id}}/tts' # endpoint和project_id需替换 token = '用户对应region的token' text = '待识别的文本' header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = {'text': text} resp = requests.post(url, data=json.dumps(body), headers=header) print(resp.text) if __name__ == '__main__': stts_demo()
- 使用Java语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * 此demo仅供测试使用,强烈建议使用SDK */ public class SttsDemo { public void sttsDemo() { try { // endpoint和projectId需要替换成实际信息。 URL url = new URL("https://{{endpoint}}/v1/{{project_id}}/tts"); String token = "对应region的token"; HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/json"); connection.addRequestProperty("X-Auth-Token", token); OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); String body = "{\"text\": \"123\"}"; osw.append(body); osw.flush(); InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while (br.ready()) { System.out.println(br.readLine()); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SttsDemo sttsDemo = new SttsDemo(); sttsDemo.sttsDemo(); } }
响应示例
状态码:200
成功响应示例
{ "trace_id": "567e8537-a89c-13c3-a882-826321939651", "result":{ "data": "/+MgxAAUeHpMAUkQAANhuRAC..." } }
状态码:400
失败响应示例
{ "error_code": "SIS.0032", "error_msg": "'audio_format' is invalid" }
状态码
状态码请参见状态码。
错误码
错误码请参见错误码。