使用“tf.audio.decode_wav”读取“wav”文件

vbf*_*bfh 1 tensorflow

我正在关注simple_audio上的音频识别张量流教程。该笔记本工作得很好。

下一步,我想录制自己的声音,然后通过张量流训练的模型运行它。我首先生成了一个录音:

seconds=1
sr=16000
nchannels=1
myrecording = sd.rec(int(seconds * sr), samplerate=sr, channels=nchannels)
sd.wait()
wavfile.write(filename, sr, myrecording)
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,我可以播放我的录音。tf.audio.decode_wav但是当我尝试加载与此类似的文件时:

audio_binary = tf.io.read_file(filename)
audio, _ = tf.audio.decode_wav(audio_binary)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

InvalidArgumentError:WAV 音频格式错误:预期为 1 (PCM),但得到了 3 [Op:DecodeWav]

非常感谢任何有关可能出现问题的指示。

小智 5

(本来可以将此写为评论,但我还没有足够的声誉)

WAV 文件的默认编码称为“16 位 PCM”,这意味着录制的声音在写入 WAV 文件之前使用 16 位 int 数据表示。

tf.audio.decode_wav()文档中指出:“将 16 位 PCM WAV 文件解码为浮点张量”。因此,使用任何其他编码(在您的情况下为 24 位编码)传递 WAV 文件都会导致与您收到的错误类似的错误。