利用Python将PDF文档转为MP3音频

1. 转语音工具

微信读书有一个功能,可以将书里的文字转换为音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多。

记得之前看到过Python有一个工具包,可以将文字转换为语音,支持英文和中文,而且可以调节语速语调、导出mp3等。

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

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

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

pip install pyttsx3

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

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

那就它了。

2. PDF转文本

既然是把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) 

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

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用Python中的PyPDF2和Pillow库来实现将PDF文件转换为JPG文件的功能。以下是实现的步骤: 1. 安装PyPDF2和Pillow库 可以使用pip命令安装这两个库,命令如下: ``` pip install PyPDF2 pip install Pillow ``` 2. 编写Python代码 ``` import os from PIL import Image import PyPDF2 # 定义PDF文件所在的文件夹路径 pdf_folder_path = 'path/to/pdf/folder' # 定义JPG文件保存的文件夹路径 jpg_folder_path = 'path/to/jpg/folder' # 遍历PDF文件夹中的所有文件 for filename in os.listdir(pdf_folder_path): if filename.endswith('.pdf'): # 定义PDF文件的路径 pdf_path = os.path.join(pdf_folder_path, filename) # 打开PDF文件 with open(pdf_path, 'rb') as pdf_file: # 创建一个PDF阅读器对象 pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 获取PDF文件的第一页 pdf_page = pdf_reader.getPage(0) # 将PDF页面转换为图像对象 image = pdf_page.convertToImage() # 定义JPG文件的路径 jpg_filename = os.path.splitext(filename)[0] + '.jpg' jpg_path = os.path.join(jpg_folder_path, jpg_filename) # 保存JPG文件 image.save(jpg_path, 'JPEG') ``` 在上面的代码中,我们首先定义了PDF文件所在的文件夹路径和JPG文件保存的文件夹路径。然后使用os模块遍历PDF文件夹中的所有文件,并对以.pdf结尾的文件进行处理。在处理PDF文件时,我们使用PyPDF2库打开PDF文件,并将第一页转换为图像对象。最后,使用Pillow库将图像保存为JPG文件。 注意:以上代码只会将PDF文件的第一页转换为JPG文件。如果需要将PDF文件的所有页面都转换为JPG文件,可以在遍历PDF页面时使用一个循环来处理每一页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Python大数据分析

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值