首页 > 解决方案 > 使用 `tf.audio.decode_wav` 读取 `wav` 文件

问题描述

我正在关注 simple_audio 的 tensorflow 音频识别教程。笔记本很好用。

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

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

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

audio_binary = tf.io.read_file(filename)
audio, _ = tf.audio.decode_wav(audio_binary)

我收到以下错误:

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

非常感谢任何有关可能出错的指示。

标签: tensorflow

解决方案


(会写这个作为评论,但我还没有足够的声誉)

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

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


推荐阅读