用Python将电子书转换为有声书的方法

710 阅读3分钟

读书是一个好习惯,但听书使这个过程更加方便。有声读物代替了传统书籍,因为我们可以随时随地轻松地听它们。如果我们能编写一个有声读物制作器,将电子书pdf转换成有声读物并为我们阅读,那将是多么有用啊?

在本教程中,我们将使用Python构建一个有声书制作器,为我们读出一本书。

使用Python将电子书读成有声读物

让我们进入制作图书阅读器或将PDF电子书转换为有声读物的Python脚本的过程!

1.安装所需的模块

首先,我们需要安装所需的模块,这将大大减轻我们编码有声读物制造商的工作。我们使用pip软件包管理器安装pyttsx3和PyPDF3模块。

pyttsx3是Python中的一个文本到语音的转换库,而PyPDF3是一个在Python中读取和编辑PDF文件的库。

pip install pyttsx3
pip install PyPDF3

2.导入PDF阅读器和TTS模块

在一个Python文件中,我们首先要导入所需的模块。

import PyPDF3
import pyttsx3

现在我们初始化pyttsx3引擎对象来读取。

engine = pyttsx3.init()

3.打开并阅读PDF

现在我们已经初始化了我们的语音引擎,我们需要打开PDF来读取其中的内容。如图所示,我们把PDF的名称传给open方法。

如果PDF不在python脚本的同一目录下,你需要把名字和PDF的位置一起传给它。

book = open('sample.pdf', 'rb')

为了逐行读取pdf的内容,并按照语音,我们使用PyPDF3模块的PdffileReader方法,如图所示。

然后我们从pdf阅读器的对象中提取文本,使用extractText方法。

pdfRead= PyPDF3.PdfFileReader(book)

#to start the reading from 1st page in the pdf
page = pdfRead.getPage(0)

#to extract text to read
text = page.extractText()

4.讲述PDF

由于我们已经打开并阅读了pdf内容,我们现在需要将这些数据输入到我们的pyttsx3库的语音引擎中。

#takes in message to read or text
engine.say(text)

engine.runAndWait()

在执行脚本时,代码开始阅读通过的PDF。最后的代码是这样的。

import PyPDF3
import pyttsx3

engine = pyttsx3.init()

book = open('sample.pdf', 'rb')
pdfRead= PyPDF3.PdfFileReader(book)

#to start the reading from 1st page in the pdf
page = pdfRead.getPage(0)

#to extract text to read
text = page.extractText()

#takes in message to read or text
engine.say(text)

engine.runAndWait()

5.改变语音

pyttsx3库为我们提供了各种类型的语音更改,例如:

设置改变语音的速度

rate = engine.getProperty('rate')   # gets the current rate of speech
engine.setProperty('rate', 125)     # sets up new rate of speech (passed in as 125 to change to 1.25x or 150 to make it to 1.5x)

设置改变语音的声音

voices = engine.getProperty('voices')       # gets the current voice type

#engine.setProperty('voice', voices[0].id)  #changing index, changes voices. 0 for male
engine.setProperty('voice', voices[1].id)   #changing index, changes voices. 1 for female

设置改变语音的音量

volume = engine.getProperty('volume')   #gets the current volume (min=0 and max=1)

engine.setProperty('volume',1.0)    # setting up volume level  between 0 and 1

我们还可以使用下面的代码保存完整的有声书文件--即完整的pdf(书)的语音文件 (类型.mp3)。

engine.save_to_file('text, 'audiobook.mp3')

结语

关于如何用Python编写有声读物制作者的教程就到此为止。我们希望你喜欢这个关于将PDF转换为有声读物的简短教程。来吧,玩玩这个脚本,让它变得更加直观和自动化吧