700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python语音合成实现原理_python腾讯语音合成实现过程解析

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

时间:2022-10-04 10:27:56

相关推荐

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

一、腾讯语音合成介绍

腾讯云语音合成技术(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 mon import credential

from mon.exception.tencent_cloud_sdk_exception import TencentCloudSDKException

from tencentcloud.aai.v0522.models import TextToVoiceRequest

from tencentcloud.aai.v0522.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腾讯语音合成实现过程解析

本文地址: /jiaoben/python/267369.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。