点击关注我哦

欢迎关注 “小白玩转Python”,发现更多 “有趣”

有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式。类似的APP有:喜马拉雅、得到和樊登读书等。

但是如果你有一本pdf格式的书籍,那么你不需要借助上述app,也可以实现自己的有声读物哦~只需要跟随小编学习如何用7行代码实现自己的有声读物。

一、基本实现

Python中有大量不同用途的库,在本文中,我们只需要用到两个库(pyttsx3,PyPDF2)来构建我们的有声读物。

可以通过pip来安装这两个库,

pip install PyPDF2pip install pyttsx3

1. 读取PDF文件

PyPDF2是Python中专门用来处理pdf文件的库,它允许在内存中对pdf进行操作。PyPDF2的主要功能如下所示:

· 提取文件信息,如题目、作者等· 按页分割文件· 按页合并文件· 裁剪页· 将多个页面合并为一个页面· 加密和解密pdf文件

通过这个库,我们将 pdf 文件一页一页地拆分,读取每一页上的文本,并将文本发送到下一步。

import PyPDF2pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))

2. 初始化扬声器

Python的pyttsx3库能够实现脱机将文本转换到语音。将上一步中识别到的文本传递给语音文本转换器。

import pyttsx3speaker = 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 speakerspeaker = 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 malespeaker.setProperty('voice', voices[0].id)#changing index, changes voices, 1 for femalespeaker.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

python语音分割_用7行Python代码构建自己的有声读物相关推荐

  1. 用7行Python代码构建自己的有声读物

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

  2. python换脸完整程序_小 200 行 Python 代码做了一个换脸程序

    原标题:小 200 行 Python 代码做了一个换脸程序 简介 在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸. 这个过程分四步: ...

  3. 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快

    原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...

  4. python抠图教程_简单几行Python代码实现8秒抠图的AI神器,根本无需PS(附教程)...

    曾几何时,「抠图」是一个难度系数想当高的活儿,但今天要介绍的这款神工具,只要 3 行代码 5 秒钟就可以完成高精度抠图,甚至都不用会代码,点两下鼠标就完成了. 感受下这款抠图工具抠地有多精细: 是不是 ...

  5. python语音库_介绍几个python的音频处理库

    图 3比如我的机器的地址就是 192.168.152.130.然后将这个ip地址填入 图2 的Host Name 一栏,注意默认端口为22,不要去改它,然后点击open,就会弹出一个登陆界面,接着输入 ...

  6. python文本替换 数据库_用几行python代码实现大量文本文件里的文本替换

    """ 用python进行大量文本替换. 因为工作需要,有时候我们需要替换大量文本文件里的特定文字,用python可以帮我们非常简单快速的处理. 其中最下面的if语句,当 ...

  7. python 语音分段_教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段...

    声音信号在现实生活中有很多,在如今这个信息爆炸的社会中,提取有用的声音信号也变的尤为重要.当我们采集了一段声音信号后,有时候需要将这段声音的每一句话分离开来做分析,提取我们需要的声音信息.在这里提供一 ...

  8. 基于python的证件照_用20行python代码给证件照换底色

    imread:读取图片: imshow:展示图片: waitkey:设置窗口等待,如果不设置,窗口会一闪而过: imread:读取图片: imshow:展示图片: waitkey:设置窗口等待,如果不 ...

  9. python语音对话查询起始路和目的地_精选:语音对话机器人,百行Python代码就能轻松实现...

    原标题:精选:语音对话机器人,百行Python代码就能轻松实现 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大 ...

最新文章

  1. 2022-2028年中国互联网+汽车行业深度调研及投资前景预测报告
  2. 直接线性变换(DLT)求解单应性矩阵
  3. IBM全面拥抱Linux,为“认知商业”提供POWER
  4. 2018-3-14智能算法(文章--优化问题的智能算法及其哲学内涵)笔记一(什么是优化问题)
  5. Linux下用户组、文件权限详解
  6. 滴滴数据挖掘竞赛题目
  7. [MapReduce] Google三驾马车:GFS、MapReduce和Bigtable
  8. Linux下显示当前目录下的全部目录或文件
  9. php扩展调用php函数,是否可以在PHP字符串中扩展函数调用?
  10. 背景图怎么置于底层_Ps素材教程含有刻度的背景图
  11. 页面载入时在导航栏显示背景图片
  12. Python字符串swapcase()
  13. 5G 时代,一加的机会在哪里?
  14. ElasticSearch5.1 基本概念和配置
  15. css 为什么给span加vertical-align: middle不起作用?
  16. 嘉楠科技:一家芯片创业公司的上云历程
  17. (伪)原创,采集工具应用
  18. Java开发翻译系统
  19. C语言中free函数如何确定释放的空间大小
  20. 分享一个免费的计算机书籍资料网站(含有编程语言,算法,人工智能,游戏开发等书籍资料)

热门文章

  1. windows10 C盘清理
  2. 改造一下jeecg中的部门树
  3. Android开发启动未注册的activity,Hook使用demo
  4. 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误
  5. .net core2.0 Memcached.ClientLibrary
  6. powerdesigner 反向工程 oracle,PowerDesigner oracle 反向工程到cdm文件
  7. Hive中COUNT的高级用法(条件过滤等)
  8. [NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP
  9. GCD与LCM【数论】
  10. 复习Python DB-API