自制文字转语音的文本阅读器使用python原来这么简单

已收录   阅读次数: 1,090
2021-02-1819:39:53 发表评论
摘要

伯衡君之前分享过一个pyttsx3这个python库,可以将文本转化为语音,还能快速转存为mp3格式,非常方便,制作成一个图形界面,可以方便听文本和存为MP3,方便以后听,非常简单的小工具,使用tkinter打包的时候还又有了新发现,一并分享出来……

分享至:
自制文字转语音的文本阅读器使用python原来这么简单

开篇寄语

伯衡君之前分享过一个pyttsx3这个python库,可以将文本转化为语音,还能快速转存为mp3格式,非常方便,制作成一个图形界面,可以方便听文本和存为MP3,方便以后听,非常简单的小工具,使用tkinter打包的时候还又有了新发现,一并分享出来。

前情提要

功能介绍

功能很简单啦,支持打开txt文本,朗读全文,可以转存为mp3格式方便收听。其实是一个不太完备的应用,只是拿来练手,但是大体功能运行还是没问题的。使用源码,可以自行进行魔改哦。

自制文字转语音的文本阅读器使用python原来这么简单

源码模板

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

这样就生成好了,伯衡君已经放到压缩包,有需要的朋友可以下载使用。

文件下载 txt reader
下载地址
  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: