美文网首页
使用PyQt GUI 写一个朗读软件

使用PyQt GUI 写一个朗读软件

作者: 来自知乎的一只小胖子 | 来源:发表于2021-12-16 18:54 被阅读0次

    使用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感兴趣,欢迎你转发和评论!

    相关文章

      网友评论

          本文标题:使用PyQt GUI 写一个朗读软件

          本文链接:https://www.haomeiwen.com/subject/fvkptrtx.html