python读音发音器-python3 - 文本读音器

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

1 pip install pyttsx3

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

1 import pyttsx32

3 class ttsx(object):4 def __init__(self,rate=-10):5 self.rate =rate6

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 invoices: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,如下:

f6d0ac58d4c582e8b9c77dd7d2352a079cc.png

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

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 ifnot self.filename:5 return

6

7 self.entryvar.set(self.filename) # 设置变量entryvar,等同于设置部件Entry8 self.txt.delete(0.0,"end")9 #加入到界面txt10 with open(self.filename,'r') asf:11 whileTrue: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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值