为了账号安全,请及时绑定邮箱和手机立即绑定

python3 - 文本读音器

标签:
Python

本篇分享的是使用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 tkinter2 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         #加入到界面txt10         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)

git地址:    https://github.com/shenniubuxing3    

原文出处:https://www.cnblogs.com/wangrudong003/p/10161502.html  

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消