语音合成
简介
HI,您好,欢迎使用腾讯AI开放平台语音合成API接口服务。
本文档主要针对需要集成HTTP API的技术研发工程师,详细描述语音合成能力相关的技术内容。
如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:
官方交流一群:581197347
官方交流二群:705874401
官方交流三群:415349651
联系邮箱:aicamp@tencent.com
接口能力
接口名称
接口描述
API地址
语音合成(AI Lab)
将文字转换为语音,返回文字的语音数据。
https://api.ai.qq.com/fcgi-bin/aai/aai_tts
语音合成(优图)
将文字转换为语音,返回文字的语音数据。
https://api.ai.qq.com/fcgi-bin/aai/aai_tta
更多更强大的接口能力正在开发中,并逐步开放,敬请期待!
协议须知
调用方集成语音合成API时,请遵循以下规则。
规则
描述
传输方式
HTTPS
请求方法
GET
字符编码
统一采用UTF-8编码
响应格式
统一采用JSON格式
接口鉴权
签名机制,详情请阅接口鉴权
一、语音合成(AI Lab)
1. 接口描述
将文字转换为语音,返回文字的语音数据。
2. 请求参数
参数名称
是否必选
数据类型
数据约束
示例数据
描述
app_id
是
int
正整数
1000001
应用标识(AppId)
time_stamp
是
int
正整数
1493468759
请求时间戳(秒级)
nonce_str
是
string
非空且长度上限32字节
fa577ce340859f9fe
随机字符串
sign
是
string
非空且长度固定32字节
签名信息,详见接口鉴权
speaker
是
int
正整数
1
语音发音人编码,定义见下文描述
format
是
int
正整数
2
合成语音格式编码,定义见下文描述
volume
是
int
[-10, 10]
0
合成语音音量,取值范围[-10, 10],如-10表示音量相对默认值小10dB,0表示默认音量,10表示音量相对默认值大10dB
speed
是
int
[50, 200]
100
合成语音语速,默认100
text
是
string
UTF-8编码,非空且长度上限150字节
腾讯,你好!
待合成文本
aht
是
int
[-24, 24]
0
合成语音降低/升高半音个数,即改变音高,默认0
apc
是
int
[0, 100]
58
控制频谱翘曲的程度,改变说话人的音色,默认58
语音发音人编码
发音人
编码
普通话男声
1
静琪女声
5
欢馨女声
6
碧萱女声
7
合成语音格式编码
格式名称
编码
PCM
1
WAV
2
MP3
3
3. 响应参数
参数名称
是否必选
数据类型
描述
ret
是
int
返回码; 0表示成功,非0表示出错时错误码
msg
是
string
返回信息;ret非0时表示出错时错误原因
data
是
object
返回数据;ret为0时有意义
+ format
是
int
API请求中的格式编码
+ speech
是
string
合成语音的base64编码数据
+ md5sum
是
string
合成语音的md5摘要(base64编码之前)
4. 请求限制
单用户单接口的QPS(每秒请求次数)上限如下,如需更多请联系QQ客服反馈。
未认证用户
个人认证用户
企业认证用户
1
2
10
5. 参考示例
假设示例请求数据如下。
参数名称
参数数据
描述
app_id
1000001
仅供参考
speaker
1
仅供参考
format
2
仅供参考
volume
0
仅供参考
speed
100
仅供参考
text
腾讯,你好!
使用UTF-8编码
aht
0
仅供参考
apc
58
仅供参考
time_stamp
实时计算
nonce_str
实时计算
sign
实时计算
假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf。
下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。
// 设置请求数据
$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';
$params = array(
'app_id' => '1000001',
'speaker' => '1',
'format' => '2',
'volume' => '0',
'speed' => '100',
'text' => '腾讯,你好',
'aht' => '0',
'apc' => '58',
'time_stamp' => strval(time()),
'nonce_str' => strval(rand()),
'sign' => '',
);
$params['sign'] = getReqSign($params, $appkey);
// 执行API调用
$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_tts';
$response = doHttpPost($url, $params);
echo $response;
上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):
{
"ret": 0,
"msg": "ok",
"data": {
"format": 2,
"speech": "UklGRk...",
"md5sum": "5D92C5870E5DD36D4D56C0110B8F1E78"
}
}
二、语音合成(优图)
1. 接口描述
将文字转换为语音,返回文字的语音数据。
2. 请求参数
参数名称
是否必选
数据类型
数据约束
示例数据
描述
app_id
是
int
正整数
1000001
应用标识(AppId)
time_stamp
是
int
正整数
1493468759
请求时间戳(秒级)
nonce_str
是
string
非空且长度上限32字节
fa577ce340859f9fe
随机字符串
sign
是
string
非空且长度固定32字节
签名信息,详见接口鉴权
text
是
string
utf8格式,最大300字节
...
待合成语音文本
model_type
是
int
[0,2]
...
发音模型,默认为0,定义见下文描述
speed
是
int
[-2,2]
...
语速,默认为0,定义见下文描述
模型编码
模型
编码
女生
0
女生纯英文
1
男生
2
语速编码
语速
编码
0.6倍速
-2
0.8倍速
-1
正常速度
0
1.2倍速
1
1.5倍速
2
3. 响应参数
参数名称
是否必选
数据类型
描述
ret
是
int
返回码; 0表示成功,非0表示出错
msg
是
string
返回信息;ret非0时表示出错时错误原因
data
是
object
返回数据;ret为0时有意义
+ voice
是
string
合成语音的base64编码数据,语音为MP3格式
4. 参考示例
假设示例请求数据如下。
参数名称
参数数据
描述
app_id
1000001
仅供参考
text
腾讯,你好!
使用UTF-8编码
model_type
0
仅供参考
speed
0
仅供参考
time_stamp
实时计算
nonce_str
实时计算
sign
实时计算
假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf。
下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。
// 设置请求数据
$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';
$params = array(
'app_id' => '1000001',
'text' => '腾讯,你好',
'model_type' => '0',
'speed' => '0',
'time_stamp' => strval(time()),
'nonce_str' => strval(rand()),
'sign' => '',
);
$params['sign'] = getReqSign($params, $appkey);
// 执行API调用
$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_tta';
$response = doHttpPost($url, $params);
echo $response;
上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):
{
"ret": 0,
"msg": "ok",
"data": {
"voice": "UklGRk...",
}
}