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。
任何帮助都将受到高度赞赏。 谢谢!
答案 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
答案 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