语音合成

简介

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调用,其中getReqSigndoHttpPost可以从接口鉴权获取。

// 设置请求数据
$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调用,其中getReqSigndoHttpPost可以从接口鉴权获取。

// 设置请求数据
$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...",
  }
}
AI开放平台公众号
关注公众号

打造升级AI项目
推送全球AI热点