专栏首页python3python3 - 文本读音器

python3 - 文本读音器

本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来;做这么个小工具主要是为了方便自己在平时看一些文章眼累的时候,可通过语音来帮助自己,当然如果你是小说迷,可以扩展成一个小说读音器。

1 pip install pyttsx3

这里我选择了pyttsx3工具,其实百度的语音接口很不错,不过有些麻烦,我们姑且忽略;先安装python的文字转语音的工具pyttsx3,来简单封装一个文字转语音的方法:

 1 import pyttsx3
 2 
 3 class ttsx(object):
 4     def __init__(self,rate=-10):
 5         self.rate = rate
 6 
 7     def sayText(self,str):
 8         self.engine = pyttsx3.init()
 9 
10         #语速
11         rate = self.engine.getProperty('rate') 
12         self.engine.setProperty('rate', rate + self.rate)
13 
14         #音量
15         #volume = self.engine.getProperty('volume') 
16         #engine.setProperty('volume', volume - 0.25)
17 
18         #声音
19         #voices = self.engine.getProperty('voices')
20         #for voice in voices:
21         #   self.engine.setProperty('voice', voice.id)
22         #   print(voice.id)
23 
24         self.engine.say(str)
25         self.engine.runAndWait()

这里采用系统默认的语音驱动,默认的语速过快,我们可以通过rate来设置下,然后可以通过调用说一句你想说的话,比如:

1 ttx = ttsx()
2 ttx.sayText("我是神牛003,欢迎大家关注")

正常情况下,能够听到有电脑系统的语音,这里也没法演示;注意在语言播放的时候程序是阻塞的,self.engine.runAndWait()这句是关键;为了方便操作我加入了ui界面,先引用tkinter插件:

1 import tkinter
2 from tkinter.constants import *
3 from tkinter import filedialog

这里初始化一个操作窗体并附加几个元素,图像界面有点low,如下:

图形窗体关键代码如下,或许不是很友好:

 1     #初始化窗体
 2     def tkMain(self,title,h=500,w=300):
 3         self.tk = tkinter.Tk()
 4         self.tk.title(title)
 5         self.tk.minsize(h,w)
 6         self.tk.resizable(False,False)
 7 
 8         tkinter.Label(self.tk, text="文本路径:").grid(row=0, column=0)
 9 
10         self.entryvar = tkinter.StringVar()
11         entry = tkinter.Entry(self.tk,textvariable = self.entryvar,borderwidth=2,width=50)
12         entry.grid(row=0, column=1)
13 
14         tkinter.Button(self.tk,text="选择",command=self.selectPath).grid(row=0, column=2)
15         tkinter.Button(self.tk,text="开读",command=self.readTxt).grid(row=0, column=3)
16 
17         self.txt = tkinter.Text(self.tk)
18         self.txt.grid(row=1,columnspan=4)
19 
20         self.tk.mainloop()

再者通过filedialog并增加一个按钮事件来达到选择电脑磁盘中的某个文件,并读取txt内容显示在文本框中:

 1     #选择文件
 2     def selectPath(self):
 3         self.filename = filedialog.askopenfilename() # 打开文件夹对话框
 4         if not self.filename:
 5             return
 6 
 7         self.entryvar.set(self.filename) # 设置变量entryvar,等同于设置部件Entry
 8         self.txt.delete(0.0,"end")
 9         #加入到界面txt
10         with open(self.filename,'r') as f:
11           while True:
12               line = f.readline()
13               if(line):
14                   self.txt.insert('insert',line)
15               else:
16                   break

最后开读按钮事件只需要获取到文本框中内容,并调用读音方法就行了:

1     #读取txt中文本
2     def readTxt(self):
3         strTxt = self.txt.get(0.0,"end")
4         self.sayText(strTxt)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PyQt5--QFileDiaglog

    py3study
  • Python操作Mysql数据库的实现

    1、需要使用的模块MySQLdb,下载地址为:http://sourceforge.net/projects/mysql-python/

    py3study
  • python入门之tkinter实现简

    这里class MyHtmlParser继承了HTMLParser,根据这个模板你可以添加你自己需要从网页上获取的内容了,假设你的网页中有标签p,试一试新增一个...

    py3study
  • PyQt5 多文档窗口界面

    本篇介绍多文档窗口界面的写法。代码中并未实现关闭窗口前文档未保存的提醒对话框,因为之前已有介绍。

    用户6021899
  • PyQt5 非模态对话框(live 型)

    本篇介绍非模态“实时”(live)对话框。与上一篇讲的”apply型“非模态对话框的区别是,非模态“实时”(live)对话框没有任何按钮,且所做的任何改变会自动...

    用户6021899
  • 利用Python编写一个行业专用的小计算器

    前言:本文讲述的是如何利用python编程制作一个适用于指定行业的计算器,方便计算结果,涵盖的知识点由Python编写GUI界面程序,利用爬虫采集实时的汇率数据...

    用户7886150
  • 理解unittest测试框架(四)——执行模块

    前文讨论了很多关于用例组织相关的内容,这里看看unittest的执行模块。执行模块的内容不多,这里我们带着生成测试报告的HTMLTestRunner.py的逻辑...

    点点寒彬
  • python 长连接 mysql数据库

    python链接mysql中没有长链接的概念,但我们可以利用mysql的ping机制,来实现长链接功能

    py3study
  • Seleninum&PhamtomJS爬取煎蛋网妹子图

    mylog.py  日志模块,记录一些爬取过程中的信息,在大量爬取的时候,没有log帮助定位,很难找到错误点

    py3study
  • python的tkinter编程(九)Text多行文本框的详细解读

    一天不写程序难受

扫码关注云+社区

领取腾讯云代金券