python腾讯语音合成实现过程解析


Posted in Python onAugust 01, 2019

一、腾讯语音合成介绍

腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话。 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻;智能设备语音提醒;依靠网上现有节目或少量录音,快速合成明星语音,降低邀约成本;支持车载导航语音合成的个性化语音播报。(废话一大堆)。。。

二、腾讯语音合成python SDK文档

安装 Python SDK 前,先获取安全凭证。在第一次使用云 API 之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID 和 SecretKey, SecretID 是用于标识 API 调用者的身份,SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey 必须严格保管,避免泄露。 

通过 pip 安装(推荐)

您可以通过 pip 安装方式将腾讯云 API Python SDK 安装到您的项目中,如果您的项目环境尚未安装 pip,请详细参见 pip官网 安装。

通过pip方式安装请在命令行中执行以下命令:

pip install tencentcloud-sdk-python

请注意,如果同时有 python2 和 python3 环境, python3 环境需要使用 pip3 命令安装。

三、腾讯语音合成

# !/usr/bin/env python 2 # -*- coding: utf-8 -*-
from base64 import b64decode
from uuid import uuid4
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.aai.v20180522.models import TextToVoiceRequest
from tencentcloud.aai.v20180522.aai_client import AaiClient
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操作
  with open('voice.wav', 'wb') as f:
    f.write(content)
except TencentCloudSDKException as e:
  print(e)

四、腾讯语音合成使用后感受

首先,在代码层次上讲,官方压根没有合成示例文档啊(咆哮ing),全自己摸索的啊(咆哮ing),SDK都开发出来了,示例代码给一下能死啊(咆哮ing),怪不得没人用啊(咆哮ing)!

第二,还是在代码层次上讲,源码中TextToVoiceRequest()类,在__init__()方法中就不能直接封装属性啊(咆哮ing),有些没有自定制但都是默认的直接填上不就行了啊(咆哮ing),懒死你啊,非得一行一行自己加属性啊(咆哮ing),看到的同学务必要修改这个类的__init__()方法,要不然就像示例代码中那样麻烦。

第三,在合成效果上讲,声音难听爆了有木有,语音文件还得解码再I/O,吃饱了撑的了啊,还是那句话:怪不得没人用,百度语音合成效果比你强多了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python使用urllib2提交http post请求的方法
May 26 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
Python元组常见操作示例
Feb 19 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 #Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 #Python
Python中list的交、并、差集获取方法示例
Aug 01 #Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 #Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 #Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 #Python
python psutil模块使用方法解析
Aug 01 #Python
You might like
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
php学习之function的用法
2012/07/14 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
浅谈js原生拖放
2016/11/21 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
python re模块和正则表达式
2021/03/24 Python
范文之农村基层党建工作报告
2019/10/24 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python