def __init__(self, schedulerType, mmuType, memCompact): self.running = False self.kernelMode = False self.mmu = mmuType self.pcbt = {} self.cpu = None self.io = None self.pid_counter = 0 self.current_pid = None self.idle = True self.scheduler = schedulerType self.longScheduler = PLP() self.memCompact = memCompact
class Kernel: lock = threading.RLock() def __init__(self, schedulerType, mmuType, memCompact): self.running = False self.kernelMode = False self.mmu = mmuType self.pcbt = {} self.cpu = None self.io = None self.pid_counter = 0 self.current_pid = None self.idle = True self.scheduler = schedulerType self.longScheduler = PLP() self.memCompact = memCompact def start(self): print('[kernel] starting...') if not self.running: self.running = 1 self.cpu = CPU(self, self.mmu) self.cpu.start() self.io = IO(self) self.io.start() print('[kernel] started.') def stop(self): self.running = False sys.exit(0) def interrupt(self, signal): self.lock.acquire() self.kernelMode = True try: signal.execute(self) finally: self.kernelMode = False self.lock.release() def run(self, prog): self.lock.acquire() try: pid = self.pid_counter self.pid_counter = self.pid_counter + 1 self.pcbt[pid] = PCB(pid, prog.priority, 0) self.longScheduler.add(self, self.pcbt[pid], prog, self.memCompact) finally: self.lock.release() print('[kernel.run] pid %d: %s'%(pid, prog)) self.interrupt(SignalNew()) def setQuantum(self, quantum): self.scheduler.setQuantum(quantum) def getCPUburstTime(self): return self.cpu.burstTime def canLoad(self, prog): return self.mmu.canLoad(prog) def load(self, pcb, prog): self.mmu.load(pcb, prog) def longReschedule(self): self.longScheduler.reschedule(self) def reschedule(self): self.scheduler.reschedule(self) def compact(self): self.mmu.compact(self.pcbt) def exit(self): self.cpu.pcb = None self.mmu.unload(self.pcbt[self.current_pid]) del self.pcbt[self.current_pid] self.current_pid = None def set_idle(self): self.idle = True
def features(filename,varin): fs = varin['fs'] framesize = varin['framesize'] hopsize = varin['hopsize'] feature_select = varin['feature_select'] audio = ess.MonoLoader(downmix = 'left', filename = filename, sampleRate = fs)() # spectrogram init winAnalysis = 'hann' N = 2 * framesize # padding 1 time framesize SPECTRUM = ess.Spectrum(size=N) WINDOW = ess.Windowing(type=winAnalysis, zeroPadding=N-framesize) highFrequencyBound = fs/2 if fs/2<11000 else 11000 MFCC = ess.MFCC(sampleRate=fs,highFrequencyBound=highFrequencyBound,inputSize=framesize+1) GFCC = ess.GFCC(sampleRate=fs,highFrequencyBound=highFrequencyBound) ZCR = ess.ZeroCrossingRate() ENERGY = ess.Energy() mfcc = [] mfccBands = [] gfcc = [] energy = [] zcr = [] autoCorrelation = [] mX = [] print 'calculating ', feature_select, ' ... ...' for frame in ess.FrameGenerator(audio, frameSize=framesize, hopSize=hopsize): frame_audio = frame frame = WINDOW(frame) mXFrame = SPECTRUM(frame) mX.append(mXFrame) energyFrame = ENERGY(mXFrame) energy.append(energyFrame) if feature_select == 'mfcc' or feature_select == 'dmfcc': bands,mfccFrame = MFCC(mXFrame) mfccFrame = mfccFrame[1:] mfcc.append(mfccFrame) if feature_select == 'mfccBands': bands,mfccFrame = MFCC(mXFrame) mfccBands.append(bands) if feature_select == 'gfcc': bands,gfccFrame = GFCC(mXFrame) gfccFrame = gfccFrame[1:] gfcc.append(gfccFrame) if feature_select == 'zcr': zcrFrame = ZCR(frame_audio) zcr.append(zcrFrame) if feature_select == 'autoCorrelation': autoCorrelationFrame = np.corrcoef(frame_audio) autoCorrelation.append(autoCorrelationFrame) mX = np.array(mX) if feature_select == 'mfcc': feature = np.array(mfcc) elif feature_select == 'dmfcc': dmfcc = Fdeltas(np.array(mfcc).transpose(),w=9) ddmfcc = Fdeltas(dmfcc,w=5) feature = np.transpose(np.vstack((dmfcc,ddmfcc))) elif feature_select == 'mfccBands': feature = np.array(mfccBands) elif feature_select == 'gfcc': feature = np.array(gfcc) elif feature_select == 'plpcc': feature,plp,bark = PLP(mX,modelorder=12,rasta=False) feature = feature[:,1:] elif feature_select == 'plp': plpcc,feature,bark = PLP(mX,modelorder=12,rasta=False) feature = feature[:,1:] elif feature_select == 'rasta-plpcc': feature,plp,bark = PLP(mX,modelorder=12,rasta=True) feature = feature[:,1:] elif feature_select == 'rasta-plp': plpcc,feature,bark = PLP(mX,modelorder=12,rasta=True) feature = feature[:,1:] elif feature_select == 'bark': plpcc,plp,feature = PLP(mX,modelorder=12,rasta=False) elif feature_select == 'zcr': feature = np.array(zcr) elif feature_select == 'autoCorrelation': feature = np.array(autoCorrelation) else: feature,d_MRCG,dd_MRCG = MRCG(audio,fs=fs) return feature,energy,mX