读取 wav 文件时出现“WAV 音频格式错误”

问题描述

我有一组想要生成频谱图的 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 之类的东西可以在这里提供帮助。