是不是有的时候懒得自己看新闻?那么不妨试试用 Python 来朗读给你听吧。

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

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

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

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

1 网页正文识别

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

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

readability 使用起来也很方便:

import requestsfrom readability import Document

response = 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 次的限制。

这里我们使用百度的 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 = 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)

    # 导出合并后的音频文件,格式为MP3格式    file_name = str(uuid.uuid1()) + ".mp3"    song.export(file_name, format="mp3")    return file_name

这里有一个测试时生成的文件,大家可以试听一下:

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

3 音频文件播放

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

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

4 总结

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

源码已上传至 GitHub,后台回复「网页」即可获取。

原文链接:https://mp.weixin.qq.com/s/-wnWOJxSaoxdpwOqjW9btg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559358/viewspace-2218229/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31559358/viewspace-2218229/

教你用 Python 来朗读网页相关推荐

  1. python 文字语音朗读-教你用 Python 来朗读网页

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

  2. python朗读网页-手把手教你用 Python 来朗读网页

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

  3. Python | 教你用 Python 来朗读网页

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

  4. python网页爬虫循环获取_手把手教你用 Python 搞定网页爬虫

    原标题:手把手教你用 Python 搞定网页爬虫 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的 ...

  5. python 文字语音朗读-怎么用 Python 来朗读网页 ?

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

  6. python朗读网页-早上起床后不想动,让 Python 来帮你朗读网页吧

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

  7. python抓取内存中的网页_『爬虫四步走』手把手教你使用Python抓取并存储网页数据!...

    爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Python爬虫的基本流程.如果你还在入门爬虫 ...

  8. python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...

    前言:. visit 1point3acres.com for more. 数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,pyt ...

  9. 以下用于数据存储领域的python第三方库是-『爬虫四步走』手把手教你使用Python抓取并存储网页数据!...

    第一步:尝试请求 首先进入b站首页,点击排行榜并复制链接 https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950 ...

最新文章

  1. [实战] 用数人云,部署弹性 ELK 集群就五步
  2. js null ,null没有typeof返回值为undefine 即 null没有返回类型的
  3. SpringCloud接入EDAS——服务发现篇
  4. php vs lua,解析LUA与PHP在WEB应用的性能对比
  5. rejection from MPhil in Technology policy at cambridge
  6. boost::function模块实现分配器的测试程序
  7. 当你在应用机器学习时你应该想什么
  8. shell 脚本 简易for循环 脚本
  9. 网站服务器修改内容,网站被收录后内容还可以修改吗?
  10. 第二章 生成、打包、部署和管理应用程序及类型
  11. nema0183 java解析_java解析nmea0183协议
  12. WE出海增长图书馆 | 世界杯豪门面纱下,不容忽视的【增长】沃土
  13. matlab中e如何输入,Matlab中表达e的操作方法介绍
  14. md格式的文档转化成pdf格式
  15. Adobe全家桶系列百度云(含最新软件安装包+安装教程)
  16. 使用father打包发布前端工具库
  17. 室外管线lisp_利用Autocad lisp进行地下管线成果表制作方法的研究
  18. 司马迁的智慧—东方最早的经济学综合论文《货殖列传》
  19. 「硬核JS」图解Promise迷惑行为|运行机制补充
  20. 2016年最新的第三方支付公司排名

热门文章

  1. 【PHP语言】医院安全(不良)事件报告系统源码
  2. 微软服务器为何时间总是慢,Windows时间总不对? 简易手段让它永远正确
  3. 程序员才是真正的“老司机”,30个IT术语这样解释,新手秒懂
  4. 高德纳和计算机程序设计艺术:人物访谈(1)
  5. 聚焦覆铜板缺陷检测,国辰视觉检测系统大显实力
  6. 电脑S端子连接电视S端子的方法
  7. Linux超详细总结(请使用目录)
  8. 案例实战-信用卡欺诈检测
  9. 【预测模型】热传导数学模型
  10. 统计学基础专栏02---数据和抽样分布