2017-11-01 3 views
0

Ich versuche tensorflow mfcc geben Sie mir die gleichen Ergebnisse wie Python lybrosa mfcc Ich habe versucht, passen alle Standard-Parameter, die verwendet werden durch librosa in meinem tensorflow Code und bekam ein anderes Ergebnisist es möglich, genau die gleichen Ergebnisse von Tensorflow mfcc und librosa mfcc zu erhalten?

dies zu machen die tensorflow Code, die ich verwendet habe:

waveform = contrib_audio.decode_wav(
audio_binary, 
desired_channels=1, 
desired_samples=sample_rate, 
name='decoded_sample_data') 


sample_rate = 16000 

transwav = tf.transpose(waveform[0]) 

stfts = tf.contrib.signal.stft(transwav, 
    frame_length=2048, 
    frame_step=512, 
    fft_length=2048, 
    window_fn=functools.partial(tf.contrib.signal.hann_window, 
    periodic=False), 
    pad_end=True) 

spectrograms = tf.abs(stfts) 
num_spectrogram_bins = stfts.shape[-1].value 
lower_edge_hertz, upper_edge_hertz, num_mel_bins = 0.0,8000.0, 128 
linear_to_mel_weight_matrix = 
tf.contrib.signal.linear_to_mel_weight_matrix(
num_mel_bins, num_spectrogram_bins, sample_rate, lower_edge_hertz, 
    upper_edge_hertz) 
mel_spectrograms = tf.tensordot(
spectrograms, 
linear_to_mel_weight_matrix, 1) 
mel_spectrograms.set_shape(spectrograms.shape[:-1].concatenate(
linear_to_mel_weight_matrix.shape[-1:])) 
log_mel_spectrograms = tf.log(mel_spectrograms + 1e-6) 
mfccs = tf.contrib.signal.mfccs_from_log_mel_spectrograms(
    log_mel_spectrograms)[..., :20] 

das Äquivalent in librosa: libr_mfcc = librosa.feature.mfcc (wav, 16000)

im folgenden sind die Diagramme der Ergebnisse: tensorflow mfcc results

librosa mfcc results

Antwort

0

Die Ausgabe von contrib_audio.decode_wav sollte DecodeWav mit {Audio, sample_rate} und audio Form ist (sample_rate, 1), so das sein, was ist der Zweck für den ersten Punkt der Wellenform erhalten und Sie transponieren ?

transwav = tf.transpose(waveform[0])

+0

es hat nicht funktioniert, ohne transponieren ich eine falsche Form eine Fehlermeldung anzeigt. –

Verwandte Themen