欢迎光临散文网 会员登陆 & 注册

傻瓜读书软件wxpython版代码

2020-03-31 10:01 作者:一心想当网红的李老师  | 我要投稿

# -*- coding: utf-8 -*-

"""

Created on Sun Mar 29 13:53:29 2020


@author: liyan

"""


import os

import importlib,sys

importlib.reload(sys)

from docx import Document

from docx.shared import Inches

import pyttsx3

import wx

import pyaudio

import time

import threading

import wave


class Recorder():

    def __init__(self, chunk=1024, channels=1, rate=64000):

        self.CHUNK = chunk

        self.FORMAT = pyaudio.paInt16

        self.CHANNELS = channels

        self.RATE = rate

        self._running = True

        self._frames = []

    def start(self):

        threading._start_new_thread(self.__recording, ())

    def __recording(self):

        self._running = True

        self._frames = []

        p = pyaudio.PyAudio()

        stream = p.open(format=self.FORMAT,

                        channels=self.CHANNELS,

                        rate=self.RATE,

                        input=True,

                        frames_per_buffer=self.CHUNK)

        while(self._running):

            data = stream.read(self.CHUNK)

            self._frames.append(data)

 

        stream.stop_stream()

        stream.close()

        p.terminate()

 

    def stop(self):

        self._running = False

 

    def save(self, filename):

        

        p = pyaudio.PyAudio()

        if not filename.endswith(".wav"):

            filename = filename + ".wav"

        wf = wave.open(filename, 'wb')

        wf.setnchannels(self.CHANNELS)

        wf.setsampwidth(p.get_sample_size(self.FORMAT))

        wf.setframerate(self.RATE)

        wf.writeframes(b''.join(self._frames))

        wf.close()

        print("Saved")




l=[]


class mainframe(wx.Frame):

    def __init__(self, parent):

        wx.Frame.__init__(self,parent,title='读书软件',size=(480,320))

        self.BeginBtn = wx.Button(self,label='打开文件',pos=(5,5),size=(80,25))

        self.BeginBtn.Bind(wx.EVT_BUTTON,self.openfile)

        self.inputBtn= wx.Button(self,label='清空内容',pos=(105,5),size=(80,25))

        self.inputBtn.Bind(wx.EVT_BUTTON,self.cleartext)

        self.readBtn= wx.Button(self,label='开始读书',pos=(205,5),size=(80,25))

        self.readBtn.Bind(wx.EVT_BUTTON,self.readtext)

        self.text = wx.TextCtrl(self, pos=(15,30), size =(360,200), style = wx.TE_MULTILINE)



    def openfile(self,event):

        global file_path,l

        

        wildcard = 'All files(*.*)|*.*'

        dialog = wx.FileDialog(None,'select',os.getcwd(),'',wildcard,wx.FD_OPEN)

        if dialog.ShowModal() == wx.ID_OK:

            file_path=dialog.GetPath()

        

            if os.path.splitext(str(file_path))[1]=='.txt':  ###对于TXT文件的处理

                f=open(file_path,encoding='utf-8')

                fread=f.read()

                f=str(fread)

                self.text.AppendText(f)  

            elif os.path.splitext(str(file_path))[1]=='.docx': ###对于WORD文件处理

                f=Document(file_path)

                for para in f.paragraphs:

                    l.append(para.text)

                self.text.AppendText(str(l))


    def cleartext(self,event):

        self.text.Clear()

        

    def readtext(self,event):

        global l

        rec = Recorder()

        begin = time.time()

        print("Start recording")

        rec.start()

        l=self.text.GetValue()

        engine=pyttsx3.init()

        engine.say(str(l))

        engine.runAndWait()

        rec.stop()

        print('stop')

        rec.save("1.wav")




if __name__=='__main__':

    app = wx.App()

    SiteFrame = mainframe(parent=None)

    SiteFrame.Show()  

    app.MainLoop()


傻瓜读书软件wxpython版代码的评论 (共 条)

分享到微博请遵守国家法律