天氣真的是越來越冷啦,有時候我們想翻看網頁新聞,但是又冷的不想把手拿出來,移動鼠標翻看。這時候,是不是特別想電腦像講故事一樣,給我們念出來呢?人生苦短,我有python啊,試試用 Python 來朗讀給你聽吧。
網頁轉換成語音,步驟無外乎:
網頁正文識別,獲取到正文的文本內容;
文本轉語音,通過接口將文本轉換成語音文件;
語音文件的發聲,即將語音文件讀出;

1 網頁正文識別
之所以用 Python,就是因為 Python 有著豐富的庫,網頁正文識別也不在話下。這里用
readability、goose3
1.1 readability
readability 支持 Python3,使用 pip install readability-lxml 安裝即可。
readability 使用起來也很方便:
import requestsfrom readability import Documentresponse = requests.get('http://news.china.com/socialgd/10000169/20180616/32537640_all.html')doc = Document(response.text)print(doc.title())但是 readability 提取到的正文內容不是文本,里面仍包含 HTML 標簽。
當然也可以結合其他組件再對 HTML 進行處理,如 html2text,我們這里就不再延伸,有興趣的可以自行嘗試。
1.2 goose3
Goose 本來是一個用 Java 編寫的文章提取器,后來就有了 Python 實現版: goose3 。
使用起來也很方便,同時對中文支持也不錯。使用 pip install goose3 即可安裝。
>>> from goose3 import Goose>>> from goose3.text import StopWordsChinese>>> url = 'http://news.china.com/socialgd/10000169/20180616/32537640_all.html'>>> g = Goose({'stopwords_class': StopWordsChinese})>>> article = g.extract(url=url)>>> print(article.cleaned_text[:150])北京時間6月15日23:00(圣彼得堡當地時間18:00),2018年世界杯B組一場比賽在圣彼得堡球場展開角逐,伊朗1比0險勝摩洛哥,伊朗前鋒阿茲蒙半場結束前錯過單刀機會,鮑哈杜茲第95分鐘自擺烏
龍。這是伊朗20年來首度在世界杯決賽圈取勝。
本屆世界杯,既相繼出現替補便進球,貼補梅開二度以及東道主
可以看出網頁正文提取效果還不錯,基本滿足我們的要求,可以使用!
注意:goose 還有另外一個 Python2 的版本:Python-Goose,使用方法和 goose3 基本一樣。
2 文本轉語音
文本轉語音,百度、阿里、騰訊、訊飛等都有提供 REST API 接口,阿里和騰訊的申請相對時間較長,阿里的貌似還要收費,百度和訊飛的在線申請后即可使用。
沒辦法,好的東西得來總是要曲折一些。其中百度的沒有調用量的限制(其實默認是 200000 次/天),訊飛有每天 500 次的限制。
新聞熱點
疑難解答