
开篇寄语
伯衡君之前分享过一个pyttsx3这个python库,可以将文本转化为语音,还能快速转存为mp3格式,非常方便,制作成一个图形界面,可以方便听文本和存为MP3,方便以后听,非常简单的小工具,使用tkinter打包的时候还又有了新发现,一并分享出来。
前情提要
功能介绍
功能很简单啦,支持打开txt文本,朗读全文,可以转存为mp3格式方便收听。其实是一个不太完备的应用,只是拿来练手,但是大体功能运行还是没问题的。使用源码,可以自行进行魔改哦。

源码模板
import pyttsx3
from tkinter import *
from tkinter import filedialog
root = Tk()
win_width = 800
win_height = 500
lst = []
root.wm_attributes('-transparentcolor','#ff0022')
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
start_x = int(screen_width / 2 - win_width / 2)
start_y = int(screen_height / 2 - win_height / 2)
scroll = Scrollbar(root)
answers = Text(root, font=28, width=win_width, height=win_height, yscrollcommand=scroll.set)
def open_file():
answers.configure(state='normal')
get_directory = filedialog.askopenfilename(title='select', filetypes=
[("text files", "*.txt"), ("all files", "*.*")])
with open("{}".format(get_directory), "r", encoding="UTF-8") as f:
answers.delete(1.0, END)
lst.clear()
for i in f.readlines():
answers.insert(END, i)
lst.append(i)
scroll.config(command=answers.yview)
root.title(get_directory)
scroll.pack(side=RIGHT, fill=Y)
answers.pack()
f.close()
label.destroy()
button.destroy()
answers.configure(state='disabled')
def play_voice():
engine = pyttsx3.init()
for i in lst:
engine.say(i)
engine.runAndWait()
def save_voice():
engine = pyttsx3.init()
engine.save_to_file("".join(lst), 'demo.mp3')
engine.runAndWait()
main_menu = Menu(root)
main_menu.add_command(label="Open", command=open_file)
main_menu.add_command(label="Play", command=play_voice)
main_menu.add_command(label="Save", command=save_voice)
main_menu.add_command(label="Exit", command=root.destroy)
root.config(menu=main_menu)
def meta_info():
root.geometry('{}x{}+{}+{}'.format(win_width, win_height, start_x, start_y))
root.title('TXT Reader')
root.iconbitmap("logo.svg.ico")
root.configure(bg="#ffffff")
label = Label(root, text="Select A TXT File", font="Arial 36 bold", bg="#ffffff", fg="#000000")
label.pack(pady=win_height//4)
button = Button(root, width=30, text="Open...", font="Arial 18 bold", fg="#000000", command=open_file)
button.pack(pady=0)
def main():
meta_info()
root.mainloop()
if __name__ == '__main__':
main()
再用pyinstaller,直接运行命令:
pyinstaller main.py
想了解详细打包过程,可以参看下方这篇文章:
运行后,出现没有发现pyttsx3这个模块,于是简单在之前生成的stackoverflow答案搜索图形Gui界面进行搜索,很容易就找到了答案。
只需要在打包的时候将pyttsx3的所有模块都引入打包即可,于是这样输入打包命令就实现了:
pyinstaller --hiddenimport pyttsx3.drivers --hiddenimport pyttsx3.drivers.dummy --hiddenimport pyttsx3.drivers.espeak --hiddenimport pyttsx3.drivers.nsss --hiddenimport pyttsx3.drivers.sapi5 main.py
如果想获得只生成一个文件,且没有调试窗口,且有应用图标,那么可以这样生成:
pyinstaller --hiddenimport pyttsx3.drivers --hiddenimport pyttsx3.drivers.dummy --hiddenimport pyttsx3.drivers.espeak --hiddenimport pyttsx3.drivers.nsss --hiddenimport pyttsx3.drivers.sapi5 -Fw main.py -i C:\Users\Administrator\PycharmProjects\pythonProject\logo.svg.ico
这样就生成好了,伯衡君已经放到压缩包,有需要的朋友可以下载使用。
- 我的微信
- 微信扫一扫加好友
-
- 我的微信公众号
- 扫描关注公众号
-





