一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

我不想瀏覽網(wǎng)頁,那么我就用Python實(shí)現(xiàn)網(wǎng)頁自動(dòng)化朗讀!

 靜幻堂 2018-09-05
菜鳥學(xué)Python 2018-09-04 10:22:01
我不想瀏覽網(wǎng)頁,那么我就用Python實(shí)現(xiàn)網(wǎng)頁自動(dòng)化朗讀!

是不是有的時(shí)候懶得自己看新聞?那么不妨試試用 Python 來朗讀給你聽吧。

網(wǎng)頁轉(zhuǎn)換成語音,步驟無外乎:

  • 網(wǎng)頁正文識(shí)別,獲取到正文的文本內(nèi)容;
  • 文本轉(zhuǎn)語音,通過接口將文本轉(zhuǎn)換成語音文件;
  • 語音文件的發(fā)聲,即將語音文件讀出;

01:網(wǎng)頁正文識(shí)別

之所以用 Python,就是因?yàn)?Python 有著豐富的庫,網(wǎng)頁正文識(shí)別也不在話下。這里我嘗試了 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 標(biāo)簽。

當(dāng)然也可以結(jié)合其他組件再對(duì) HTML 進(jìn)行處理,如 html2text,我們這里就不再延伸,有興趣的可以自行嘗試。

1.2 goose3

Goose 本來是一個(gè)用 Java 編寫的文章提取器,后來就有了 Python 實(shí)現(xiàn)版: goose3 。

使用起來也很方便,同時(shí)對(duì)中文支持也不錯(cuò)。使用 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])
北京時(shí)間6月15日23:00(圣彼得堡當(dāng)?shù)貢r(shí)間18:00),2018年世界杯B組一場(chǎng)比賽在圣彼得堡球場(chǎng)展開角逐,伊朗1比0險(xiǎn)勝摩洛哥,伊朗前鋒阿茲蒙半場(chǎng)結(jié)束前錯(cuò)過單刀機(jī)會(huì),鮑哈杜茲第95分鐘自擺烏
龍。這是伊朗20年來首度在世界杯決賽圈取勝。
本屆世界杯,既相繼出現(xiàn)替補(bǔ)便進(jìn)球,貼補(bǔ)梅開二度以及東道主

可以看出網(wǎng)頁正文提取效果還不錯(cuò),基本滿足我們的要求,可以使用!

注意:goose 還有另外一個(gè) Python2 的版本:Python-Goose,使用方法和 goose3 基本一樣。

02:文本轉(zhuǎn)語音

文本轉(zhuǎn)語音,百度、阿里、騰訊、訊飛等都有提供 REST API 接口,阿里和騰訊的申請(qǐng)相對(duì)時(shí)間較長(zhǎng),阿里的貌似還要收費(fèi),百度和訊飛的在線申請(qǐng)后即可使用。

沒辦法,好的東西得來總是要曲折一些。其中百度的沒有調(diào)用量的限制(其實(shí)默認(rèn)是 200000 次/天),訊飛有每天 500 次的限制。

這里我們使用百度的 REST API 接口中的語言合成接口,一方面原因是百度的調(diào)用次數(shù)沒有限制,另一方面,我看了下訊飛的接口文檔,接口限制還是比較多的。還有就是百度提供了 REST API 的 Python 封裝,使用也更方便。

2.1 baidu-aip 的使用

百度提供了 Python SDK,使用 pip install baidu-aip 可以直接安裝。接口的使用可以參考接口文檔:http://ai.baidu.com/docs#/TTS-Online-Python-SDK/top。

使用示例如下:

from aip import AipSpeech
"""
你的 APPID AK SK
均可在服務(wù)控制臺(tái)中的應(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,
})
# 識(shí)別正確返回語音二進(jìn)制 錯(cuò)誤則返回dict 參照下面錯(cuò)誤碼
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)

接口參數(shù):

我不想瀏覽網(wǎng)頁,那么我就用Python實(shí)現(xiàn)網(wǎng)頁自動(dòng)化朗讀!

接口對(duì)單次傳入的文本進(jìn)行了限制,合成文本長(zhǎng)度必須小于 1024 字節(jié),如果文本長(zhǎng)度過長(zhǎng),就需要進(jìn)行切割處理,采用多次請(qǐng)求的方式,分別轉(zhuǎn)換成語音文件,最后再將多個(gè)語音文件合并成一個(gè)。

2.2 文本切割

可以使用如下代碼將文本分割成多個(gè)長(zhǎng)度為 500 的文本列表

# 將文本按 500 的長(zhǎng)度分割成多個(gè)文本
text_list = [text[i:i+500] for i in range(0, len(text), 500)]

2.3 語言文件合并

我們使用 pydub 來處理生成的音頻文件。使用 pip install pydub 即可安裝。

另外還 Ubuntu 環(huán)境需要安裝依賴的,使用 sudo apt-get install libav-tools 安裝即可.而在 Windows 環(huán)境需要到 https://ffmpeg./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")
# 刪除臨時(shí)音頻
os.unlink(f)
# 導(dǎo)出合并后的音頻文件,格式為MP3格式
file_name = str(uuid.uuid1()) + ".mp3"
song.export(file_name, format="mp3")
return file_name

通過百度的接口,我們可以將文字轉(zhuǎn)化成音頻文件,下面的問題就是如何播放音頻文件。

03:音頻文件播放

網(wǎng)上獲取到 Python 播放 wav 文件的方式由好幾種,包括 pyaudio、pygame、winsound、playsound。不過測(cè)試下來,只有 playsound 成功。其他方式有興趣的可以試下,有問題可以留言交流。

使用 pip install playsound 安裝后即可使用。

使用也很簡(jiǎn)單:

>>> from playsound import playsound
>>> playsound('/path/to/a/sound/file/you/want/to/play.mp3')

說明:音頻的播放需要在圖形化頁面下運(yùn)行,因?yàn)槊钚心J较拢瑳]有播放聲音的出口。

python page2voice.py -u "https://so.gushiwen.org/shiwenv_c244fc77f6fb.aspx"

運(yùn)行后,代碼就會(huì)自動(dòng)解析網(wǎng)頁并進(jìn)行朗讀啦。

04:總結(jié)

至此,網(wǎng)頁到音頻的轉(zhuǎn)換就結(jié)束了。當(dāng)然程序沒有這么完美,比如中英文混合的網(wǎng)頁解析和轉(zhuǎn)換的結(jié)果就不怎么理想,但是純中文的新聞頁面效果還是不錯(cuò)的。源碼已上傳至 GitHub:

https://github.com/hoxis/to_voice/blob/master/page2voice.py

今天的文章分享到此結(jié)束,希望本次分享對(duì)正在學(xué)習(xí)Python的你有所幫助,文章部分素材來源網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪除。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国内胖女人做爰视频有没有| 国产日产欧美精品视频| 91香蕉视频精品在线看| 亚洲欧美日韩综合在线成成| 久久精品少妇内射毛片| 国产av乱了乱了一区二区三区| 国产欧美一区二区三区精品视| 91欧美一区二区三区成人| 麻豆精品视频一二三区| 日韩夫妻午夜性生活视频| 情一色一区二区三区四| 中文字幕中文字幕一区二区| 欧美国产亚洲一区二区三区| 欧美日韩国产精品黄片| 人妻久久这里只有精品| 99久久国产亚洲综合精品| 国产精品亚洲欧美一区麻豆| 深夜日本福利在线观看| 懂色一区二区三区四区| 亚洲一区二区三区在线中文字幕| 亚洲高清中文字幕一区二三区| 国产亚洲精品一二三区| 亚洲精品高清国产一线久久| 天海翼高清二区三区在线| 深夜少妇一区二区三区| 亚洲精品中文字幕在线视频| 亚洲做性视频在线播放| 亚洲欧美日韩精品永久| 老富婆找帅哥按摩抠逼视频| 五月激情五月天综合网| 99久久成人精品国产免费| 乱女午夜精品一区二区三区| 亚洲中文字幕三区四区| 亚洲专区中文字幕在线| 国产精品午夜福利在线观看| 黑色丝袜脚足国产一区二区| 日韩一区二区三区久久| 在线一区二区免费的视频| 国产精品香蕉一级免费| 国产亚洲精品久久久优势| 青青操在线视频精品视频|