网页转换成语音,步骤无外乎:

  • 网页正文识别,获取到正文的文本内容;

  • 文本转语音,通过接口将文本转换成语音文件;

  • 语音文件的发声,即将语音文件读出;

网页正文识别

之所以用 Python,就是因为 Python 有着丰富的库,网页正文识别也不在话下。这里我尝试了 readability、goose3。

1.1 readability

readability 支持 Python3,使用 pip install readability-lxml 安装即可。

readability 使用起来也很方便:

import requests
from 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 基本一样。

文本转语音

文本转语音,百度、阿里、腾讯、讯飞等都有提供 REST API 接口,阿里和腾讯的申请相对时间较长,阿里的貌似还要收费,百度和讯飞的在线申请后即可使用。

没办法,好的东西得来总是要曲折一些。其中百度的没有调用量的限制(其实默认是 200000 次/天),讯飞有每天 500 次的限制。

这里我们使用百度的 REST API 接口中的语言合成接口,一方面原因是百度的调用次数没有限制,另一方面,我看了下讯飞的接口文档,接口限制还是比较多的。还有就是百度提供了 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
均可在服务控制台中的应用列表中查看。
"""
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)

接口参数:

参数 类型 描述 必传
tex String 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节
lang String 语言选择,填写zh
ctp String 客户端类型选择,web端填写1
cuid String 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内
spd String 语速,取值0-9,默认为5中语速
pit String 音调,取值0-9,默认为5中语调
vol String 音量,取值0-15,默认为5中音量
per String 发音人选择,0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女

接口对单次传入的文本进行了限制,合成文本长度必须小于 1024 字节,如果文本长度过长,就需要进行切割处理,采用多次请求的方式,分别转换成语音文件,最后再将多个语音文件合并成一个。

2.2 文本切割

可以使用如下代码将文本分割成多个长度为 500 的文本列表

# 将文本按 500 的长度分割成多个文本
text_list = [text[i:i+500] for i in range(0, len(text), 500)]

2.3 语言文件合并

我们使用 pydub 来处理生成的音频文件。使用 pip install pydub 即可安装。

另外还 Ubuntu 环境需要安装依赖的,使用 sudo apt-get install libav-tools  安装即可.而在 Windows 环境需要到 https://ffmpeg.zeranoe.com/builds/ 下载 FFmpeg,并将其配置到环境变量中。

若还有问题,可以参考官网配置:https://github.com/jiaaro/pydub。

# 合并音频文件
def merge_voice(file_list):voice_dict = {}song = Nonefor 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)# 导出合并后的音频文件,格式为MP3格式file_name = str(uuid.uuid1()) + ".mp3"song.export(file_name, format="mp3")return file_name

通过百度的接口,我们可以将文字转化成音频文件,下面的问题就是如何播放音频文件。

音频文件播放

网上获取到 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"

运行后,代码就会自动解析网页并进行朗读啦。

总结

至此,网页到音频的转换就结束了。当然程序没有这么完美,比如中英文混合的网页解析和转换的结果就不怎么理想,但是纯中文的新闻页面效果还是不错的。源码已上传至 GitHub:

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

作者:不正经程序员,现在是一名小小的开发工程师,工作主要用 Java、Python,平时除了喜欢钻研专业技术外,业余也会鼓捣下程序员周边,比如读书、效率工具、理财等等等等。 欢迎关注,共同进步!

Python 实现网页自动化朗读相关推荐

  1. 网页版python叫什么-我不想浏览网页,那么我就用Python实现网页自动化朗读!

    是不是有的时候懒得自己看新闻?那么不妨试试用 Python 来朗读给你听吧. 网页转换成语音,步骤无外乎: 网页正文识别,获取到正文的文本内容: 文本转语音,通过接口将文本转换成语音文件: 语音文件的 ...

  2. 如何使用 Python 实现网页自动化朗读?

    作者 | hoxis 责编 | 郭芮 是不是有的时候懒得自己看新闻?那么不妨试试用 Python 来朗读给你听吧. 网页转换成语音,步骤无外乎: 网页正文识别,获取到正文的文本内容: 文本转语音,通过 ...

  3. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)

    前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...

  4. Python实现网页自动化-浏览器查找元素(二)

    前言 在上一节中已经部署了Selenium+chromedriver的开发环境,在真正的开发之前,还需要学会利用浏览器来查找网页元素: 因为Selenium是通过程序来自动操控网页的控件元素,比如单击 ...

  5. python自动访问网页_Python自动化 selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框. 首先想到是利用Alert类来处理它. 然而,很不幸,Ale ...

  6. python模拟点击网页按钮_网页自动化开发(第一章)

    Web网页可以用许多工具进行开发,本文重点是介绍如何在python中使用Selenium实现网页自动化开发,主要先介绍Selenium的概念,开发环境搭建,selenium模拟用户打开浏览器并实现自动 ...

  7. python 浏览器自动化 弹窗控制_selenium 网页自动化 - 在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    特别鸣谢 本文来自柠檬班-python 自动化第 25 期 铃铛同学 在做作业时遇到的问题,并提供的解决方案! 特别感谢铃铛同学.如果你是柠檬班的学生,热烈欢迎你来投稿技术文章哦! 前言 相信大家在使 ...

  8. python 网页自动化实现

    一.环境要求 1.Python 2.selenium库 3.谷歌浏览器 二.网页自动化实现步骤 1 下载selenium库 pip install selenium 2 安装谷歌浏览器webdrive ...

  9. 自动化(二)使用Python打开网页

    使用Python打开网页: 话不多说,直接上代码 import urllib.request import os from selenium import webdriver chromedriver ...

最新文章

  1. python中module用法_Python学习之module用法
  2. 年末最大AI盛典!2020深度学习开发者峰会报名启动
  3. iframe跨域自适应高度
  4. 实用 —— PowerCLI (一)
  5. python 拟牛顿法 求非线性方程_有限元简单科普之——改进的欧拉法
  6. java synchronized关键字锁和锁类型、锁升级过程讲解
  7. 图 | 为什么存在关于图的研究
  8. 修改注册表设置桌面和收藏夹路径
  9. ES6语法实现数据的双向绑定
  10. windows redis 设置密码_Linux下设置redis访问密码
  11. vue3移动端腾讯地图坐标拾取,获取当前定位(腾讯、高德、百度、天地图),火星坐标GCJ-02–>百度坐标BD-09,根据坐标经纬度计算两点距离的方法,点击链接打开地图导航的方法
  12. 全球及中国基因组学软件行业发展动态及前景趋势预测报告(2022-2027)
  13. 机器学习-UCI数据库
  14. 《富兰克林自传》读后感:从这个接地气的伟人身上我们可以学到什么?
  15. 权威报告发布:细数OKEx OKChain公链那些“五星级”的骚操作
  16. mysql error 1_mysql 启动错误(InnoDB: Operating system error number 1
  17. 东华大学计算机考研大纲,2019年东华大学854计算机及软件工程专业基础综合考研初试大纲...
  18. java 虚拟机 xms_JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别(转)
  19. Redis基本使用|基本命令|redis事务|Jedis|持久化|订阅|集群|
  20. Spring Security Oauth2 JWT----单点登录、注销、续签的问题

热门文章

  1. mysql数据库 中文乱码_数据库 MySQL中文乱码解决办法总结
  2. “王者荣耀”中的常用英语
  3. 苹果手机最新回收行情(2022.2.12)
  4. Java基础之Map集合
  5. 12月19日绝地求生服务器维护公告,绝地求生12月19日更新到几点能玩 绝地求生正式服更新维护公告...
  6. 关于Unity Hub中安装Unity失败的解决办法
  7. Mac苹果电脑图像转文本教程
  8. 抓住机遇 开拓创新 加快推进我国数字图书馆建设
  9. React动画和路由
  10. IT程序员接私活平台