python腾讯语音合成实现过程解析
一、腾讯语音合成介绍
腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话。腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻;智能设备语音提醒;依靠网上现有节目或少量录音,快速合成明星语音,降低邀约成本;支持车载导航语音合成的个性化语音播报。(废话一大堆)。。。
二、腾讯语音合成pythonSDK文档
安装PythonSDK前,先获取安全凭证。在第一次使用云API之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括SecretID和SecretKey,SecretID是用于标识API调用者的身份,SecretKey是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey必须严格保管,避免泄露。
通过pip安装(推荐)
您可以通过pip安装方式将腾讯云APIPythonSDK安装到您的项目中,如果您的项目环境尚未安装pip,请详细参见pip官网安装。
通过pip方式安装请在命令行中执行以下命令:
pipinstalltencentcloud-sdk-python
请注意,如果同时有python2和python3环境,python3环境需要使用pip3命令安装。
三、腾讯语音合成
#!/usr/bin/envpython2#-*-coding:utf-8-*- frombase64importb64decode fromuuidimportuuid4 fromtencentcloud.commonimportcredential fromtencentcloud.common.exception.tencent_cloud_sdk_exceptionimportTencentCloudSDKException fromtencentcloud.aai.v20180522.modelsimportTextToVoiceRequest fromtencentcloud.aai.v20180522.aai_clientimportAaiClient try: #实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey cred=credential.Credential("你的secretID","你的secretKey") #实例化要进行语音合成请求的client对象 client=AaiClient(cred,'ap-shanghai') #实例化一个请求对象 req=TextToVoiceRequest() #请求对象属性封装 req.Text='先帝创业未半而中道崩殂'#type:str#要合成语音的文本 req.SessionId=uuid4()#type:int#一次请求对应一个SessionId,会原样返回,建议传入类似于uuid的字符串防止重复 req.ModelType=1#type:int#模型类型,默认值为1 req.Volume=5.0#type:float#音量大小,范围:[0,10],分别对应10个等级的音量,默认为0 req.Speed=0.6#type:float#语速,范围:[-2,2],分别对应不同语速:0.6倍,0.8倍,1.0倍,1.2倍,1.5倍,默认为0 req.ProjectId=10086#type:int#项目id,用户自定义,默认为0 req.VoiceType=0#type:int#音色0:女声1,亲和风格(默认)音色1:男声1,成熟风格音色2:男声2,成熟风格 req.PrimaryLanguage=1#type:int#主语言类型1:中文,最大100个汉字(标点符号算一个汉字)语言类型2:英文,最大支持400个字母(标点符号算一个字母) req.SampleRate=16000#type:int#音频采样率,16000:16k,8000:8k,默认16k #通过client对象调用想要访问的接口,需要传入请求对象 rep=client.TextToVoice(req) #rep为响应对象 print(rep) """ { "Audio":"UklGRlR/AABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YSx9AAD+////AQD//wAAAAAAAAIAAQADAAMABgAEAAYABQAGAAUABwAIAAgACQAAE......AAgACAAEAAgADAAIAAwACAAQAAwACAAIAAgADAAMAAgACAAIAAwABAAAAAAAAAAAAAAD/////AAAAAAAA//8AAP///v/9//7//v///////v8AAP///////wAA/////wAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA", "RequestId":"9a7a1615-3e09-4db2-8032-5c6f497f7e6a", "SessionId":"session-1234" } Audio对应的值为经过base64编码, RequestId为返回的唯一请求id, SessionId为发送请求时传入的id即uuid4() """ #content为base64解码后的二进制流 content=b64decode(rep.Audio) #I/O操作 withopen('voice.wav','wb')asf: f.write(content) exceptTencentCloudSDKExceptionase: print(e)
四、腾讯语音合成使用后感受
首先,在代码层次上讲,官方压根没有合成示例文档啊(咆哮ing),全自己摸索的啊(咆哮ing),SDK都开发出来了,示例代码给一下能死啊(咆哮ing),怪不得没人用啊(咆哮ing)!
第二,还是在代码层次上讲,源码中TextToVoiceRequest()类,在__init__()方法中就不能直接封装属性啊(咆哮ing),有些没有自定制但都是默认的直接填上不就行了啊(咆哮ing),懒死你啊,非得一行一行自己加属性啊(咆哮ing),看到的同学务必要修改这个类的__init__()方法,要不然就像示例代码中那样麻烦。
第三,在合成效果上讲,声音难听爆了有木有,语音文件还得解码再I/O,吃饱了撑的了啊,还是那句话:怪不得没人用,百度语音合成效果比你强多了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。