def analsynthSprModelStreaming(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") spec = es.Spectrum(size=params['frameSize']) smanal = es.SprModelAnal(sampleRate=params['sampleRate'], hopSize=params['hopSize'], maxnSines=params['maxnSines'], magnitudeThreshold=params['magnitudeThreshold'], freqDevOffset=params['freqDevOffset'], freqDevSlope=params['freqDevSlope'], minFrequency=params['minFrequency'], maxFrequency=params['maxFrequency']) synFFTSize = min( int(params['frameSize'] / 4), 4 * params['hopSize']) # make sure the FFT size is appropriate smsyn = es.SprModelSynth(sampleRate=params['sampleRate'], fftSize=synFFTSize, 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 >> smanal.frame # synthesis smanal.magnitudes >> smsyn.magnitudes smanal.frequencies >> smsyn.frequencies smanal.phases >> smsyn.phases smanal.res >> smsyn.res smsyn.frame >> (pool, 'frames') smsyn.sineframe >> (pool, 'sineframes') smsyn.resframe >> (pool, 'resframes') essentia.run(insignal) outaudio = framesToAudio(pool['frames']) outaudio = outaudio[2 * params['hopSize']:] return outaudio, pool
def analSprModelStreaming(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") spec = es.Spectrum(size=params['frameSize']) smanal = es.SprModelAnal(sampleRate=params['sampleRate'], maxnSines=params['maxnSines'], magnitudeThreshold=params['magnitudeThreshold'], freqDevOffset=params['freqDevOffset'], freqDevSlope=params['freqDevSlope'], minFrequency=params['minFrequency'], maxFrequency=params['maxFrequency']) # 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 >> smanal.frame smanal.magnitudes >> (pool, 'magnitudes') smanal.frequencies >> (pool, 'frequencies') smanal.phases >> (pool, 'phases') smanal.res >> (pool, 'res') essentia.run(insignal) # remove first half window frames mags = pool['magnitudes'] freqs = pool['frequencies'] phases = pool['phases'] # remove short tracks minFrames = int(params['minSineDur'] * params['sampleRate'] / params['hopSize']) freqsClean = cleaningSineTracks(freqs, minFrames) pool['frequencies'].data = freqsClean return mags, freqsClean, phases
tutorial_dir = os.path.dirname(os.path.realpath(__file__)) inputFilename = os.path.join(tutorial_dir, 'singing-female.wav') outputFilename = os.path.join(tutorial_dir, 'singing-female-out-sprmodel.wav') out = np.array(0) 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.SprModelAnal(sampleRate=params['sampleRate'], maxnSines=params['maxnSines'], magnitudeThreshold=params['magnitudeThreshold'], freqDevOffset=params['freqDevOffset'], freqDevSlope=params['freqDevSlope']) synFFTSize = min(int(params['frameSize'] / 4), 4 * params['hopSize']) # make sure the FFT size is appropriate smsyn = es.SprModelSynth(sampleRate=params['sampleRate'], fftSize=synFFTSize, hopSize=params['hopSize']) # analysis loader.audio >> fcut.signal fcut.frame >> smanal.frame smanal.magnitudes >> (pool, 'magnitudes') smanal.frequencies >> (pool, 'frequencies') smanal.phases >> (pool, 'phases')