问题描述
我有一组想要生成频谱图的 wav 文件。但是当我使用 tf.audio.decode_wav 函数时,出现以下错误:
InvalidArgumentError:WAV 音频格式错误:预期为 1 (PCM),但 got7 [Op:DecodeWav]
我该如何规避这个错误?还有其他方法可以使用 tensorflow 为 wav 文件生成 log mel 频谱图吗?
我知道 librosa 包,但我更喜欢 tensorflow。
代码是:
def decode_audio(audio_binary):
audio,_ = tf.audio.decode_wav(audio_binary)
return tf.squeeze(audio,axis=-1)
def get_waveform_and_label(file_path):
audio_binary = tf.io.read_file(file_path)
waveform = decode_audio(audio_binary)
return waveform
解决方法
该错误表明您的文件表明它们具有编码为 8 位 mulaw 的样本。
如 tf.audio.decode_wav 的 TensorFlow 文档中所述,此方法仅支持 16 位 PCM WAV。
在将 wave 文件传递给 tensorflow 之前,您需要对其重新编码。 ffmpeg 之类的东西可以在这里提供帮助。