点击关注我哦

欢迎关注 “小白玩转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代码构建自己的有声读物相关推荐

  1. python语音分割_用7行Python代码构建自己的有声读物

    点击关注我哦 欢迎关注 "小白玩转Python",发现更多 "有趣" 有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式.类似 ...

  2. 理解神经网络,从简单的例子开始(1)7行python代码构建神经网络

    理解神经网络,从简单的例子开始(1)7行python代码构建神经网络 前言 本文分为两个部分,第一个部分是一个简单的实例:9行Python代码搭建神经网络,这篇文章原文为:原文链接, 其中中文翻译版来 ...

  3. python 按钮更改输入框的值_利用 50 行 Python 代码构建一个在线文本生成器!

    本指南将引导你学习构建一个自动完成任意输入文本的Web应用程序. 作者 | Dev Sharma译者 | 苏本如,责编 | 郭芮出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我 ...

  4. 利用 50 行 Python 代码构建一个在线文本生成器!

    本指南将引导你学习构建一个自动完成任意输入文本的Web应用程序. 作者 | Dev Sharma 译者 | 苏本如,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中 ...

  5. python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架

    转载:https://www.jqhtml.com/11084.html 既然已经有像 Scrapy 这样优秀的爬虫框架,为何还要造轮子呢?嗯,其实最主要的还是想要将学习到 Python 知识综合起来 ...

  6. DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现

    作者 | Samuel Noriega 译者 | Freesia 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]最近,谷歌 DeepMInd 发表论文( DRAW: ...

  7. 7行Python代码,搭建可以识花的机器学习App|视频教程

    你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式. Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类 ...

  8. 158行Python代码复现:DeepMind提图像生成的递归神经网络DRAW

    授权自AI科技大本营(ID:rgznai100) 本文约5200字,建议阅读10+分钟. 本文作者基于代码实现系统的思路,详细阐述了 DRAW 的概念.架构和优势等. [ 导读 ]最近,谷歌 Deep ...

  9. 9行Python代码搭建神经网络

    9行Python代码搭建神经网络 Kaiser谈笑风生 4月前发表至趣味项目,5995次访问 原文:How to build a simple neural network in 9 lines of ...

最新文章

  1. TCP连接的建立和终止
  2. mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
  3. 【Android】 Android中spinner下拉列表的使用
  4. centos6.5 bash基础命令2
  5. 以拼多多为例,中国互联网企业在农业上都做了哪些努力?
  6. Mongodb源码分析--Mongos之分布式锁
  7. RedHat Enterprise Linux 5下安装firefox
  8. IEEE 802.15.4g协议介绍
  9. dBm、dBW和W转换
  10. 第三届全国平面公益广告大赛暨全国大学生公益广告征集活动
  11. 关于Excel显示“文件已损坏,无法打开”的解决办法
  12. OH----调试T7520过程中对 linux usb dwc3的总结
  13. 更深层次理解Python的 列表、元组、字典、集合(工作面试学习必需掌握的知识点)
  14. 13. Roman to Integer
  15. python:print函数打印空行
  16. 12月17日云栖精选夜读 | 用PrettyPrinter,让Python输出更漂亮,你值得拥有...
  17. 云函数支付以及支付回调
  18. android 短信接口收拦截,给手机装“来点黑名单” 拒绝垃圾短信和电话
  19. 法瑞意游记+攻略 五(巴黎-苏黎世 TGV 十二月三十日) 未完
  20. Use of undefined constant WP_ADMIN - assumed ‘WP_ADMIN‘

热门文章

  1. 墨菲安全入选中关村科学城24个重点项目签约
  2. HTML5期末大作业:仿商城网站设计—— 绿色特产商城购物Html+Css+javascript的网页制作
  3. [量子计算-001]用一个例子解释量子计算
  4. 个人日程管理软件(最新版本1.6 beta 202009261922)
  5. 工科除计算机之外好专业,2018前景最好的工科专业 国内十大最好工科专业排名...
  6. 全面解读数字化中台!
  7. 数据中台最通俗的解释
  8. 计算机主机接口有哪些,计算机接口有哪些
  9. Android 4.x Gallery2分析
  10. python 吾爱破解_吾爱破解邀请码获取器|吾爱优惠码生成器 Python版_最火软件站...