-1
$\begingroup$

I have audio of 3 min duration ,I have Waveform shape: (2880000,) so what should be the value for frame_length and frame_step

spectrogram = tf.signal.stft(waveform, frame_length=?, frame_step=?)

spectrogram = tf.abs(spectrogram)

On choosing frame_length=255 & frame_step=128 I get spectrogram shape as 22499,129 and when I try to visualise

def plot_spectrogram(spectrogram, ax):
  # Convert to frequencies to log scale and transpose so that the time is
  # represented in the x-axis (columns).
  log_spec = np.log(spectrogram.T)
  height = log_spec.shape[0]
  X = np.arange(2880000, step=height + 1)
  Y = range(height)
  ax.pcolormesh(X, Y, log_spec)


fig, axes = plt.subplots(2, figsize=(12, 8))
timescale = np.arange(audio.shape[0])
axes[0].plot(timescale, audio.numpy())
axes[0].set_title('Waveform')
axes[0].set_xlim([0, 2880000])
plot_spectrogram(spectrogram.numpy(), axes[1])
axes[1].set_title('Spectrogram')
plt.show()

I get this error Dimensions of C (129, 22499) are incompatible with X (22154) and/or Y (129); see help(pcolormesh)

So question is how to choose parameters and then visualise

New contributor
aryan agarwal is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
$\endgroup$

Your Answer

aryan agarwal is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.