gzncpcc

人生如逆旅,我亦是行人

0%

百度云合成Python SDK

1
pip install baidu-aip

在这里插入图片描述

安装好AipSpeech后就可以直接上代码了,很简单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from aip import AipSpeech

""" 你的 APPID AK SK 在百度云控制台中可以获取,目前可以免费体验"""
APP_ID = 'your ID'
API_KEY = 'your KEY'
SECRET_KEY = 'your SECRET_KEY'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

text = '白皮书说,党的十八大以来,中国的核安全事业进入安全高效发展的新时期。在核安全观引领下,中国逐步构建起法律规范、行政监管、行业自律、技术保障、人才支撑、文化引领、社会参与、国际合作等为主体的核安全治理体系,核安全防线更加牢固。'

result = client.synthesis(text, 'zh', 1, {
'vol': 5,
})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result)

运行过后会生成一个audio.mp3文件,打开就可以听到文字转语音的内容了。

以为这样就完了?不不不
我们要实现的终极目标是在微信打字聊天就可以自动转为我们自己的音色语音发送给对方。。。
额,也不是很绕口,就是难就难在使用自己的音色,毕竟懒得开口嘛。。。额也许有其他不能开口的客观原因呢。比如:

  • 在公交车/地铁上人多不方便语音
  • 在图书馆看书不方便回复语音又不想跑外面去
  • 在你心情不好不想说话又不得不哄的时候|ू・ω・` )

等等,还有很多实用场景,这里就不一一举例了。至于实现的难点嘛,则有:

  • 使用自己的音色,自己录制几个小时的甚至更长时间的朗读音频用作训练。。。
  • 如何嵌入到微信用,毕竟微信没那么大方。。。
  • 还有就是一些安全问题,自己的独特声线容易泄露被其他人利用。。。

解决方案

在网上溜了一圈,就看到这个老哥的一篇,不得不说微软的TTS是真的强。。。

https://zhuanlan.zhihu.com/p/49711377

而我想的解决方案是,在本地生成这个audio.mp3文件后发送一个链接给对方(在微信中),ta打开自动播放也就能听到我们的声音了。鉴于目前没有可以支付美刀的信用卡,不能注册使用Azure,所以只能先用百度这个凑合着用吧,先自己挖一个坑,以后有时间再填。。。over

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from aip import AipSpeech
import time

def TextToSpeech(text):
""" 你的 APPID AK SK """
APP_ID = 'your ID'
API_KEY = 'your KEY'
SECRET_KEY = 'your SECRET_KEY'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis(
text, # text: 合成的文本,utf-8编码,注意长度须小于1024字节
'zh', # lang: 语言,zh代表中文,en代表英文
1, # ctp: 客户端信息,这里就写1,写别的不好使,原因后边解释
{
'vol':5, # 合成音频我呢见的准音量
'spd':5, # 语速,取值0-9,默认为5,中语速
'pit':5, # 语调音调,取值0-9,默认为5,中语调
'per':5003 # 发音人选择,0为女声,1为男声,3为情感合成-度逍遥,4为情感合成度丫丫,默认为普通女
}
)

# 保存到指定文件夹+时间戳为文件名
filename = 'static/music/' + str(time.time()) + '.mp3'

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open(filename, 'wb') as f:
f.write(result)

return filename


if __name__ == "__main__":
text = "我就是随便测试一下啦"
filenname = TextToSpeech(text)
print(filenname)

在这里插入图片描述

坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道