def _extractFeatures_(self): print('Extraction des features ...') mfcc_feat = [] filter_feat = [] spectrum = [] for i in range(len(self.rate)): mfcc_feat.append( mfcc(self.data[i], self.rate[i], self.winlen, self.winstep, self.numcep, self.nfilt, self.nfft, self.lowfreq, self.highfreq)) filterFeat, energy, spectrum0 = fbank(self.data[i], self.rate[i], self.winlen, self.winstep, self.nfilt, self.nfft, self.lowfreq, self.highfreq) filterFeat = 10 * np.log10(filterFeat) #filterFeat -= (numpy.mean(filterFeat, axis=0) + 1e-8) #filterFeat /=numpy.std(filterFeat, axis=0) spectrum0 = 10 * np.log10(spectrum0) #spectrum0 -= (numpy.mean(spectrum0, axis=0) + 1e-8) #spectrum0 /=numpy.std(spectrum0, axis=0) filter_feat.append(filterFeat) spectrum.append(spectrum0) self.features = { 'mfcc': mfcc_feat, 'filter': filter_feat, 'spectrum': spectrum } print('Extraction des features terminée ...')
def comp_feat(self, sig, rate): """ compute the features Args: sig: the audio signal as a 1-D numpy array rate: the sampling rate Returns: the features as a [seq_length x feature_dim] numpy array """ # snip the edges sig = snip(sig, rate, float(self.conf['winlen']), float(self.conf['winstep'])) if 'scipy' in self.conf and self.conf['scipy'] == 'True': feat = base.angspec_scipy(sig, rate, self.conf) else: feat = base.angspec(sig, rate, self.conf) if self.conf['include_energy'] == 'True': if 'scipy' in self.conf and self.conf['scipy'] == 'True': _, energy = base.fbank_scipy(sig, rate, self.conf) else: _, energy = base.fbank(sig, rate, self.conf) feat = np.append(feat, energy[:, np.newaxis], 1) return feat