扣丁学堂Python培训之网页正文转换语音文件的操作方法

2018-12-10 14:24:44 498浏览

今天扣丁学堂Python培训老师给大家介绍一下关于Python网页正文转换语音文件操作源码的详细介绍,希望对同学们学习Python开发有所帮助,下面我们一起来看一下吧。

一、网页正文识别

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

readability、goose3

1.1readability

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

readability使用起来也很方便:

import requests
from readability import Document
response = requests.get('http://www.codingke.com/')
doc = Document(response.text)
print(doc.title())

但是readability提取到的正文内容不是文本,里面仍包含HTML标签。

当然也可以结合其他组件再对HTML进行处理,如html2text,我们这里就不再延伸,有兴趣的可以自行尝试。

1、goose3

Goose本来是一个用Java编写的文章提取器,后来就有了Python实现版:goose3。

使用起来也很方便,同时对中文支持也不错。使用pipinstallgoose3即可安装。

>>> from goose3 import Goose
>>> from goose3.text import StopWordsChinese
>>> url = 'http://www.codingke.com/'
>>> g = Goose({'stopwords_class': StopWordsChinese})
>>> article = g.extract(url=url)
>>> print(article.cleaned_text[:150])

注意:goose还有另外一个Python2的版本:Python-Goose,使用方法和goose3基本一样。

二、文本转语音

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

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

这里我们使用百度的RESTAPI接口中的语言合成接口,一方面原因是百度的调用次数没有限制,另一方面,我大致看了下讯飞的接口文档,接口限制还是比较多的。还有就是百度提供了RESTAPI的Python封装,使用也更方便。

2.1baidu-aip的使用

百度提供了PythonSDK,使用pipinstallbaidu-aip可以直接安装。接口的使用可以参考接口文档:http://ai.baidu.com/docs#/TTS-Online-Python-SDK/top。

使用示例如下:

from aip import AipSpeech
"""
你的APPIDAKSK

均可在服务控制台中的应用列表中查看。

"""
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)

接口参数:



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

2.2文本切割

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

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

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

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

# 合并音频文件
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成功。其他方式有兴趣的可以试下,有问题可以留言交流。

使用pipinstallplaysound安装后即可使用。

使用也很简单

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

说明:音频的播放需要在图形化页面下运行,因为命令行模式下,没有播放声音的出口。

python page2voice.py -u <a href="https://www.codingke.com" rel="external nofollow">https://https://www.codingke.com</a>

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

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

以上就是关于扣丁学堂Python培训之网页正文转换语音文件的操作方法的详细介绍,希望对大家有所帮助,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Python视频直播课定能让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:279521237


 


关注微信公众号获取更多学习资料 


 

查看更多关于"Python开发资讯"的相关文章>

标签: Python培训 Python视频教程 Python在线视频 Python学习视频 Python培训班

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号