是不是有的時候懶得自己看新聞?那麼不妨試試用 python 來朗讀給你聽吧。
網頁轉換成語音,步驟無外乎:
網頁正文識別,獲取到正文的文字內容;
文字轉語音,通過介面將文字轉換成語音檔案;
語音檔案的發聲,即將語音檔案讀出;
01:網頁正文識別
之所以用 python,就是因為 python 有著豐富的庫,網頁正文識別也不在話下。這裡我嘗試了 readability、goose3。
1.1 readability
readability 支援 python3,使用 pip install readability-lxml 安裝即可。
readability 使用起來也很方便:
import requests
from readability import document
response = requests.get(『
doc = document(response.text)
print(doc.title())
但是 readability 提取到的正文內容不是文字,裡面仍包含 html 標籤。
當然也可以結合其他元件再對 html 進行處理,如 html2text,我們這裡就不再延伸,有興趣的可以自行嘗試。
1.2 goose3
使用起來也很方便,同時對中文支援也不錯。使用 pip install goose3 即可安裝。
from goose3 import goosefrom goose3.text import stopwordschinese
url = 『
g = goose()
article = g.extract(url=url)
print(article.cleaned_text[:150])
北京時間6月15日23:00(聖彼得堡當地時間18:00),2023年世界盃b組一場比賽在聖彼得堡球場展開角逐,伊朗1比0險勝摩洛哥,伊朗前鋒阿茲蒙半場結束前錯過單刀機會,鮑哈杜茲第95分鐘自擺烏
龍。這是伊朗20年來首度在世界盃決賽圈取勝。
本屆世界盃,既相繼出現替補便進球,貼補梅開二度以及東道主
可以看出網頁正文提取效果還不錯,基本滿足我們的要求,可以使用!
注意:goose 還有另外乙個 python2 的版本:python-goose,使用方法和 goose3 基本一樣。
02:文字轉語音
2.1 baidu-aip 的使用
使用示例如下:
if not isinstance(result, dict):
with open(『auido.***』, 『wb』) as f:
f.write(result)
介面引數:
介面對單次傳入的文字進行了限制,合成文字長度必須小於 1024 位元組,如果文字長度過長,就需要進行切割處理,採用多次請求的方式,分別轉換成語音檔案,最後再將多個語音檔案合併成乙個。
2.2 文字切割
可以使用如下**將文字分割成多個長度為 500 的文字列表
text_list = [text[i:i+500] for i in range(0, len(text), 500)]
2.3 語言檔案合併
我們使用 pydub 來處理生成的音訊檔案。使用 pip install pydub 即可安裝。
若還有問題,可以參考官網配置:
def merge_voice(file_list):
voice_dict = {}
song = none
for i,f in enumerate(file_list):
if i == 0:
song = audiosegment.from_file(f,「***」)
else:
song += audiosegment.from_file(f,「***」)
os.unlink(f)
使用 pip install playsound 安裝後即可使用。
使用也很簡單:
python page2voice.py -u 「
執行後,**就會自動解析網頁並進行朗讀啦。
04:總結
至此,網頁到音訊的轉換就結束了。當然程式沒有這麼完美,比如中英文混合的網頁解析和轉換的結果就不怎麼理想,但是純中文的新聞頁面效果還是不錯的。原始碼已上傳至 github:
python實現自動化列印
這次真的是出於實際需要,想要用python寫個小指令碼 老闆發給我乙份包含幾百個人資訊的pdf檔案,如果乙份乙份開啟檔案,點列印我感覺要看到眼花。發現呼叫電腦程式需要用到win32這個庫,而且初略的看了下就發現此庫非常nb,怎麼說,這個庫可以同計算機進行互動,比如彈出提示框,或者呼叫系統內建一些程式...
python實現介面自動化(1)
http簡介 http協議是什麼呢,是乙個基於 請求 與 響應 模式的,無狀態,應用層的協議 url詳解 http https 為兩種協議型別,第一種為不加密的,第二種加密的 www.baidu.com 稱為主機位址或者網域名稱 192.168.1.1 8080 位址加埠號 localhost808...
利用Python實現報表自動化
匯入源資料 import pandas as pd from datetime import datetime data pd.read csv r users faye desktop order 14.1.csv parse dates 成交時間 parse dates將資料解析為時間格式 da...