Python实战---制作专属有声小说(调用百度语音合成接口)

摘要:
百度云界面调用百度的这个界面,对我们普通用户非常友好。它的很多功能都是免费的,我们每天可以免费调用这个接口5000次,这非常适合我们发挥这些功能。要注册百度云帐户,首先打开百度云语音合成模块界面地址,打开网站,单击“立即使用”选项,然后出现登录选项界面。

这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。

百度云接口调用

百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调用这个接口五千次,非常适合我们玩转这些功能。

注册百度云账号

首先打开百度云语音合成模块接口地址
打开网址后点击《立即使用》选项,然后会出现登录的选项界面。如果没有账号,需要先注册一个百度云账号,注册方法非常简单,我就不过多赘述了
登录账号之后,会自动进入控制台界面,因为现在我们还没有创建应用,这里显示的就是0个
Python实战---制作专属有声小说(调用百度语音合成接口)第1张

点击应用列表,创建应用,弹出的创建应用配置项,其中的内容随意填写即可

Python实战---制作专属有声小说(调用百度语音合成接口)第2张

填写完成,点击立即创建,返回到应用列表,此时可发现我的应用下多出了一个应用项目

Python实战---制作专属有声小说(调用百度语音合成接口)第3张

使用接口

安装模块

在python环境下使用该接口必须要安装模块

pip install baidu-aip

安装成功可见如下提示
Python实战---制作专属有声小说(调用百度语音合成接口)第4张

生成一段语音

通过查看百度语音合成的技术文档,可以发现如下的几个参数:
Python实战---制作专属有声小说(调用百度语音合成接口)第5张

将这些参数传递到技术文档所给的框架中,就可以生成一段语音:

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('---')

之后将文本以---为标志进行分割,并分别将内容赋值到name变量中。正常来说,列表的起始位为第0位,但是为了满足我们的阅读习惯,所以将这些文本从1开始计数

for n in range(0,times+1):
    name = text_final.split('---')[n]

最后一步,将提取出来的文本内容传入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]
    result = client.synthesis(name, '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)

实现结果:
Python实战---制作专属有声小说(调用百度语音合成接口)第6张

打开test文件夹,点击mp3文件就可以开始听小说了
Python实战---制作专属有声小说(调用百度语音合成接口)第7张

有一说一,这个百度人工智能所装换的语音非常像有个人在你旁边给你读书,体验感远超pyttsx3模块,非常nice!
百度的人工智能接口还有非常多好用的功能,例如人脸识别、语音转文字、人脸对比......感兴趣的同学可以自己去探索一下

免责声明:文章转载自《Python实战---制作专属有声小说(调用百度语音合成接口)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇eBay 消息发送(1)python操作RabbitMQ下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【python】Threadpool线程池任务终止简单示例

需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它;偶数则等待对应时长并完成所有任务;0则是错误,但不需要终止任务,可以自定义一些处理。 关键点 定义func函数处理需求 callback处理返回结果,只有偶数和0返回;奇数会一直执行;要控制线程池状态,则需要针对偶数和0时抛出异常,并捕获异常处理。 threadpool定义线程池并发 实现...

我与Python惺惺相惜

while循环 死循环,会一直一直的重复循环.True的首字母要大写. while True: print("我与世界格格不入,我只与你惺惺相惜") count = 1 while count <=5: print("我与世界各格格不入,我只与你惺惺相惜") count = count + 1 解析: count=1,进行判断1小于等于5条件成立...

python使用imap-tools模块下载邮件中的附件

最近在做一些email相关的办公自动化项目,发现一个第三方模块imap-tools不错, 网上没有啥相关介绍,所以记录下来. 环境: python3.8; imap-tools 0.39.0 需要pip 安装一下imap-tools模块 imap-tools模块是python的第三方扩展, 它使用标准库imaplib,并将常见的邮件处理事件封装,邮件处理起...

Python字符串格式化

http://www.cnblogs.com/JerySpace/archive/2010/12/17/1909621.html 字符串的格式化 在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为 格式标记字符串 % 要输出的值组 其中,左边部分的”格式标记字符串“可以完全和c中...

Gunicorn-配置详解

在之前的文章中有记录WSGI容器的作用,以及我们知道常见的容器就只有的uWSGI和Gunicorn,在之前的文章中有记录他们的特性及优缺点,在这就不在多做描述。接下来将着重记录一下Gunicorn的一些配置: config -c CONFIG, --config CONFIG Gunicorn配置文件路径,路径形式的字符串格式,如: gunicorn...

Python开发利器WingIDE破解方法

“工欲善其事,必先利其器。”刚开始接触Python的人大都用自带的LDLE,尽管它对于初学该语言非常有帮助,但许多开发人员更喜欢其它文本编辑器或集成开发环境。(IDEs)在此我不想展开阐述,Python 社区维护了一份Python 相关编辑器的清单, 涵盖了各种各样支持平台和软件许可协议。但是所给出的编辑器个人认为都不是很理想,一直想找一个类似于php的Z...