Я следовал этому примеру, чтобы вычислить mfcc с использованием тензорного потока. Для визуализации я попытался использовать matplotlib, как указано здесь . Но это говорит
Тензорные объекты не могут быть повторяемыми, если активное выполнение не включено. Чтобы перебрать этот тензор, используйте tf.map_fn.
Когда я делаю print(mfccs)
засаду plt.plot(mfccs)
и plt.show()
, я получаю
Тензор ("strided_slice_2: 0", форма = (0, 13), dtype = float32)
Ниже приведен пример кода. Аналогично здесь
import functools
import tensorflow as tf
from tensorflow.contrib.signal.python.ops import window_ops
from tensorflow.contrib.framework.python.ops import audio_ops as contrib_audio
from tensorflow.contrib import ffmpeg
sampling_rate = 44000
audio_file = tf.placeholder(tf.string)
audio_binary = tf.read_file(audio_file)
desired_channels = 1
waveform = tf.contrib.ffmpeg.decode_audio(
audio_binary,
file_format="wav",
desired_channels=desired_channels,
desired_samples=sampling_rate,
name='decoded_sample_data')
transwav = tf.transpose(waveform[0])
with tf.name_scope('Energy_Spectogram'):
fft_frame_length = 512
fft_frame_step = 512
window_fn = functools.partial(window_ops.hann_window, periodic=True)
stft = tf.contrib.signal.stft(signals=transwav, frame_length=fft_frame_length, frame_step=fft_frame_step,
window_fn=window_fn)
istft = tf.contrib.signal.inverse_stft(stfts=stft, frame_length=fft_frame_length, frame_step=fft_frame_step,
window_fn=tf.contrib.signal.inverse_stft_window_fn(fft_frame_step,
forward_window_fn=window_fn))
with tf.Session() as sess:
original, reconstructed = sess.run([transwav, istft])
import matplotlib.pyplot as plt
plt.plot(original)
plt.plot(reconstructed)
plt.show()
Любые предложения.
Спасибо