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)
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?