利用 Python pyttsx3 将 PDF 文档转为语音音频

 

 

 

 

 

 

 

 

1. 转语音工具

微信读书里的电子书有配套的自动音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多

记得之前看到过 Python有一个工具包,可以将文字转换为语音,支持英文和中文的同时,还能调节语速语调、导出 mp3 等音频文件

去 Github 查了下,这个依赖库叫:pyttsx3

简单来说,pyttsx3 可以文字转语音,且是离线工作的,这一点就很实用

安装比较容易,直接在命令行用 pip 安装:

pip install pyttsx3

我准备动手试试,将 PDF 书籍转成音频

用什么书呢?最近在群里看到有人发张磊的新作《价值》电子书,这本今年刚出的畅销书盗版猖獗,我之前在微信读书里看过,对作者长期主义的观点深信不疑

那就它了

2. PDF转文本

肯定需要先读取 PDF 中的文字,再利用 pyttsx3 转语音

Python 中操作 PDF 的工具库主要是 PyPDF2,但发现编码实在有点繁琐

我就换了另一个库 pdfplumber,它与 PyPDF2 语法类似,用起来还算流畅

pdfplumber 可以处理 PDF 包括文本、表格、格式在内的各种信息,小而强大

# 读取PDF文档
pdf = pdfplumber.open("价值.pdf")

# 获取页数
print("总页数:",len(pdf.pages))
print("-----------------------------------------")

# 读取第4页
first_page = pdf.pages[3]
print("本页:",first_page.page_number+1)
print("-----------------------------------------")

# 导出第4页文本
text = first_page.extract_text()
print(text)

输出文字内容如下:

上面的代码做了几件事情:「读取 PDF 文档、读取页数、读取第 4 页、输出第 4 页文本」

3. 文本转语音

接下来开始将第 4 页的文本转化为音频

import pyttsx3

# 初始化来获取语音引擎
engine = pyttsx3.init()

# 去掉文本中的换行符
text = text.replace('\n','')

# 朗读文本
engine.say(text)
engine.runAndWait()

上面代码使用 pyttsx3 将文本转化为音频,然后朗读出来

我是在 jupyter notebook 上做实验的,代码执行后,电脑会直接朗读

最后,将生成的音频保存为 mp3 格式

# 保存音频到本地,格式为mp3
engine.save_to_file(text, 'test.mp3')
engine.runAndWait()

当然,你还可以调整声音的类型、速度、大小

# 调整人声类型
voices = engine.getProperty('voices')  
engine.setProperty('voice', voices[0].id)

# 调整语速,范围一般在0~500之间
rate = engine.getProperty('rate')                         
engine.setProperty('rate'200)     

# 调整声量,范围在0~1之间
volume = engine.getProperty('volume')                         
engine.setProperty('volume',0.8

最后听下生成的语音是什么样的?

test.mp3 来自AirPython 01:58

整体比较流畅,虽然不如微信读书语音听着那般舒服,但做做小工具还是不错的

转自AirPython.

我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

给作者打赏,选择打赏金额
¥1¥5¥10¥20¥50¥100¥200 自定义

​Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典