def get_wav(self): assert self.donesynth waveform = Waveform() waveform.samples = np.zeros(LIBHTS.HTS_Engine_get_nsamples( self.engine), np.int16) #16-bit samples waveform.samplerate = int( LIBHTS.HTS_Engine_get_sampling_frequency(self.engine)) waveform.channels = 1 for i in range(len(waveform.samples)): waveform.samples[i] = LIBHTS.HTS_Engine_get_generated_speech( self.engine, i) #copy return waveform
def _concatunits(self, utt, args): """ Concatenates units and produces waveform via residual excited LPC synthesis filter... """ unit_rel = utt.get_relation("Unit") #concat: unit_item = unit_rel.head_item lpctrack = copy.deepcopy( unit_item["selected_unit"]["candidate"]["lpc-coefs"]) residuals = window_residual( unit_item["selected_unit"]["candidate"]["lpc-coefs"], unit_item["selected_unit"]["candidate"]["residuals"]) unit_item = unit_item.next_item while unit_item is not None: temptrack = unit_item["selected_unit"]["candidate"]["lpc-coefs"] #append lpccoefs to lpctrack: lpctrack.times = np.concatenate( (lpctrack.times, (temptrack.times + lpctrack.times[-1]))) lpctrack.values = np.concatenate( (lpctrack.values, temptrack.values)) #append windowed residuals: residuals.extend( window_residual( temptrack, unit_item["selected_unit"]["candidate"]["residuals"])) unit_item = unit_item.next_item #overlap add residual: lastsample = int(round(lpctrack.times[-1] * SAMPLERATE)) + int( round(len(residuals[-1]) / 2)) residual = np.zeros(lastsample + 1) for i, time in enumerate(lpctrack.times): centersample = int(round(time * SAMPLERATE)) firstsample = centersample - int(len(residuals[i]) / 2) residual[firstsample:firstsample + len(residuals[i])] += np.array( residuals[i]) #synth filter: samples = synth_filter(lpctrack.times, lpctrack.values, residual.astype(np.float), SAMPLERATE) #save in utterance: w = Waveform() w.samplerate = SAMPLERATE w.samples = samples.astype("int16") #16bit samples w.channels = 1 utt["waveform"] = w return utt