• 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)
  • 相关阅读:
    算法练习(16)-水平翻转一颗二叉树
    算法练习(15)-设计1个二叉树的序列化与反序列化实现?
    算法练习(14)-二叉树中2个节点的最近公共祖先?
    算法练习(13)-打印纸条对折的折痕类型(凹痕?凸痕?)
    算法练习(12)-二叉树的递归套路
    算法练习(11)-二叉树的各种遍历
    算法练习(10)-求2个(可能有环的)单链表的相交节点
    算法练习(9)-复杂带随机指针的单链表
    mac升级后第三方下载程序无法打开cannot be opened because the developer cannot be verified的解决办法
    算法练习(8)-判断单链表是否回文链表
  • 原文地址:https://www.cnblogs.com/wangrudong003/p/10161502.html
Copyright © 2020-2023  润新知