内容简介:这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调用这个接口五千次,非常适合我们玩转这些功能。点击应用列表,创建应用,弹出的创建应用配置项,其中的内容随意填写即可
这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。
百度云接口调用
百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调用这个接口五千次,非常适合我们玩转这些功能。
注册百度云账号
首先打开 百度云语音合成模块接口 地址
打开网址后点击《立即使用》选项,然后会出现登录的选项界面。如果没有账号,需要先注册一个百度云账号,注册方法非常简单,我就不过多赘述了
登录账号之后,会自动进入控制台界面,因为现在我们还没有创建应用,这里显示的就是0个
点击应用列表,创建应用,弹出的创建应用配置项,其中的内容随意填写即可
填写完成,点击立即创建,返回到应用列表,此时可发现我的应用下多出了一个应用项目
使用接口
安装模块
在 python 环境下使用该接口必须要安装模块
pip install baidu-aip
安装成功可见如下提示
生成一段语音
通过查看百度语音合成的 技术文档 ,可以发现如下的几个参数:
将这些参数传递到技术文档所给的框架中,就可以生成一段语音:
from aip import AipSpeech app_id = '你的Appid' api_key = '你的API key' secret_key = '你的 screct key' client = AipSpeech(app_id,api_key,secret_key) result = client.synthesis('人生得意须尽欢,莫使金樽空对月','zh','1', {"vol": 9, "spd": 4, "pit": 9, "per": 3, }) with open("audio.mp3","wb") as f: f.write(result)
运行完这一段代码之后,就会在当前文件夹下生成一个audio.mp3的音频文件,打开之后就是可以听到朗诵的诗句
小说文字转语音
在阅读了技术文档之后,可知这个模块最大的限制就是一次转换的语音不能超过1024字节(大约是512个汉字),所以我们要进行的第一步操作就是将一篇小说切割成若干个五百字数的文本文档。
首先我先找到一篇小说,将它复制到文档中,命名为read.txt 接下来我准备使用代码来切割小说内容,一段的字数为500字
先将小说的内容提取出来,每隔1000个字节(500字)加上“---”的符号作为切割标志
with open('read.txt','r') as a: text = a.readlines() for cut in text: #以1000个字节的长度进行分割 text_cut = re.findall('.{1000}', cut) text_cut.append(cut[(len(text_cut) * 1000):]) #在分割后的字符串中间插入"---" text_final = '---'.join(text_cut) #计算文本中有多少个"---"标志 times = text_final.count('---')
之后将文本以---为标志进行分割,并分别保存到一个新建文件夹test中。正常来说,列表的起始位为第0位,但是为了满足我们的阅读习惯,所以将这些文本从1开始计数
name = text_final.split('---')[n] with open('test/' + str(n + 1) + '.txt','w') as b: b.write(name)
然后我们在利用with open命令分别读取其中的文本内容,为接下来的阅读做准备。
with open('test/' + str(n + 1) + '.txt', 'r') as c: print('正在保存第' + str(n + 1) + '段内容......') lines = c.read()
最后一步,将提取出来的文本内容传入api接口,输出语音文件
完整代码(将三个参数替换成之前申请的内容)
import re from aip import AipSpeech app_id = 'id' api_key = 'APIkey' secret_key = 'screctkey' client = AipSpeech(app_id,api_key,secret_key) with open('read.txt','r') as a: text = a.readlines() for cut in text: #以1000个字节的长度进行分割 text_cut = re.findall('.{1000}', cut) text_cut.append(cut[(len(text_cut) * 1000):]) #在分割后的字符串中间插入"---" text_final = '---'.join(text_cut) #计算文本中有多少个"---"标志 times = text_final.count('---') for n in range(0,times+1): name = text_final.split('---')[n] with open('test/' + str(n + 1) + '.txt','w') as b: b.write(name) with open('test/' + str(n + 1) + '.txt', 'r') as c: print('正在保存第' + str(n + 1) + '段内容......') lines = c.read() result = client.synthesis(lines, 'zh', '1', {"vol": 9, "spd": 4, "pit": 9, "per": 3, }) with open('test/' + str(n + 1) + '.mp3', "wb") as d: print('正在生成第' + str(n + 1) + '段语音......') d.write(result)
实现结果:
打开test文件夹,点击mp3文件就可以开始听小说了
有一说一,这个百度人工智能所装换的语音非常像有个人在你旁边给你读书,体验感远超pyttsx3模块,非常nice!
百度的人工智能接口还有非常多好用的功能,例如人脸识别、语音转文字、人脸对比......感兴趣的同学可以自己去探索一下
以上所述就是小编给大家介绍的《Python实战---制作专属有声小说(调用百度语音合成接口)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 基于 Pub/Sub 的同步 RRPC 调用实战
- 实战使用 Arthas 排查生产问题:实例方法接口调用
- Jaeger-分布式调用链跟踪系统理论与实战
- Spring Cloud实战系列(二) - 客户端调用Rest + Ribbon
- Spring Cloud实战系列(三) - 声明式客户端调用Feign
- FGC实战:如何用Idea揪出开源组件调用System.gc导致频繁FGC
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ppk on JavaScript, 1/e
Peter-Paul Koch / New Riders Press / 2006-09-20 / USD 44.99
Whether you're an old-school scripter who needs to modernize your JavaScripting skills or a standards-aware Web developer who needs best practices and code examples, you'll welcome this guide from a J......一起来看看 《ppk on JavaScript, 1/e》 这本书的介绍吧!