一、准备

1、首先安装python3+,这里不多展开,具体操作百度。(比如:安装Python - 廖雪峰的官方网站)

2、安装pyttsx3。这是一个调用操作系统语音包的库,可离线使用。

pip3 install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple

(这里可能要求安装一些前置库,具体跟安装提示走即可)

二、思路

1、听书的本质是程序根据字符播放对应的音频文件。这里pyttsx3已经帮我们集成好了文字到播放的这部分代码,具体的调用如下:

import pyttsx3speakerEngine = pyttsx3.init()  # 创建语音引擎实例
speakerEngine.setProperty('rate', 350)  # 设置语速speakerEngine.say('hello world!')  # 开始朗读"hello world"
speakerEngine.runAndWait()  # 阻塞线程直到"hello world"朗读完毕再执行下方代码

2、其余就是文本的读取、分段让pyttsx3帮我朗读了。文本的读取示例如下:

def ReadTxt(path):with open(path, encoding='utf8') as f:return f.read()

文本的分段如下(按行):

txt = ReadTxt(r'd:\小说.txt')
lines = txt.split('\n')

3、让讲师开始一段一段朗读小说吧~

import pyttsx3def ReadTxt(path):with open(path, encoding='utf8') as f:return f.read()speakerEngine = pyttsx3.init()  # 创建语音引擎实例
speakerEngine.setProperty('rate', 350)  # 设置语速txt = ReadTxt(r'd:\小说.txt')  # 将小说的文本内容读取到变量txt
lines = txt.split('\n')  # 将小说内容按行分割成列表for line in lines:  # 按行遍历小说内容speakerEngine.say(line)  # 开始朗读小说段落speakerEngine.runAndWait()  # 阻塞线程直到"hello world"朗读完毕再执行下方代码

三、示例

这里哈里提供一个可以显示当前朗读语句、能够记忆上次朗读位置下次继续播放、能够中途暂停的demo示例:

import json
import re
import time
import os
import pyttsx3
import threading
import tkinter
import tkinter.font as tfdef RTxt(path):if not os.path.exists(path):return Nonewith open(path, encoding='utf8') as f:return f.read()def WTxt(path, content):try:with open(path, 'w', encoding='utf8') as f:f.write(content)except Exception as e:print('[error]WTxt.e=', e)def InputKeyControl():speaker.stopSay = not speaker.stopSaybtn['text'] = '暂停' if not speaker.stopSay else '继续'def Exit():speaker.end = Trueform.quit()class Speaker:def __init__(self, tb: tkinter.Text):# 初始化语音引擎self.speakerEngine = pyttsx3.init()self.speakerEngine.setProperty('rate', 350)self.textBox = tbself.end = Falseself.stopSay = Falseself.t = threading.Thread(target=self.Say)self.t.setDaemon(True)self.t.start()def Say(self):print('Say.Start')txt = RTxt(txtPath)lines = txt.split('\n')for line in lines[readConfig['lineNum']:]:while self.stopSay:print('stopSay...')time.sleep(1.0)st = time.time()if not re.findall(r'^\s*?$', line):line = re.sub(r'\s', '', line)self.speakerEngine.say(line)print('line=', readConfig['lineNum'], line)self.textBox.delete('1.0', '2.end')self.textBox.insert('1.0', line)# 等待语音播放完self.speakerEngine.runAndWait()readConfig['lineNum'] += 1if time.time() - st > 1.0:WTxt(readConfigPath, json.dumps(readConfig))if self.end:print('Say.end.2')returnprint('Say.end')txtPath = r'd:\小说.txt'  # 把这里修改成你要朗读的小说路径即可txtRoot = os.path.dirname(txtPath)
txtName = os.path.basename(txtPath)
readConfigPath = txtRoot + r'\{}.json'.format(txtName)
readConfig = RTxt(readConfigPath)
if readConfig is None:readConfig = {'lineNum': 0}
else:readConfig = json.loads(readConfig)form = tkinter.Tk()
form.title('txt阅读器')
form.geometry('620x100+10+10')
form.attributes("-topmost",1)
form.attributes('-alpha',0.5)
# form.overrideredirect(True)
font = tf.Font(family='微软雅黑', size=24)
btnFont = tf.Font(family='微软雅黑', size=12)
btn = tkinter.Button(form, text='暂停', command=InputKeyControl, font=btnFont)
btn.grid(row=1,column=1)
exitBtn = tkinter.Button(form, text='退出', command=Exit, font=btnFont, fg='red')
exitBtn.grid(row=2,column=1)
textBox = tkinter.Text(form, wrap="word", font=font, width=30, height=2, fg='red')
textBox.grid(row=1,column=0, rowspan=2)
speaker = Speaker(textBox)
form.mainloop()
speaker.end = True
print('end')

运行后如下:

【Python】PC端听书工具相关推荐

  1. 原神pc端服务器切换工具,基于python3

    原神pc端服务器切换工具,基于python3 应我舍友的请求,我用python给他写了一个原神电脑版的服务器切换工具,方便切换服务器. 原理很简单就是用python来进行文件的修改 注意: 此应用为P ...

  2. PC端RTMP播放工具(EXE,非源码)

    PC端RTMP播放工具是一款可以在安卓手机播放rtmp流的工具,基于FFmpeg+openCV开发. 下载地址:PC端RTMP播放工具(EXE,非源码)-直播技术文档类资源-CSDN下载

  3. 基于QT开发PC端文件加密工具

    基于QT开发PC端文件加密工具 1.客户需求 某案子.该方案,通过外挂TF卡实现,本地教育资源的调取使用.按客户需求,把TF卡内的内容进行加密,并在软件中写好解密,确保资源文件只能在教育机中才能正常播 ...

  4. 剪映,最简单的PC端视频处理工具,大厂出品必属精品~

    相信在座的小伙伴都用过抖音app,看的多了难免也有想要发视频的冲动. 这时我们就会想到诸如Ae.Pr之类的视频制作工具,但他们都有一定的上手难度-- 好在抖音霸霸很早就推出了免费的官方全能剪辑工具,也 ...

  5. PC端语音朗读工具:中英文朗读专家

    中英文朗读专家: 官方下载地址:http://www.iarts-cn.com/cn/index.php/voice-expert/ 配套播音员(语音包)下载:http://www.iarts-cn. ...

  6. python pc端微信记录读取_微信 PC 版迎来了重磅更新,可以在电脑端使用小程序了 |内附下载链接...

    最近几天,微信团队又出了微信测试版,此次测试版主要关于 PC 版的微信.微信每一次更新,都会引起不少的躁动,那么此次都更新来什么呢? 微信 PC 端测试版 2.7.0 我们都知道,电脑 PC 端是不支 ...

  7. 小米手机解BL锁时 进入fastboot之后 PC端手机解锁工具一直显示未连接手机

    1. 首先想到换数据线 在自己换了几根数据线后未解决问题 2.重启电脑 常见毛病重启解决,但是尝试后依旧没有反应 3.驱动问题,尝试更换驱动 来自知乎的分享方法 如果解锁软件没有显示连接手机,是驱动问 ...

  8. 【Python实战】听书就用它了:海量资源随便听,内含几w书源,绝对精品哦~(好消息好消息)

    前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材+源码都在

  9. python: pc端QQ窗口发送多条消息

    # coding=gb2312 ''' TTS文本.txt---为需要发送的内容,自己创建 1.打开需要发送消息的窗口 2. 3.将需要发送的内容放到QQ窗口 4.模拟按键发送enter键发送消息(Q ...

最新文章

  1. 月薪5万程序员眼中的单例模式
  2. java pack unicode,汉字和Unicode码(utf-8)之间的转换(Pack/Unpack)
  3. 如何学习Java? 在学习Java的过程中需要掌握哪些技能?
  4. 2018.8.2 Juint测试介绍及其命名的规范
  5. 教程|YOLOX目标检测ncnn实现
  6. 佩斯大学计算机科学世界排名,美国佩斯大学留学推荐 计算机科学专业
  7. 在Spring Cloud中集成和使用CSE快速实现商业产品
  8. python pymysql执行插入操作到mysql
  9. 数据-第18课-栈与递归
  10. 是否要从单片机转为嵌入式Linux?
  11. 数据结构(严蔚敏版)与算法的实现(含全部代码)
  12. Java与C++的区别
  13. 腾讯开源围棋AI程序PhoenixGo,复现AlphaGo Zero
  14. python spss stata_零基础的文科生怎么学习python.stata.spss.r等软件?
  15. 360网络测速器电脑版
  16. 【办公协作软件】万彩办公大师教程丨PDF页面排列布局帮助文档
  17. java类加载器不同导致SPI 报错 not a subtype
  18. 使用python来完成数据的线性拟合
  19. epoll底层原理深究
  20. “电动车之王”还不够,雅迪高端品牌怎么打?

热门文章

  1. python 学习指南_Python学习指南
  2. 「7年了!GTA 5联机版加载还是这么慢??一个if语句循环了19.8亿次??你的CPU在抽烟」
  3. python爬虫--一次爬取小说的尝试
  4. FRP的UDP协议内网穿透方案/穿透多个内网机器/账户无效问题
  5. 十六进制转换为十进制
  6. 《时空猎人》宝石系统全攻略
  7. android ui头像圆角化,UIImageView常用操作以及圆角头像的设置
  8. 基于jQuery虾米音乐播放器样式代码
  9. 网络工程师成长日记349-榆林某银行项目
  10. 阿里巴巴的125款开源软件