用7行Python代码构建自己的有声读物
点击关注我哦
欢迎关注 “小白玩转Python”,发现更多 “有趣”
有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式。类似的APP有:喜马拉雅、得到和樊登读书等。
但是如果你有一本pdf格式的书籍,那么你不需要借助上述app,也可以实现自己的有声读物哦~只需要跟随小编学习如何用7行代码实现自己的有声读物。
一、基本实现
Python中有大量不同用途的库,在本文中,我们只需要用到两个库(pyttsx3,PyPDF2)来构建我们的有声读物。
可以通过pip来安装这两个库,
pip install PyPDF2
pip install pyttsx3
1. 读取PDF文件
PyPDF2是Python中专门用来处理pdf文件的库,它允许在内存中对pdf进行操作。PyPDF2的主要功能如下所示:
· 提取文件信息,如题目、作者等
· 按页分割文件
· 按页合并文件
· 裁剪页
· 将多个页面合并为一个页面
· 加密和解密pdf文件
通过这个库,我们将 pdf 文件一页一页地拆分,读取每一页上的文本,并将文本发送到下一步。
import PyPDF2
pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))
2. 初始化扬声器
Python的pyttsx3库能够实现脱机将文本转换到语音。将上一步中识别到的文本传递给语音文本转换器。
import pyttsx3
speaker = pyttsx3.init()
3. 播放有声读物
使用 PyPDF2实现从 pdf 文件中逐页提取文本。通过读取文本并将其输入到 pyttsx3的扬声器引擎,循环遍历每一页,它会大声朗读 pdf 页面上的文本,最后停止pyttsx3的扬声器引擎。
for page_num in range(pdfReader.numPages):text = pdfReader.getPage(page_num).extractText()speaker.say(text)speaker.runAndWait()
speaker.stop()
上述步骤的所有代码如下所示:
import pyttsx3, PyPDF2pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))speaker = pyttsx3.init()for page_num in range(pdfReader.numPages):text = pdfReader.getPage(page_num).extractText()speaker.say(text)speaker.runAndWait()
speaker.stop()
二、改变音色、语速和音量
我们可以调整有声读物的速度和音量,当然也可以改变它的音色(例如男声改为女声)。
1. 速度
初始化 pyttsx3库,并使用 getProperty (“ rate”)获得当前的通话速率。使用 setProperty (‘ rate’ ,x)更改说话的频率,其中 x = 100表示正常速度。
# Initialize the speaker
speaker = pyttsx3.init()
rate = speaker.getProperty('rate')
print(rate)
speaker.setProperty('rate', 125)
2. 音色
初始化 pyttsx3库,并使用 getProperty (“ voice”)获取说话者的当前性别。使用 setProperty (“ voice” ,voice [ x ])改变说话者的性别。这里 x = 0表示男性,x = 1表示女性。
voices = speaker.getProperty('voices')
print(voices)
#changing index, changes voices, 0 for male
speaker.setProperty('voice', voices[0].id)
#changing index, changes voices, 1 for female
speaker.setProperty('voice', voices[1].id)
3. 音量
初始化 pyttsx3库,并使用 getProperty (“ volume”)获取当前音量。使用 setProperty (‘ volume’ ,x)更改扬声器的音量。音量范围是从0到1,其中0是静音,1是最大音量。
volume = engine.getProperty('volume')
print(volume)
engine.setProperty('volume',1.0)
4.将声音保存到音频文件:
使用下面的方法就可以将音频输出(audiobook)保存到 mp3文件中。
engine.save_to_file(text, 'audio.mp3')
engine.runAndWait()
三、结论:
在本文中,我们介绍了一个基本有声读物的实现,它可以使用几行 python 代码读取整个 pdf 文档并朗读出来。为了获得更好的音频效果,还可以改变音色、调整速率和音量。
· END ·
HAPPY LIFE
用7行Python代码构建自己的有声读物相关推荐
- python语音分割_用7行Python代码构建自己的有声读物
点击关注我哦 欢迎关注 "小白玩转Python",发现更多 "有趣" 有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式.类似 ...
- 理解神经网络,从简单的例子开始(1)7行python代码构建神经网络
理解神经网络,从简单的例子开始(1)7行python代码构建神经网络 前言 本文分为两个部分,第一个部分是一个简单的实例:9行Python代码搭建神经网络,这篇文章原文为:原文链接, 其中中文翻译版来 ...
- python 按钮更改输入框的值_利用 50 行 Python 代码构建一个在线文本生成器!
本指南将引导你学习构建一个自动完成任意输入文本的Web应用程序. 作者 | Dev Sharma译者 | 苏本如,责编 | 郭芮出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我 ...
- 利用 50 行 Python 代码构建一个在线文本生成器!
本指南将引导你学习构建一个自动完成任意输入文本的Web应用程序. 作者 | Dev Sharma 译者 | 苏本如,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中 ...
- python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架
转载:https://www.jqhtml.com/11084.html 既然已经有像 Scrapy 这样优秀的爬虫框架,为何还要造轮子呢?嗯,其实最主要的还是想要将学习到 Python 知识综合起来 ...
- DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现
作者 | Samuel Noriega 译者 | Freesia 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]最近,谷歌 DeepMInd 发表论文( DRAW: ...
- 7行Python代码,搭建可以识花的机器学习App|视频教程
你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式. Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类 ...
- 158行Python代码复现:DeepMind提图像生成的递归神经网络DRAW
授权自AI科技大本营(ID:rgznai100) 本文约5200字,建议阅读10+分钟. 本文作者基于代码实现系统的思路,详细阐述了 DRAW 的概念.架构和优势等. [ 导读 ]最近,谷歌 Deep ...
- 9行Python代码搭建神经网络
9行Python代码搭建神经网络 Kaiser谈笑风生 4月前发表至趣味项目,5995次访问 原文:How to build a simple neural network in 9 lines of ...
最新文章
- TCP连接的建立和终止
- mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
- 【Android】 Android中spinner下拉列表的使用
- centos6.5 bash基础命令2
- 以拼多多为例,中国互联网企业在农业上都做了哪些努力?
- Mongodb源码分析--Mongos之分布式锁
- RedHat Enterprise Linux 5下安装firefox
- IEEE 802.15.4g协议介绍
- dBm、dBW和W转换
- 第三届全国平面公益广告大赛暨全国大学生公益广告征集活动
- 关于Excel显示“文件已损坏,无法打开”的解决办法
- OH----调试T7520过程中对 linux usb dwc3的总结
- 更深层次理解Python的 列表、元组、字典、集合(工作面试学习必需掌握的知识点)
- 13. Roman to Integer
- python:print函数打印空行
- 12月17日云栖精选夜读 | 用PrettyPrinter,让Python输出更漂亮,你值得拥有...
- 云函数支付以及支付回调
- android 短信接口收拦截,给手机装“来点黑名单” 拒绝垃圾短信和电话
- 法瑞意游记+攻略 五(巴黎-苏黎世 TGV 十二月三十日) 未完
- Use of undefined constant WP_ADMIN - assumed ‘WP_ADMIN‘
热门文章
- 墨菲安全入选中关村科学城24个重点项目签约
- HTML5期末大作业:仿商城网站设计—— 绿色特产商城购物Html+Css+javascript的网页制作
- [量子计算-001]用一个例子解释量子计算
- 个人日程管理软件(最新版本1.6 beta 202009261922)
- 工科除计算机之外好专业,2018前景最好的工科专业 国内十大最好工科专业排名...
- 全面解读数字化中台!
- 数据中台最通俗的解释
- 计算机主机接口有哪些,计算机接口有哪些
- Android 4.x Gallery2分析
- python 吾爱破解_吾爱破解邀请码获取器|吾爱优惠码生成器 Python版_最火软件站...