Windows10+Python下的音频处理库librosa打开文件是显示NoBackendError的解决

在Windows10上使用anaconda和TensorFlow进行音频处理时,遇到librosa库加载音频报NoBackendError。通过检查源码发现可能原因:1) 系统未找到ffmpeg;2) TensorFlow环境中缺少FFmpeg支持。尝试将FFmpeg添加到环境变量并修改源码无效。最后,通过在TensorFlow环境中安装额外的音频支持包解决了问题。
部署运行你感兴趣的模型镜像

问题背景:

    在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

 最终问题解决,假设成立!

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值