如何利用Python將PDF文檔轉(zhuǎn)為MP3音頻

點擊上方"藍字"關注我們
記錄? ?分享? ?成長
1. 轉(zhuǎn)語音工具
微信讀書里的電子書有配套的自動音頻,而且聲音優(yōu)化的不錯,比傳統(tǒng)的機械朗讀聽起來舒服很多。
記得之前看到過Python有一個工具包,可以將文字轉(zhuǎn)換為語音,支持英文和中文,而且能調(diào)節(jié)語速語調(diào)、導出mp3等。
去Github查了下,這個庫叫:pyttsx3

簡單來說,pyttsx3可以文字轉(zhuǎn)語音,且是離線工作的,這一點就很實用。
安裝比較容易,直接在命令行用pip安裝:
pip?install?pyttsx3
我準備動手試試,將PDF書籍轉(zhuǎn)成音頻。
用什么書呢?最近在群里看到有人發(fā)張磊的新作《價值》電子書,這本今年剛出的暢銷書盜版猖獗,我之前在微信讀書里看過,對作者長期主義的觀點深信不疑。
那就它了。
2. PDF轉(zhuǎn)文本
既然是把PDF轉(zhuǎn)化成語音,肯定是需要先讀取PDF中的文字,再利用pyttsx3轉(zhuǎn)語音。
Python中操作PDF的工具庫主要是PyPDF2,但發(fā)現(xiàn)編碼實在有點繁瑣,我就換了另一個庫pdfplumber,與PyPDF2語法類似,用起來還算流暢。
pdfplumber可以處理PDF包括文本、表格、格式在內(nèi)的各種信息,小而強大。
#?讀取PDF文檔
pdf?=?pdfplumber.open("價值.pdf")
#?獲取頁數(shù)
print("總頁數(shù):",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文檔、讀取頁數(shù)、讀取第4頁、輸出第4頁文本」
3. 文本轉(zhuǎn)語音
接下來開始將第4頁的文本轉(zhuǎn)化為音頻。
import?pyttsx3
#?初始化來獲取語音引擎
engine?=?pyttsx3.init()
#?去掉文本中的換行符
text?=?text.replace('\n','')
#?朗讀文本
engine.say(text)
engine.runAndWait()
上面代碼使用pyttsx3將文本轉(zhuǎn)化為音頻,然后朗讀出來。我是在jupyter notebook上做實驗的,代碼執(zhí)行后,電腦會直接朗讀。
也可以將生成的音頻保存為mp3格式。
#?保存音頻到本地,格式為mp3
engine.save_to_file(text,?'test.mp3')
engine.runAndWait()
當然你還可以調(diào)整聲音的類型、速度、大小。
#?調(diào)整人聲類型
voices?=?engine.getProperty('voices')??
engine.setProperty('voice',?voices[0].id)
#?調(diào)整語速,范圍一般在0~500之間
rate?=?engine.getProperty('rate')?????????????????????????
engine.setProperty('rate',?200)?????
#?調(diào)整聲量,范圍在0~1之間
volume?=?engine.getProperty('volume')?????????????????????????
engine.setProperty('volume',0.8)?
最后聽下生成的語音是什么樣的?
整體比較流暢,雖然不如微信讀書語音聽著那般舒服,但做做小工具還是不錯的。
Python大數(shù)據(jù)分析
data creates?value
掃碼關注我們
