# Created by Leo from: C:\Python23\Tom\leo\SpeachServer.leo # @language python # @path c:\python23\tom2 # << Speech_Client declarations >> import sys, time, math, string, os from wxPython.wx import * from Tkinter import * from tkSnack import * import socket from wxPython.lib.evtmgr import eventManager import pickle import struct # -- end -- << Speech_Client declarations >> # << Speech_Client methods >> (1 of 4) class MyFrame(wxFrame): # << class MyFrame methods >> (1 of 10) def __init__(self, parent, id, title): wxFrame.__init__(self, parent, id, title, wxDefaultPosition, wxDefaultSize) global phraselist self.buff = '' eventManager.Register(self.OnCloseWindow, EVT_CLOSE, self) #EVT_CLOSE(self, self.OnCloseWindow) maintimerID = wxNewId() self.maintimer = wxTimer(self, maintimerID) eventManager.Register(self.OnTimer, EVT_TIMER, win=self, id=maintimerID) #EVT_TIMER(self, maintimerID, self.OnTimer) self.dayofweek = time.localtime()[6] self.mainmenu = wxMenuBar() menu=wxMenu() exitID=wxNewId() menu.Append(exitID, '&Load', 'Load Data') eventManager.Register(self, EVT_MENU, win=self, id=exitID) #EVT_MENU(self, exitID, self.OnLoadData) exitID=wxNewId() menu.Append(exitID, '&Save', 'Save Data') eventManager.Register(self, EVT_MENU, win=self, id=exitID) #EVT_MENU(self, exitID, self.OnSaveData) exitID=wxNewId() menu.Append(exitID, 'Save &As', 'Save Data As') eventManager.Register(self, EVT_MENU, win=self, id=exitID) #EVT_MENU(self, exitID, self.OnSaveAsData) exitID=wxNewId() menu.Append(exitID, '&Clear', 'Clear Data') eventManager.Register(self, EVT_MENU, win=self, id=exitID) #EVT_MENU(self, exitID, self.OnClearData) self.mainmenu.Append (menu, '&Data') self.SetMenuBar (self.mainmenu) StartButtonID = wxNewId() self.StartButton = wxButton(self, StartButtonID, "Go", wxPoint(20, 20)) eventManager.Register(self.OnGoClick, EVT_BUTTON, self.StartButton) #EVT_BUTTON(self, StartButtonID, self.OnGoClick) self.StartButton.SetBackgroundColour(wxBLUE) self.StartButton.SetForegroundColour(wxWHITE) self.StartButton.SetDefault() StopButtonID = wxNewId() self.StopButton = wxButton(self, StopButtonID, "Stop", wxPoint(260, 20)) eventManager.Register(self.OnStopClick, EVT_BUTTON, self.StopButton) self.cs = comseg() #EVT_BUTTON(self, StopButtonID, self.OnStopClick) display1ID = wxNewId() self.display1 = wxTextCtrl(self, display1ID, '', size=(200, 100), style=wxTE_MULTILINE) self.StopButton.SetBackgroundColour(wxRED) self.StopButton.SetForegroundColour(wxWHITE) self.main_sizer = wxBoxSizer(wxVERTICAL) self.button_sizer = wxBoxSizer(wxHORIZONTAL) self.text_sizer = wxBoxSizer(wxHORIZONTAL) self.button_sizer.Add(self.StartButton, 1, wxEXPAND) self.button_sizer.Add(self.StopButton, 1, wxEXPAND) self.text_sizer.Add(self.display1, 1, wxEXPAND) self.main_sizer.Add(self.button_sizer, 1, wxEXPAND) self.main_sizer.Add(self.text_sizer, 1, wxEXPAND) self.SetSizer(self.main_sizer) self.SetAutoLayout(1) self.main_sizer.Fit(self) self.root = Tkinter.Tk() initializeSnack(self.root) self.tom = Sound() # << class MyFrame methods >> (2 of 10) def OnGoClick(self, event): #self.display1.Clear() self.display1.WriteText('Listening \u') self.maintimer.Start(500) # << class MyFrame methods >> (3 of 10) def OnStopClick(self, event): self.maintimer.Stop() # << class MyFrame methods >> (4 of 10) def OnTimer(self, event): sw = wxStopWatch() buff = '' self.tom.flush() sw.Start() self.tom.record() while sw.Time() < 250: pass self.tom.stop() del sw if self.tom.max()>3000: self.maintimer.Stop() self.display1.WriteText('Sampleing 5 secconds of sound - ') self.cs.record(5) self.display1.WriteText('Done recording - ') self.buff = self.cs.convt() self.display1.WriteText('Done converting - ') self.OnSend() # << class MyFrame methods >> (5 of 10) def OnSend(self): comcheck = mysocket() comcheck.connect('216.19.27.24') self.display1.WriteText('connected - ') if comcheck.myreceive() == '0123456789': self.display1.WriteText( 'OK - ') #comcheck.sock.shutdown(2) #comcheck.close() #comcheck1 = mysocket() #comcheck1.connect('216.19.27.24') self.display1.WriteText('transmitting file size - ') if comcheck.mysend(string.zfill(str(len(self.buff)), 10) ,10) == 10: self.display1.WriteText('OK - ') #comcheck1.sock.shutdown(2) #comcheck1.close() #comcheck2 = mysocket() #comcheck2.connect('216.19.27.24') self.display1.WriteText('transmitting file - ') if comcheck.mysend(self.buff,len(self.buff)) == len(self.buff): self.display1.WriteText('OK - ') comcheck.sock.shutdown(2) comcheck.close() # << class MyFrame methods >> (6 of 10) def OnSaveAsData(self, event): self.tom.close() dlg = wxFileDialog(self, "Data file name", ".", "", "*.txt", wxSAVE) if dlg.ShowModal() == wxID_OK: #path = dlg.GetPath() #self.tom = open(path,'w+') pass dlg.Destroy() # << class MyFrame methods >> (7 of 10) def OnClearData(self, event): pass # << class MyFrame methods >> (8 of 10) def OnLoadData(self, event): PlotWindow_data = [] dlg = wxFileDialog(self, "Data file name", ".", "", "*.txt", wxOPEN) if dlg.ShowModal() == wxID_OK: #self.tom = open(dlg.GetPath(),'r+') pass dlg.Destroy() self.tom.close() # << class MyFrame methods >> (9 of 10) def OnSaveData(self, event): PlotWindow_data = [] dlg = wxFileDialog(self, "Data file name", ".", "", "*.txt", wxSAVE) if dlg.ShowModal() == wxID_OK: #self.tom = open(dlg.GetPath(),'r+') pass #self.tom.close() dlg.Destroy() # << class MyFrame methods >> (10 of 10) def OnCloseWindow(self, event): self.Destroy() # -- end -- << class MyFrame methods >> # << Speech_Client methods >> (2 of 4) class comseg: # << class comseg methods >> (1 of 4) def __init__(self): self.root = Tkinter.Tk() initializeSnack(self.root) self.tom = Sound(frequency =11025,channels ="Mono",encoding ="Lin16" ) # << class comseg methods >> (2 of 4) def record(self, secconds): self.tom.record() self.ttimmeee = time.time() while time.time() < self.ttimmeee + secconds: pass self.tom.stop() # << class comseg methods >> (3 of 4) def convt(self): buff = '' for i in range(self.tom.info()[0]): num = str(self.tom.sample(i)) buff = buff + num + '|' return buff # << class comseg methods >> (4 of 4) def save(self, filename): self.tom.write(filename) #wxSafeYield() return 1 # -- end -- << class comseg methods >> # << Speech_Client methods >> (3 of 4) class mysocket: # << class mysocket methods >> (1 of 5) def __init__(self, sock=None): if sock is None: self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) else: self.sock = sock # << class mysocket methods >> (2 of 5) def connect(self,host, port = 1923): self.sock.connect((host, port)) # << class mysocket methods >> (3 of 5) def mysend(self,msg,leng): totalsent = 0 while totalsent < leng: sent = self.sock.send(msg[totalsent:]) if sent == 0: raise RuntimeError, "socket connection broken" totalsent = totalsent + sent return totalsent # << class mysocket methods >> (4 of 5) def myreceive(self): msg = '' while len(msg) < 10: chunk = self.sock.recv(10-len(msg)) if chunk == '': raise RuntimeError, "socket connection broken" msg = msg + chunk return msg # << class mysocket methods >> (5 of 5) def close(self): self.sock.shutdown(2) self.sock.close() # -- end -- << class mysocket methods >> # << Speech_Client methods >> (4 of 4) class MyApp(wxApp): # << class MyApp methods >> def OnInit(self): frame = MyFrame(None, -1, "Speech_Client") frame.Show(true) self.SetTopWindow(frame) return true # -- end -- << class MyApp methods >> # -- end -- << Speech_Client methods >> app = MyApp(0) app.MainLoop()