前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:merlin&

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


操作环境

  • Python版本: anaconda3 python3.7.4
  • 操作系统: Ubuntu19.10
  • 编译器: pycharm社区版
  • 用到的模块: pyttsx3,requests

pysstx3模块介绍

pyttsx3(Text to Speech)是一个语音转换模块,它可以在离线的环境下工作,支持多个引擎,而且兼容于Python2和Python3.

  • 首先下载pyttsx3模块
pip install pyttsx3

(Windows系统)若你没有安装pywin32模块,则还需安装此模块作为pyttsx3模块的依赖
安装pywin32

pip install pywin32

这个模块很奇怪,下载的过程中经常会报错,试了几台电脑和不同操作系统的结果也是一样,在检查网络和其他因素无误后多试几次就可以成功安装此模块.

安装成功提示如下图

注意:这个模块运行必须在python3.7.4版本及以下才可以运行,否则会由于版本过高报错

如果不知道自己的Python版本是多少,可以再终端输入,输出的第一行就是目前使用的Python版本号

  • 测试pyttsx3库

根据官网给出的简单示范,我们可以测试一下是否可以使用本模块

测试代码:

import pyttsx3engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()

若可以听到一个男声快速的说了一遍我们引用的句子,则证明本模块安装已经成功

  • 自定义修改朗读的语调、音色等参数

也是参照官方文档,将这些参数调整成一个比较舒服的状态

import pyttsx3engine = pyttsx3.init() # 创建对象""" 语速 """
rate = engine.getProperty('rate')   # 获取当前语速(默认值)
print (rate)                        # 打印当前语速(默认值)
engine.setProperty('rate', 175)     # 设置一个新的语速"""音量"""
volume = engine.getProperty('volume')   # 获取当前的音量 (默认值)(min=0 and max=1)
print (volume)                          # 打印当前音量(默认值)
engine.setProperty('volume',1.0)    # 设置一个新的音量(0 < volume < 1)"""音色"""
voices = engine.getProperty('voices')       # 获取当前的音色信息
engine.setProperty('voice', voices[0].id)  # 改变中括号中的值,0为男性,1为女性engine.say("Hello World!")
engine.runAndWait()
engine.stop()

在Windows系统中,这一段代码已经可以通过pyttsx3模块说出中文了,但是在Linux操作系统中,还需要修改一个参数

engine.setProperty('voice','zh')             //将音色中修改音色的语句替换

开始制作有声小说

通过刚才对pyttsx模块的讲解,我们已经可以了解到该模块的基本原理以及各个参数所代表的含义,接下来我们就以pyttsx3模块为基础构建一个简单的有声小说.

  • 基本思路

使用爬虫requests模块将小说文本从从网上下载到本地,并将内容保存在一个文本文件中,然后打开文本文件,调用pyttsx3模块对文字进行识别,并朗读出来.

  • 操作步骤

首先找到一个小说网站(我选择的是新笔趣阁小说网 因为这个网站没有设置反爬机制 比较适合我们练手)

然后随便找到一个小说,进入它的目录页,借助谷歌浏览器的插件xpath helper利用xpath语法提取到每一章小说

点进小说的内容页,同样利用插件提取到内容

然后就可以开始构建爬取小说的代码了
为了节省时间,我先简单的爬取一个章节

import requests
from lxml import etreedef main():#小说的详情页url = 'http://www.xbiquge.la/10/10489/'#请求内容response = requests.get(url).text#转化成xpath语法可以提取的形式html = etree.HTML(response)#提取小说内容页的网址data = html.xpath("//div[@class='box_con'][2]/div[@id='list']/dl/dd/a/@href")#为了节省时间,先只提取一个章节的内容sound = data[1]#构造小说内容页的网址new_url = 'http://www.xbiquge.la' + str(sound)#请求response_1 = requests.get(new_url).contenthtml_1 = etree.HTML(response_1)data_1 = html_1.xpath("//div[@id='content']/text()")#用replace方法将提取到文本中的\xa0替换掉noval = str(data_1).replace('\\xa0', '')#替换掉\rnoval_1 = noval.replace("\\r',", '')#将爬取到的小说内容存储到文本文件中with open('xiaoshuo.txt','w') as f:f.write(noval_1)if __name__ == '__main__':main()

运行完成之后,就可以发现当前文件夹下多出了一个名为xiaoshuo.txt的文件,这就是我们爬取到的小说内容

  • 导入有声阅读模块
def say(filename='xiaoshuo.txt'):with open(filename, 'r') as f:line = f.read()engine = pyttsx3.init()engine.setProperty('volume',1.0)engine.setProperty('rate', 175)engine.setProperty('voice', 'zh')engine.say(line)engine.runAndWait()

最后再设置一个可以选择章节的接口传入主函数,运行程序即可听到有声小说的内容

完整代码

import requests
from lxml import etree
import pyttsx3
===========================
||python学习群:695185429 ||
===========================
def main(a):#小说的详情页url = 'http://www.xbiquge.la/10/10489/'#请求内容response = requests.get(url).text#转化成xpath语法可以提取的形式html = etree.HTML(response)#提取小说内容页的网址data = html.xpath("//div[@class='box_con'][2]/div[@id='list']/dl/dd/a/@href")#为了节省时间,先只提取一个章节的内容sound = data[int(a)]#构造小说内容页的网址new_url = 'http://www.xbiquge.la' + str(sound)#请求response_1 = requests.get(new_url).contenthtml_1 = etree.HTML(response_1)data_1 = html_1.xpath("//div[@id='content']/text()")#用replace方法将提取到文本中的\xa0替换掉noval = str(data_1).replace('\\xa0', '')#替换掉\rnoval_0 = noval.replace("\\r',", '')noval_1 = noval_0.replace('[', '')#将爬取到的小说内容存储到文本文件中with open('xiaoshuo.txt','w') as f:f.write(noval_1)def say(filename='xiaoshuo.txt'):with open(filename, 'r') as f:line = f.read()engine = pyttsx3.init()engine.setProperty('volume',1.0)engine.setProperty('rate', 175)engine.setProperty('voice', 'zh')engine.say(line)engine.runAndWait()if __name__ == '__main__':a = input('输入想要朗读的章节(数字):')main(a)say()

等你运行完这个程序,你就会发现机器人的声音实在是太难听了.如果想要做更加清晰的有声小说,可以调用百度人工智能的api接口来实现这个功能

Python制作属于自己的有声小说相关推荐

  1. 用Python制作有声小说

    作者:菜鸟哥 来源:程序员GitHub 大家好,欢迎来到 「Python数据之道」 ! 有不少朋友都热衷于看小说.俗话说:小说阅读一时爽,一直阅读一直爽.但是小说阅读时间久了,会给我们的眼睛带来很严重 ...

  2. 越来越好玩,用ChatGPT+Python 做有声小说!

    菜鸟学Python-第623篇原创 现在我们几百人的会员群已经玩的越来越高级了,利用chatgpt花色玩法!有玩百度问一问每天早上6点多起来抢单的,有玩微信机器人帮人部署接单的,也有玩咸鱼去给大学生指 ...

  3. Python喜马拉雅有声小说音频文件爬虫

    今天爬取的是喜马拉雅有声小说. 目标网址:https://www.ximalaya.com/youshengshu/ 分析操作开始: 首先在喜马拉雅有声小说页面,播放任意音频. 当播放音频时,打开抓包 ...

  4. 懒人畅听网,有声小说类目数据采集,多线程速采案例,Python爬虫120例之23例

    多线程在 Python 爬虫学习过程中应用落地,提速,提速,再提速. 目标站点分析 本次要抓取的目标为懒人畅听网,其中我随机选择了一个分类,有声小说频道,其余频道可使用雷同的办法抓取,增加遍历之后,可 ...

  5. 黑豆文本转语音工具V1.3(有声小说,地摊语音等制作领导者)

    介绍: 黑豆文本转语音工具V1.3 分享一款超级好用的文本转语音工具!功能强大,AI语音音色堪比真人! 制作有声小说美滋滋!因本人最近迷一些网络小说,看得眼睛晕头转向的! 没辙找到这个工具,完美解决我 ...

  6. python爬取有声小说网站实现自动下载实例

    最近想下载一些有声小说,但是苦于没有找到批量下载,每次都是单集单集的下载的,觉得很麻烦,就考虑用python写一个爬虫来实现自动搜集小说,自动下载.下面就是开始展开漫漫的爬虫之路. 基础的就不多说了, ...

  7. 多人配音怎么制作的?给你推荐几个有声小说多人配音软件

    在这个自媒体时代,我们拍摄短视频时,偶尔会出现需要制作多人对话的情况,而面对多人配音,很多人会措手不及,其实我们只要借用一些软件就可以轻松完成多人配音的操作.那么,你们想知道多人配音怎么制作的吗?在这 ...

  8. python爬取有声小说_2019-04-23-Python爬取有声小说

    Python爬取有声小说 [toc] 通过python爬取网站的资源,实现批量下载功能: 记录一次自己的学习经历,小白,非专业,难免有不足之处,望读者取其精华! 摘要 功能如下: 1.批量下载 2.批 ...

  9. Python爬取有声小说

    Python爬取有声小说 文章目录 Python爬取有声小说 摘要 1.获取下载链接 2.分析规律,循环爬取 3.保存到本地,批量命名 4.界面设计 5.效果展示 通过python爬取网站的资源,实现 ...

最新文章

  1. 【MongoDB】chunk too big to move的解决方案
  2. websocket在.net4.5中实现的简单demo
  3. 岭回归和lasso回归_正则化(2):与岭回归相似的 Lasso 回归
  4. 如何修改WAMP中mysql默认空密码
  5. CF9D-How many trees?【dp】
  6. 干货 | 算法和编程面试题精选TOP50!(附代码+解题思路+答案)
  7. 编写第一个Linux环境下程序的编译,下载记录
  8. 面向对象分析与设计阅读笔记一
  9. 项目范围管理论文提纲
  10. PowerBuilder开发简单计算器
  11. HDFS常用命令(总结)
  12. html滑动验证到最右边,jQuery滑块拖动到最右边验证插件
  13. 下载SNP周围的氨基酸序列的fastq文件
  14. HTML5文件夹隐藏了怎么打开,win10怎么打开隐藏文件夹
  15. linux temp文件夹在哪_手机文件夹是英文不敢乱删?找出这5个文件夹,手机瞬间轻松6个G...
  16. python:matplotlib基础(3)
  17. 财务报表包含哪些表?是季报还是月报?
  18. 简单配置Mybatis,Druid访问MySQL数据库
  19. Java实现七牛云文件或图片上传下载
  20. 酒店WiFi覆盖工程

热门文章

  1. 2019 拖拉机(双端队列广搜)
  2. 9大常见光固化3D打印树脂分析
  3. 008产品设计的思考(创造思维+用户体验+用户画像+用户群体)
  4. 移动磁盘提示文件系统损坏要怎么恢复数据
  5. 送给年轻而不服输的你
  6. nacos实现服务注册与两种消费方式
  7. Artifact “xxx - xxxx“:war exploded:部署工件时出错。请参阅服务器日志了解详细信息
  8. android 自定义相册选择,Android图片选择器,支持拍照、从相册选择、裁剪、自定义主题...
  9. windows11 mars xlog解密环境配置
  10. 蓝桥杯 算法训练 Beaver's Calculator