這篇文章給大家分享的是有關(guān)怎么用Python來朗讀網(wǎng)頁的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的古縣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1 網(wǎng)頁正文識別
之所以用 Python,就是因為 Python 有著豐富的庫,網(wǎng)頁正文識別也不在話下。這里我嘗試了 readability
、goose3
。1.1 readability
readability 支持 Python3,使用 pip install readability-lxml
安裝即可。
readability 使用起來也很方便:
import requests
from readability import Document
response = requests.get('http://news.china.com/socialgd/10000169/20180616/32537640_all.html')
doc = Document(response.text)
print(doc.title())
但是 readability 提取到的正文內(nèi)容不是文本,里面仍包含 HTML 標簽。
當(dāng)然也可以結(jié)合其他組件再對 HTML 進行處理,如 html2text
,我們這里就不再延伸,有興趣的可以自行嘗試。
1.2 goose3
Goose 本來是一個用 Java 編寫的文章提取器,后來就有了 Python 實現(xiàn)版: 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(圣彼得堡當(dāng)?shù)貢r間18:00),2018年世界杯B組一場比賽在圣彼得堡球場展開角逐,伊朗1比0險勝摩洛哥,伊朗前鋒阿茲蒙半場結(jié)束前錯過單刀機會,鮑哈杜茲第95分鐘自擺烏
龍。這是伊朗20年來首度在世界杯決賽圈取勝。
本屆世界杯,既相繼出現(xiàn)替補便進球,貼補梅開二度以及東道主
可以看出網(wǎng)頁正文提取效果還不錯,基本滿足我們的要求,可以使用!
注意:goose 還有另外一個 Python2 的版本:
Python-Goose
,使用方法和 goose3 基本一樣。
文本轉(zhuǎn)語音,百度、阿里、騰訊、訊飛等都有提供 REST API 接口,阿里和騰訊的申請相對時間較長,阿里的貌似還要收費,百度和訊飛的在線申請后即可使用。
沒辦法,好的東西得來總是要曲折一些。其中百度的沒有調(diào)用量的限制(其實默認是 200000 次/天),訊飛有每天 500 次的限制。
這里我們使用百度的 REST API 接口中的語言合成接口,一方面原因是百度的調(diào)用次數(shù)沒有限制,另一方面,我大致看了下訊飛的接口文檔,接口限制還是比較多的。還有就是百度提供了 REST API 的 Python 封裝,使用也更方便。
百度提供了 Python SDK,使用 pip install baidu-aip
可以直接安裝。接口的使用可以參考接口文檔:http://ai.baidu.com/docs#/TTS-Online-Python-SDK/top。
使用示例如下:
from aip import AipSpeech
"""
你的 APPID AK SK
均可在服務(wù)控制臺中的應(yīng)用列表中查看。
"""
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好,你在做什么', 'zh', 3, {
'vol': 5,
})
# 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
接口參數(shù):
參數(shù) | 類型 | 描述 | 必傳 |
---|---|---|---|
tex | String | 合成的文本,使用UTF-8編碼,請注意文本長度必須小于1024字節(jié) | 是 |
lang | String | 語言選擇,填寫zh | 是 |
ctp | String | 客戶端類型選擇,web端填寫1 | 是 |
cuid | String | 用戶唯一標識,用來區(qū)分用戶,填寫機器 MAC 地址或 IMEI 碼,長度為60以內(nèi) | 否 |
spd | String | 語速,取值0-9,默認為5中語速 | 否 |
pit | String | 音調(diào),取值0-9,默認為5中語調(diào) | 否 |
vol | String | 音量,取值0-15,默認為5中音量 | 否 |
per | String | 發(fā)音人選擇,0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認為普通女 | 否 |
接口對單次傳入的文本進行了限制,合成文本長度必須小于 1024 字節(jié),如果文本長度過長,就需要進行切割處理,采用多次請求的方式,分別轉(zhuǎn)換成語音文件,最后再將多個語音文件合并成一個。
可以使用如下代碼將文本分割成多個長度為 500 的文本列表
# 將文本按 500 的長度分割成多個文本
text_list = [text[i:i+500] for i in range(0, len(text), 500)]
我們使用 pydub 來處理生成的音頻文件。使用 pip install pydub
即可安裝。
另外還 Ubuntu 環(huán)境需要安裝依賴的,使用 sudo apt-get install libav-tools
安裝即可,而在 Windows 環(huán)境需要到 https://ffmpeg.zeranoe.com/builds/ 下載 FFmpeg
,并將其配置到環(huán)境變量中。
若還有問題,可以參考官網(wǎng)配置:https://github.com/jiaaro/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,"mp3")
else:
# 拼接音頻文件
song += AudioSegment.from_file(f,"mp3")
# 刪除臨時音頻
os.unlink(f)
# 導(dǎo)出合并后的音頻文件,格式為MP3格式
file_name = str(uuid.uuid1()) + ".mp3"
song.export(file_name, format="mp3")
return file_name
這里有一個測試時生成的文件,大家可以試聽一下:
通過百度的接口,我們可以將文字轉(zhuǎn)化成音頻文件,下面的問題就是如何播放音頻文件。
網(wǎng)上獲取到 Python 播放 wav 文件的方式由好幾種,包括 pyaudio、pygame、winsound、playsound。不過測試下來,只有 playsound 成功。其他方式有興趣的可以試下,有問題可以留言交流。
使用 pip install playsound
安裝后即可使用。
使用也很簡單:
>>> from playsound import playsound
>>> playsound('/path/to/a/sound/file/you/want/to/play.mp3')
說明:音頻的播放需要在圖形化頁面下運行,因為命令行模式下,沒有播放聲音的出口。
python page2voice.py -u "https://so.gushiwen.org/shiwenv_c244fc77f6fb.aspx"
運行后,代碼就會自動解析網(wǎng)頁并進行朗讀啦。
感謝各位的閱讀!關(guān)于“怎么用Python來朗讀網(wǎng)頁”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網(wǎng)站名稱:怎么用Python來朗讀網(wǎng)頁
當(dāng)前URL:http://muchs.cn/article2/ihcjoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、建站公司、網(wǎng)站策劃、微信公眾號、網(wǎng)站維護、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)