python把PDF念給你聽

      網友投稿 915 2025-03-31

      1. 轉語音工具

      微信讀書有一個功能,可以將書里的文字轉換為音頻,而且聲音優化的不錯,比傳統的機械朗讀聽起來舒服很多。

      記得之前看到過Python有一個工具包,可以將文字轉換為語音,支持英文和中文,而且可以調節語速語調、導出mp3等。

      去Github查了下,這個庫叫:pyttsx3

      簡單來說,pyttsx3可以文字轉語音,而且是離線工作的,這一點就很實用。

      安裝比較容易,直接在命令行用pip安裝:

      pip install pyttsx3

      1

      我準備動手試試,將PDF書籍轉成音頻。

      我們任選一本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)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      輸出:

      上面的代碼做了幾件事情: 「讀取PDF文檔、讀取頁數、讀取第4頁、輸出第4頁文本」

      3. 文本轉語音

      接下來開始將第4頁的文本轉化為音頻。

      import pyttsx3 # 初始化來獲取語音引擎 engine = pyttsx3.init() # 去掉文本中的換行符 text = text.replace('\n','') # 朗讀文本 engine.say(text) engine.runAndWait()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      上面代碼使用pyttsx3將文本轉化為音頻,然后朗讀出來。我是在jupyter notebook上做實驗的,代碼執行后,電腦會直接朗讀。

      也可以將生成的音頻保存為mp3格式。

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

      1

      2

      3

      當然你還可以調整聲音的類型、速度、大小。

      # 調整人聲類型 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)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      整體還是比較流暢的,雖然不如微信讀書語音聽著那般舒服,但做做小工具還是不錯的。

      4. 文本轉語音

      從微信下載下來的語音是 mp3 格式的,想調用百度語音 api,發現不支持 mp3,支持 wav。

      準備:

      需要安裝 pydub 庫,直接pip install pydub就好了。

      還需要安裝 ffmpeg.exe 文件,然后再配置一下就好了,請看:

      ffmpeg.exe 的安裝及配置,與常見問題

      原理:

      讀取 mp3 音頻的波形數據,然后再寫入 wav 文件。

      from pydub import AudioSegment import wave # 讀取mp3的波形數據 sound = AudioSegment.from_file("666.mp3", format = 'MP3') # 將讀取的波形數據轉化為wav f = wave.open("777.wav", 'wb') f.setnchannels(1) # 頻道數 f.setsampwidth(2) # 量化位數 f.setframerate(16000) # 取樣頻率 f.setnframes(len(sound._data)) # 取樣點數,波形數據的長度 f.writeframes(sound._data) # 寫入波形數據 f.close()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      python把PDF念給你聽

      11

      12

      13

      14

      運行效果圖:

      原 mp3 只有 2k 左右,轉化后 31.5k,聽著效果跟原音頻沒有差別,保真度很高!

      Python 語音通話

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:橫排文本框怎么設置(橫排文本框怎么設置文字間距)
      下一篇:word表格外框線和內框線如何分別設置(word的表格外框線和內框線怎么設置)
      相關文章
      激情综合亚洲色婷婷五月| 亚洲性无码av在线| 亚洲国产精品专区| 亚洲综合视频在线| 亚洲成色999久久网站| 国产亚洲AV无码AV男人的天堂 | 亚洲av中文无码| 亚洲AV无码精品国产成人| 亚洲国产视频久久| 日本亚洲色大成网站www久久| 亚洲AV美女一区二区三区| 亚洲av女电影网| 18gay台湾男同亚洲男同| 久久久亚洲欧洲日产国码是AV| 综合自拍亚洲综合图不卡区| 久久亚洲私人国产精品vA| 亚洲毛片免费观看| 亚洲av无码一区二区三区天堂古代| 亚洲一卡二卡三卡| 中文字幕无码亚洲欧洲日韩| 亚洲人成77777在线观看网| 亚洲色少妇熟女11p| 日本亚洲欧美色视频在线播放| 亚洲av纯肉无码精品动漫| 亚洲 另类 无码 在线| 亚洲精品线路一在线观看| 久久青青草原亚洲av无码| 国产亚洲真人做受在线观看| 久久亚洲国产欧洲精品一| 亚洲ⅴ国产v天堂a无码二区| 中文字幕亚洲综合久久2| 亚洲伊人久久大香线蕉| 中文字幕在线日亚洲9| 亚洲1区2区3区精华液| 亚洲成AV人网址| 亚洲欧洲∨国产一区二区三区 | 一区二区亚洲精品精华液 | 国产成人亚洲精品无码AV大片| 亚洲国产精品嫩草影院久久| 国产亚洲情侣一区二区无码AV| 久久精品国产亚洲沈樵|