无法在张量流中加载音频文件(Windows10)

时间:2018-03-05 14:30:00

标签: python windows audio tensorflow ffmpeg

这可能是个问题。 我可以像这样加载audio_binary audio_binary = tf.read_file(wav_file_path) 但是当我尝试用这个来阅读wav时:

from tensorflow.contrib import ffmpeg
waveform = ffmpeg.decode_audio( audio_binary, file_format='wav', samples_per_second=16000, channel_count=1)

我收到错误ImportError: No module named 'tensorflow.contrib.ffmpeg.ops'

我也试过这样做:

from tensorflow.contrib.framework.python.ops import audio_ops as contrib_audio
wav_decoder = contrib_audio.decode_wav(audio_binary, desired_channels=1)

我收到此错误InvalidArgumentError: Header mismatch: Expected RIFF but found NIST

顺便说一句,我在Jupyter笔记本中使用tensorflow-gpu。

任何帮助都将受到高度赞赏。 谢谢!

2 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题。 我使用的是TIMIT数据库,他们的文件虽然是.wav,却有不同的编码(NIST)。我必须将它们更改为RIFF,如forfiles /s /m *.wav /c "cmd /c sph2pipe -f wav @file @fnameRIFF.wav" 并使用第二个命令contrib_audio.decode_wav(...)

根据这个答案: Change huge amount of data from NIST to RIFF wav file

这个页面: http://soundfile.sapp.org/doc/WaveFormat/

答案 1 :(得分:0)

您可能要检查当前使用的张量流的版本。

tensorflow 1.X:

tensorflow.contrib.ffmpeg.decode_audio()

tensorflow 2.X:

tensorflow.audio.decode_wav()

请记住, decode_wav()需要.wav数据,而不能从.wav数据本身读取

有关tensorflow.audio.decode_wav()的更多信息,请参见此处的文档:https://www.tensorflow.org/api_docs/python/tf/audio/decode_wav

查看此答案以获取更多信息:From audio to tensor, back to audio in tensorflow