问题背景:
在windows下配置了anaconda的深度学习的tensorflow环境来跑语音数据,在load数据时发现竟然报错Raise NoBackendError(),简直疯了,what?竟然没有后台是神马情况,只能看源码。
debug进入源码:
with audioread.audio_open(os.path.realpath(path)) as input_file:
这里报错,继续深究,原来它使用的是这个源码:
def audio_open(path):
"""Open an audio file using a library that is available on this
system.
"""
# Standard-library WAV and AIFF readers.
from . import rawread
try:
return rawread.RawAudioFile(path)
except DecodeError:
pass
# Core Audio.
if _ca_available():
from . import macca
try:
return macca.ExtAudioFile(path)
except DecodeError:
pass
# GStreamer.
if _gst_available():
from . import gstdec
try:
return gstdec.GstAudioFile(path)
except DecodeError:
pass
# MAD.
if _mad_available():
from . import maddec
try:
return maddec.MadAudioFile(path)
except DecodeError:
pass
# FFmpeg.
from . import ffdec
try:
return ffdec.FFmpegAudioFile(path)
except DecodeError:
pass
# All backends failed!
raise NoBackendError()
解决方法:
假设1:系统没有找到ffmpeg指令
基于这个假设下,以下是两位在linux下出现这种问题的解决办法,很好理解就是因为调不出命令ffmpeg,所以添加命令的路径来识别。
1.https://blog.youkuaiyun.com/qq_37175369/article/details/81913569
2.https://www.jianshu.com/p/f735f063e6ce
but我重新在windows上下载了最新的FFmpeg后(FFmpeg安装教程链接),并且添加到环境变量中后,也修改了源码中COMMANDS参数后,还是继续报同样的错!
假设2:在anaconda的下的tensorflow环境根本就没用FFmpeg,这样导致无法找到ffdec.py下的指令来调出指令
在我的深度学习环境中用了一行安装指令来解决这个问题(建议添加清华大学镜像为channel):
conda install ffmpeg -c conda-forge
最终问题解决,假设成立!
在Windows10上使用anaconda和TensorFlow进行音频处理时,遇到librosa库加载音频报NoBackendError。通过检查源码发现可能原因:1) 系统未找到ffmpeg;2) TensorFlow环境中缺少FFmpeg支持。尝试将FFmpeg添加到环境变量并修改源码无效。最后,通过在TensorFlow环境中安装额外的音频支持包解决了问题。
942

被折叠的 条评论
为什么被折叠?



