用Pyttxs3、PyPDF3和Tkinter创建有声读物
智者说,无论你有多忙,都应该抽出时间来读一本好书,以避免自寻烦恼的无知。作为软件开发者,我们知道这句话的现实意义,但时间对我们来说永远是不够的。这就是为什么我们跑去找有声读物,我们都知道它们的价格并不便宜,也不免费。
在本教程中,我们将学习如何创建一个有声读物转换器,我们将使用Python库把PDF文件转换成与之相当的有声读物。
简介
为了建立我们的有声书转换器,我们将使用以下Python库。Pyttsx3,PyPDF3 和tkinter 。后者tkinter ,将用于创建一个对话窗口,我们将通过它来选择我们所需要的PDF文件。
随着我们的继续,我们将深入研究其他库。
前提条件
要理解这篇文章,读者需要具备以下条件。
- 对Python有良好的理解。
- [
Python3]安装在电脑上。 - [
Python text to speech]安装了库的第3版。 - [
Python PDF]安装了第3版。 - 充分了解 [
Tkinter]。
什么是PyPDF3?
从PyPDF3是一个纯Python库,是一个PDF工具包。它的建立是为了帮助完成以下工作。
- 提取文档信息(标题、作者等)。
- 逐页拆分文档。
- 逐页合并文档。
- 裁剪页面。
- 将多个页面合并为一个页面。
- 加密和解密PDF文件。
需要注意的是,由于这个库是从文件页面的角度建立的,它在处理没有正确页码的PDF文件时有问题。
应用
它可以作为管理或操作PDF的网站的工具。
什么是Pyttsx3?
Python Text to Speech version 3 (pyttsx3)是一个Python中的文本到语音的转换库。与其他库不同,它可以离线工作,并且与Python 2和3都兼容。
应用
它可以应用于桌面和移动应用程序和网站,为视力障碍者将文本转换为语音。
它可以用来创建有声读物。
安装要求
我们将在一个虚拟环境中安装本教程所需的软件包。虚拟环境有助于我们的项目管理。
我们将使用pipenv 来创建我们的虚拟环境。
首先,如果你的机器上没有安装pipenv ,请运行以下命令来安装它。
pip install pipenv
然后,为了创建虚拟环境,让我们通过运行以下命令来安装所需的软件包。
pipenv install pyttsx3
pipenv install PyPDF3
然后,我们用下面的命令激活环境。
pipenv shell
在这之后,我们就可以写我们的代码了,你将在下面看到。
编写我们的代码
在我们的虚拟环境中,让我们创建一个文件并将其命名为main.py 。然后,在其中写下以下代码。
# We first import the libraries we just installed
import pyttsx3
import PyPDF3
from tkinter import Tk # tkinter comes pre-installed with Python
from tkinter.filedialog import askopenfilename
Tk().withdraw() # prevents the root window from appearing
# Open the dialog window
file = askopenfilename()
# Read the name of the pdf file from the user
pdfreader = PyPDF3.PdfFileReader(file)
# Read the number of pages in the pdf file
pages = pdfreader.numPages
# Read all data from each page of the pdf file
for no in range(0,pages):
page = pdfreader.getPage(no)
text = page.extractText()
audio = pyttsx3.init()
audio.say(text)
# Save the audio in an mp3 file
'''Make sure to include the `save_to_file` method after the `say` method to get to record the audio of your book.'''
audio.save_to_file(text, 'myaudiobook.mp3')
audio.runAndWait()
结果
运行上述代码后,你会看到一个对话窗口弹出。

选择你所选择的PDF文件,当你的机器为你阅读时,你就可以享受你的书了。
注意:不是所有的PDF文件都会被读完并记录。尝试使用未编号页的PDF文件以获得更好的效果。
总结
你可以用[Python文本到语音]库探索更多的东西,以便能够改变语音、改变语速和语量。