使用PyQt GUI 写一个朗读软件
一只小胖子
[互联网运营 | 直播电商 | 广告行业] 从业者
2 人赞同了该文章
一直想找一款能朗读的软件,需支持批量朗读本地文件(如文本/PDF等). 但找了半天没有发现自己满意的. 所以就初次尝试使用PyQt的GUI加pyttsx3库自己用Python写了一个简单的内容朗读器.支持在不联网的情况下批量朗读内容(网页/文本/可编辑式PDF),支持调用近40种语音(包括常用的国语/粤语/英文等),能够倍速/音量/朗读人物调节.另外软件支持自定义保存和加载播放列表,包括统计播放次数,朗读内容查看及文件筛选等. 这样以后朗读内容时只需先批量添加内容,然后选中单项或批量多项内容后播放即可,总之如播放音乐一样操作就可以啦. 哈哈... 终于可以摆脱每读完第一篇内容,下一篇内容又要切换的繁琐了..
一 .查找现有的方案
1.Edge浏览器朗读 :
优点是:效果较好,而且支持文本/网页/PDF 缺点是:1.不能连续播放,播放完当前网页或PDF后需手动切换至下一个文档或网页播放 2.有的网页或者PDF进行阅读时会卡住,所以需要先处理下,如网页用简悦或自己用Python库处理下简化格式,针对PDF则提取出文本内容再来朗读.
2.基于浏览器插件:
使用了两款Chrome/Edge浏览器插件,使用时需要选中网页内容再进行朗读,不能批量朗读,也不能自动朗读下一个内容,也不能支持网页外的文本类及PDF类文件朗读.
有哪些将网页上文本转换成语音进行朗读的应用或者扩展?12 赞同 · 4 评论回答
3.阅读软件-朗读女
找了一圈,在Windows下找到一款软件,名字就是朗读女,看了一下,能阅读各类格式的文档,功能支持上还真不错,就是感觉安装配置有点麻烦,而且手上Windows用的少,暂时就没下载试了.
朗读女www.443w.com/tts/
4.较有名的讯飞有声
只有移动端应用,没有发现桌面端的应用.而且功能上也不支持批量添加链接/文件进行朗读.就算使用模拟器在桌面能运行起来,也是实现不了我要批量添加朗读本地文件的功能.
5.福昕PDF阅读器
比较麻烦,每阅读一个文件又得去点一次播放,而且每次打开新的PDF文件,点播放时又会使用系统初始的语音设置.另外在朗读效果上相对不太满意.
6.系统的朗读/辅助功能
使用了mac系统的Say命令,朗读效果还行,但和pyttsx3对比了下,还是决定使用pyttsx3来实现.
二 .使用自己的方案
1.采用的方案: (pyttsx3 组件,本地不需联网)
想想,自己的需求也不复杂,于是就想着能不能使用Python上的轮子自己搞搞,然后发现以下几篇有参考价值的文章 .
Python文本语音识别模块大比拼,看看青铜与王者的差别!www.jianshu.com/p/39b17deef489
使用Python将任正非400+篇演讲批量转化为语音www.jianshu.com/p/05f9874b6989
由于不太想联网使用,也不想生成太多的mp3,生成耗时且文件占用磁盘.最终考虑使用了Python pyttsx3 组件库来实现.这个库的使用比较简洁,功能相当强大了,可以支持多个朗读者,朗读速度,朗读音量设置.而且支持保存朗读为mp3文件,非常nice!
pyttsx3pypi.org/project/pyttsx3/
朱卫军:利用Python将PDF文档转为MP3音频280 赞同 · 23 评论文章
注意使用pyttsx3时的坑: https://github.com/nateshmbhat/pyttsx3/issues
这里常见的会踩一个坑,在这里提及一下,使用pyttsx3在多线程中调用有个Bug,具体链接如下:
How to use pyttsx in a python threadstackoverflow.com/questions/48025641/how-to-use-pyttsx-in-a-python-thread
所以你使用时,调用pyttsx3的runAndWait()方法时记得在UI界面的子线程另起子进程来调用.
2.备选的方案:(使用语音服务商提供的转换服务)
详细可参考以下链接,原文作者对常见的在线转换服务进行了对比,最终推荐使用的是腾讯的在线转换服务.
一粒米饭:Python生成vlog系列(一):Python语音合成指北6 赞同 · 0 评论文章
另外还可以使用GitHub上有人提及推荐的谷歌TTS语音转换库,有时间可以再尝试下,作为备用.
https://github.com/desbma/GoogleSpeechgithub.com/desbma/GoogleSpeech
三 .方案的实现步骤
1.安装相关的依赖库:
pip install pyttsx3 # 语音朗读/生成mp3pip install pdfplumber # pdf转换pip install pyqt5 # 界面开发pip install pyinstaller # 打包发行from bs4 import BeautifulSoup # 网页解析from pdfminer.pdfparser import PDFSyntaxError # pdf解析
2.实现业务功能:
主要功能界面如下图,包括批量添加朗读文件/开启批量朗读/保存朗读列表/加载朗读列表/设置朗读语音/朗读数据统计/当前朗读状态展示/文本内容查看等.
应用主界面 界面的介绍 选择项状态 列表的管理 便携小功能
3.打包Python脚本
打包这一块,暂时还没有尝试,所以就先不写了.所以这里发个代码先,有时间再整个通用的独立运行包.
Python 打包成 exe,太大了该怎么解决?2909 赞同 · 111 评论回答
由于第一次使用PyQt组件来开发小应用,所以不是很熟练,另外如果对你有用,或者测试使用中发现什么问题,也乐意欢迎你的反馈.
我是一只热爱学习的小胖子,如果你也热爱学习,并且对SuperMemo感兴趣,欢迎你转发和评论!
网友评论