python - 为 TensorFlow 导入 librosa 时出错:找不到 sndfile 库
问题描述
我正在尝试将 TensorFlow Lite 用于使用 Jupyter 笔记本的语音识别项目,但是当我尝试执行“导入 librosa”时(使用此处找到的命令:https ://github.com/ShawnHymel/tflite-speech-recognition/blob /master/01-speech-commands-mfcc-extraction.ipynb)我不断收到此错误:
OSError: sndfile library not found
我已经寻找了两天的解决方案,尝试了我在网上找到的许多不同的东西,但我似乎无法让它工作。
我正在使用 CentOS 8,并且 tensorflow 在 docker 上运行:
docker pull tensorflow/tensorflow:latest-py3-jupyter
docker run -it --rm -v /home/server/Desktop/TensorFlow -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter
我的 requirements.txt 是空的,至少在我执行pip freeze > requirements.txt时是这样。
pip -V 或 --v 返回这个
pip 20.3.2 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
尝试安装 pysndfile 给了我这个
ERROR: Command errored out with exit status 1: /usr/bin/python3 /usr/local/lib/python3.6/dist-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-w_gdqebo/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'numpy>=1.13.0' 'cython>=0.25.0' wheel Check the logs for full command output.
我尝试了不同的命令来修复此错误并安装 sndfile,但它们都给出了错误或只是说它已经安装。
我确实安装了 librosa,但尝试导入它给了我这个完整的错误:
OSError Traceback (most recent call last)
<ipython-input-10-989066361697> in <module>
----> 1 import librosa
/usr/local/lib/python3.6/dist-packages/librosa/__init__.py in <module>
209 # And all the librosa sub-modules
210 from ._cache import cache
--> 211 from . import core
212 from . import beat
213 from . import decompose
/usr/local/lib/python3.6/dist-packages/librosa/core/__init__.py in <module>
4
5 from .convert import * # pylint: disable=wildcard-import
----> 6 from .audio import * # pylint: disable=wildcard-import
7 from .spectrum import * # pylint: disable=wildcard-import
8 from .pitch import * # pylint: disable=wildcard-import
/usr/local/lib/python3.6/dist-packages/librosa/core/audio.py in <module>
6 import warnings
7
----> 8 import soundfile as sf
9 import audioread
10 import numpy as np
/usr/local/lib/python3.6/dist-packages/soundfile.py in <module>
140 _libname = _find_library('sndfile')
141 if _libname is None:
--> 142 raise OSError('sndfile library not found')
143 _snd = _ffi.dlopen(_libname)
144 except OSError:
OSError: sndfile library not found
有人对如何排序有想法吗?
解决方案
为您的操作系统安装 sndfile。在 CentOS 上应该是yum install libsndfile
.
推荐阅读
- javascript - redux-form 如何显示异步验证成功
- sql - 将日期 yyyy-mm-dd 转换为 mmm-yy SQL Server 2016
- batch-file - 将最后一个下划线字符之后的所有内容批量替换到文件扩展名的开头
- python - 服务器响应后,如何循环遍历类中的所有函数?
- java - 从文件中按 X 求平均值的方法。?
- c# - 逗号正在破坏分组
- android - 不希望 alertDailog Edittext 接受空值
- python - 对低密度差异的多维数据进行聚类的最佳聚类算法是什么?
- azure - 我得到了未定义的存储帐户“Storage”。在本地运行 Azure Function docker 时出错
- java - 如何使用 Postman 在 Spring Boot 中的请求参数中传递时间戳、日期