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

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

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