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多进程编程技术实例分析
Sep 16 Python
理解Python中的With语句
Mar 18 Python
python实现稀疏矩阵示例代码
Jun 09 Python
python logging日志模块的详解
Oct 29 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
在python中pandas的series合并方法
Nov 12 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
开启PHP的伪静态模式
2015/12/31 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
extjs render 用法介绍
2013/09/11 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
Python日志模块logging基本用法分析
2018/08/23 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python机器人运动范围问题的解答
2019/04/29 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
python实现ip代理池功能示例
2019/07/05 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
主要的Ajax框架都有什么
2013/11/14 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
本科应届生求职信
2014/08/05 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers