开篇寄语
伯衡君之前分享过一个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
这样就生成好了,伯衡君已经放到压缩包,有需要的朋友可以下载使用。
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号