def analysisSynthesisStreaming(params, signal): out = numpy.array(0) pool = essentia.Pool() fcut = es.FrameCutter(frameSize=params['frameSize'], hopSize=params['hopSize'], startFromZero=False) w = es.Windowing(type="hann") fft = es.FFT(size=params['frameSize']) ifft = es.IFFT(size=params['frameSize']) overl = es.OverlapAdd(frameSize=params['frameSize'], hopSize=params['hopSize']) # add half window of zeros to input signal to reach same ooutput length signal = numpy.append(signal, zeros(params['frameSize'] / 2)) insignal = VectorInput(signal) insignal.data >> fcut.signal fcut.frame >> w.frame w.frame >> fft.frame fft.fft >> ifft.fft ifft.frame >> overl.frame overl.signal >> (pool, 'audio') essentia.run(insignal) # remove first half window frames outaudio = pool['audio'] outaudio = outaudio[2 * params['hopSize']:] return outaudio
def analsynthSineModelStreaming(params, signal): out = numpy.array(0) pool = essentia.Pool() fcut = es.FrameCutter(frameSize=params['frameSize'], hopSize=params['hopSize'], startFromZero=False) w = es.Windowing(type="blackmanharris92") fft = es.FFT(size=params['frameSize']) smanal = es.SineModelAnal(sampleRate=params['sampleRate'], maxnSines=params['maxnSines'], magnitudeThreshold=params['magnitudeThreshold'], freqDevOffset=params['freqDevOffset'], freqDevSlope=params['freqDevSlope']) smsyn = es.SineModelSynth(sampleRate=params['sampleRate'], fftSize=params['frameSize'], hopSize=params['hopSize']) ifft = es.IFFT(size=params['frameSize']) overl = es.OverlapAdd(frameSize=params['frameSize'], hopSize=params['hopSize'], gain=1. / params['frameSize']) # add half window of zeros to input signal to reach same ooutput length signal = numpy.append(signal, zeros(params['frameSize'] / 2)) insignal = VectorInput(signal) # analysis insignal.data >> fcut.signal fcut.frame >> w.frame w.frame >> fft.frame fft.fft >> smanal.fft smanal.magnitudes >> (pool, 'magnitudes') smanal.frequencies >> (pool, 'frequencies') smanal.phases >> (pool, 'phases') # synthesis smanal.magnitudes >> smsyn.magnitudes smanal.frequencies >> smsyn.frequencies smanal.phases >> smsyn.phases smsyn.fft >> ifft.fft ifft.frame >> overl.frame overl.signal >> (pool, 'audio') essentia.run(insignal) # remove short tracks freqs = pool['frequencies'] minFrames = int(params['minSineDur'] * params['sampleRate'] / params['hopSize']) freqsClean = cleaningSineTracks(freqs, minFrames) pool['frequencies'].data = freqsClean # remove first half window frames outaudio = pool['audio'] outaudio = outaudio[2 * params['hopSize']:] return outaudio, pool
def analsynthHarmonicMaskStreaming(params, signal): out = array([0.]) pool = essentia.Pool() # windowing and FFT fcut = es.FrameCutter(frameSize=params['frameSize'], hopSize=params['hopSize'], startFromZero=False) w = es.Windowing(type="blackmanharris92") fft = es.FFT(size=params['frameSize']) spec = es.Spectrum(size=params['frameSize']) # pitch detection pitchDetect = es.PitchYinFFT(frameSize=params['frameSize'], sampleRate=params['sampleRate']) hmask = es.HarmonicMask(sampleRate=params['sampleRate'], binWidth=params['binWidth'], attenuation=params['attenuation_dB']) ifft = es.IFFT(size=params['frameSize']) overl = es.OverlapAdd(frameSize=params['frameSize'], hopSize=params['hopSize']) # add half window of zeros to input signal to reach same ooutput length signal = numpy.append(signal, zeros(params['frameSize'] // 2)) insignal = VectorInput(signal) # analysis insignal.data >> fcut.signal fcut.frame >> w.frame w.frame >> spec.frame w.frame >> fft.frame spec.spectrum >> pitchDetect.spectrum fft.fft >> hmask.fft pitchDetect.pitch >> hmask.pitch pitchDetect.pitchConfidence >> (pool, 'pitchConfidence') hmask.fft >> ifft.fft ifft.frame >> overl.frame overl.signal >> (pool, 'audio') essentia.run(insignal) # remove first half window frames outaudio = pool['audio'] outaudio = outaudio[2 * params['hopSize']:] return outaudio, pool
audioout = np.append(audioout, out) counter += 1 # write audio output print audioout.shape awrite(audioout.astype(np.float32)) if mode == 'streaming': out = np.array(0) loader = es.MonoLoader(filename = inputFilename, sampleRate = 44100) pool = essentia.Pool() fcut = es.FrameCutter(frameSize = framesize, hopSize = hopsize, startFromZero = False); w = es.Windowing(type = "hann"); fft = es.FFT(size = framesize); ifft = es.IFFT(size = framesize); overl = es.OverlapAdd (frameSize = framesize, hopSize = hopsize); awrite = es.MonoWriter (filename = outputFilename, sampleRate = 44100); #gen = audio #VectorInput(audio) loader.audio >> fcut.signal fcut.frame >> w.frame w.frame >> fft.frame fft.fft >> ifft.fft ifft.frame >> overl.frame overl.signal >> awrite.audio overl.signal >> (pool, 'audio') essentia.run(loader)
loader = es.MonoLoader(filename=inputFilename, sampleRate=params['sampleRate']) pool = essentia.Pool() fcut = es.FrameCutter(frameSize=params['frameSize'], hopSize=params['hopSize'], startFromZero=False) w = es.Windowing(type="blackmanharris92") fft = es.FFT(size=params['frameSize']) smanal = es.SineModelAnal(sampleRate=params['sampleRate'], maxnSines=params['maxnSines'], magnitudeThreshold=params['magnitudeThreshold'], freqDevOffset=params['freqDevOffset'], freqDevSlope=params['freqDevSlope']) smsyn = es.SineModelSynth(sampleRate=params['sampleRate'], fftSize=params['frameSize'], hopSize=params['hopSize']) ifft = es.IFFT(size=params['frameSize']) overl = es.OverlapAdd(frameSize=params['frameSize'], hopSize=params['hopSize']) awrite = es.MonoWriter(filename=outputFilename, sampleRate=params['sampleRate']) # analysis loader.audio >> fcut.signal fcut.frame >> w.frame w.frame >> fft.frame fft.fft >> smanal.fft smanal.magnitudes >> (pool, 'magnitudes') smanal.frequencies >> (pool, 'frequencies') smanal.phases >> (pool, 'phases') # synthesis smanal.magnitudes >> smsyn.magnitudes smanal.frequencies >> smsyn.frequencies