腾讯云语音合成Python SDK_AI解决方案_同尘科技
腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话。 腾讯 TTS 技术可以应用到很多场景,例如,移动 App 语音播报新闻,智能设备语音提醒,支持车载导航语音合成的个性化语音播报。本接口内测期间免费使用。 流式语音合成 Python3 SDK 下载地址、Python2 SDK 下载地址。接口请求域名:tts.cloud.tencent.com/stream
开发环境
基本编译环境
Python 3 和 Python 2.7版本。
requests
安装方法 pip install requests
。
获取用户信息
获取 AppID,SecretId 和 SecretKey
进入 API 密钥管理页面,获取 AppID、SecretId 和 SecretKey。具体路径为:单击 腾讯云控制台 右上角您的账号,选择【访问管理】>【访问密钥】>【API 密钥管理】界面查看 AppID 和 key。
更改用户信息配置文件
将查询到的用户信息更改到 conf/tcloud_auth.ini 配置文件中。
#需要配置成用户账号信息[authorization]AppId=1259***************SecretId=AKID****************************SecretKey=kFpwo**************************
开发相关
请求参数
参数名称 | 必选 | 类型 | 描述 |
Action | 是 | String | 本接口取值:TextToStreamAudio,不可更改。 |
AppId | 是 | Int | 用户在腾讯云注册账号的 AppId,具体可以参考 获取用户信息。 |
SecretId | 是 | String | 用户在腾讯云注册账号 AppId 对应的 SecretId,获取方法同上。 |
Text | 是 | String | 合成语音的源文本。中文最大支持600个汉字(全角标点符号算一个汉字),英文最大支持1800个字母(半角标点符号算一个字母)。包含空格等字符时需要 URL encode 再传输。 |
SessionId | 是 | String | 一次请求对应一个 SessionId,会原样返回,建议传入类似于 uuid 的字符串防止重复。 |
ModelType | 否 | Int | 模型类型,1:默认模型,此字段只需设置为1即可。 |
Volume | 否 | Float | 音量大小,范围:[0,10],分别对应11个等级的音量,默认值为0,代表正常音量。没有静音选项。输入除以上整数之外的其他参数不生效,按默认值处理。 |
Speed | 否 | Int | 语速,范围:[-2,6],分别对应不同语速: -2代表0.6倍 -1代表0.8倍 0代表1.0倍(默认) 1代表1.2倍 2代表1.5倍 2代表1.5倍 6代表2.5倍 若需要更细化的语速档次,可以保留小数点一位,如-1.1, 0.5, 1.7等 参数值与实际语速转换,可参考代码示例 |
VoiceType | 否 | Int | 详见 语音合成 API 文档中的 VoiceType 参数。 |
PrimaryLanguage | 否 | Int | 主语言类型:1:中文(默认)2:英文 |
SampleRate | 否 | Int | 音频采样率:16000:16k(默认)8000:8k |
Codec | 否 | String | 返回音频格式:opus:返回多段含 opus 压缩分片音频pcm:返回二进制 pcm 音频mp3:返回二进制 mp3 音频 |
ProjectId | 否 | Int | 项目 ID,可以根据控制台-账号中心-项目管理中的配置填写,如无配置,请填写默认项目ID:0 。 |
Timestamp | 是 | Int | 当前 UNIX 时间戳,可记录发起 API 请求的时间。如果与当前时间相差过大,会引起签名过期错误。SDK 会自动赋值当前时间戳。 |
Expired | 是 | Int | 签名的有效期,是一个符合 UNIX Epoch 时间戳规范的数值,单位为秒;Expired 必须大于 Timestamp 且 Expired-Timestamp 小于90天。SDK 默认设置1小时。 |
具体参数配置可以参考:conf/request_parameter.ini 的默认配置。
请求 DEMO
python tcloud_tts.py
Python 快速入门示例
参考 tcloud_tts.py
。
# coding=UTF-8import requestsimport waveimport jsonimport base64import timeimport collections
from request_util import request, authorization
def task_process(): req = request() req.init() auth = authorization() auth.init()
#request_data = collections.OrderedDict() request_data = dict() request_data['Action'] = 'TextToStreamAudio' request_data['AppId'] = auth.AppId request_data['Codec'] = req.Codec request_data['Expired'] = int(time.time()) + auth.Expired request_data['ModelType'] = req.ModelType request_data['PrimaryLanguage'] = req.PrimaryLanguage request_data['ProjectId'] = req.ProjectId request_data['SampleRate'] = req.SampleRate request_data['SecretId'] = auth.SecretId request_data['SessionId'] = req.SessionId request_data['Speed'] = req.Speed request_data['Text'] = req.Text request_data['Timestamp'] = int(time.time()) request_data['VoiceType'] = req.VoiceType request_data['Volume'] = req.Volume
signature = auth.generate_sign(request_data = request_data) header = { "Content-Type": "application/json", "Authorization": str(signature) } url = "https://tts.cloud.tencent.com/stream"
r = requests.post(url, headers=header, data=json.dumps(request_data), stream = True) ''' if str(r.content).find("Error") != -1 : print(r.content) return ''' i = 1 wavfile = wave.open('test.wav', 'wb') wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) for chunk in r.iter_content(1000): if (i == 1) & (str(chunk).find("Error") != -1) : print(chunk) return i = i + 1 wavfile.writeframes(chunk)
wavfile.close()
task_process()
对解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?