TEXT转MP3语音——python

import pathlib
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.filedialog as filedialog
import tkinter.messagebox as msgbox #messagebox的工具函数是只要标题和提示区即可
import pyttsx3


class Application(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("text2MP3")
        self.geometry("300x120") #设置窗口的大小和位置 需要一个字符串参数
        self.iconbitmap() #图标
        self.engine = pyttsx3.init() #初始化语音库
        self.file_path = tk.StringVar() #应付对控件的文字内容实时更改的需求
        self.UI()

    def UI(self):
        self.row1 = tk.LabelFrame(self,text="文本文件") #绘制一个边框和标题
        self.row1.pack(fill=tk.X, padx=5, pady=5)

        self.text_path = tk.Entry(self.row1,textvariable=self.file_path) #Entry用于获取用户的输入文本
        self.text_path.pack(side=tk.LEFT,fill=tk.X,expand=True,padx=5,pady=5) #样式

        self.btn_sel = tk.Button(self.row1, text="选择", command=self.select_file) #创建按钮
        self.btn_sel.pack(side=tk.RIGHT, pady=5, padx=5)

        self.btn_convert = tk.Button(self, text="转换为 MP3", command=self.convert2mp3)
        self.btn_convert.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)

    def select_file(self):
        #调用askopenfile方法获取单个打开的文件
        txt_file = filedialog.askopenfile(initialdir=".", title="选择文件",
                                          filetypes=(('文件文件', '*.txt'), ('所有文件', '*.*')))
                                        #filetypes文件类型
        #print(txt_file) #<_io.TextIOWrapper name='C:/Users/bohs/Desktop/新建文本文档.txt' mode='r' encoding='cp936'>
        if txt_file:
            self.file_path.set(txt_file.name)

    def convert2mp3(self):
        filename = pathlib.Path(self.file_path.get()) #pathlib是Python标准库中的一个模块,它提供了一组面向对象的文件系统路径操作
        #print(filename) #C:\Users\bohs\Desktop\新建文本文档.txt
        #print(filename.stem) #新建文本文档
        #pathlib.Path()是pathlib模块中的核心类,表示一个文件系统路径
        with open(filename, 'r', encoding='utf8') as f:
            self.engine.save_to_file(f.read(), f"{filename.stem}.mp3") #engine.save_to_file()将语音输出保存为音频文件
            self.engine.runAndWait()
        msgbox.showinfo("转换结果", "文件转换成功!") #弹框


if __name__ == "__main__":
    app = Application() #根窗口的实例(root窗口)
    app.mainloop() #窗口的主事件循环,必须有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值