4

The objective is to deploy an audio prediction ML model on Heroku, which uses librosa library from python.

The app.py file uses librosa library to extract features from the audio.

When I try to deploy on Heroku, I get an error as shown below.

2020-06-12T03:27:43.099874+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/librosa/core/audio.py", line 10, in <module>
2020-06-12T03:27:43.099875+00:00 app[web.1]:     import soundfile as sf
2020-06-12T03:27:43.099875+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/soundfile.py", line 142, in <module>
2020-06-12T03:27:43.099876+00:00 app[web.1]:     raise OSError('sndfile library not found')
2020-06-12T03:27:43.099876+00:00 app[web.1]: OSError: sndfile library not found
2020-06-12T03:27:43.101008+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-06-12T03:27:43.255623+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [4] [INFO] Shutting down: Master
2020-06-12T03:27:43.255725+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-06-12T03:27:43.333827+00:00 heroku[web.1]: Process exited with status 3
2020-06-12T03:27:43.371190+00:00 heroku[web.1]: State changed from starting to crashed

Here is a snapshot of my buildpacks that I am using to install the dependencies: Build pack list

Below is the list of dependencies mentioned in requirements.txt:

Flask==1.1.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.5
numpy>=1.9.2
scipy>=0.15.1
scikit-learn>=0.18
matplotlib>=1.4.3
pandas>=0.19
librosa==0.7.2
aniso8601==8.0.0
audioread==2.1.5

I have also created an Aptfile to install libsndfile1. I have linked a build-pack on Heroku to install from this Aptfile. Below is the list mentioned in my Aptfile:

libsndfile1
libsndfile-dev
libasound2-dev 
python-dev 
python-numpy 
python-setuptools 

Here is the image of error "Unable to locate package libsndfile1" while deploying on Heroku

How to overcome the "OSError: sndfile library not found" and "Unable to locate package libsndfile1" errors?

I have uploaded all the files to GitHub here for more information.


Update (12/14/2020): I changed my Aptfile and requirements.txt contents, and it worked.

Here are the contents of Aptfile:

libsndfile1
libsndfile-dev
ffmpeg

Here are the contents of Aptfile:

aniso8601==8.0.0
audioread==2.1.8
certifi==2019.11.28
cffi==1.14.0
Click==7.0
decorator==4.4.2
ffmpeg-python==0.2.0
Flask==1.1.1
Flask-RESTful==0.3.8
future==0.18.2
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.11.1
joblib==0.14.1
librosa==0.7.2
llvmlite==0.31.0
MarkupSafe==1.1.1
marshmallow==3.2.2
numba==0.48.0
numpy==1.18.1
pycparser==2.20
pydub==0.23.1
pytz==2019.3
resampy==0.2.2
scikit-learn==0.22.2.post1
scipy==1.4.1
six==1.14.0
SoundFile==0.10.3.post1
Werkzeug==1.0.0
wincertstore==0.2
pandas==1.0.1
pathlib==1.0.1

1 Answers1

2

You need to install sndfile as a package in your operating system. This answer documents how to do that on Heroku.

Jon Nordby
  • 5,494
  • 1
  • 21
  • 50
  • Thanks. The solution by Chris from that link worked for me. Now I am getting a different error called `ModuleNotFoundError: No module named 'numba.decorators'`. Any help for this error please? – Sughosh Kulkarni Jun 15 '20 at 08:04
  • Sure, see https://github.com/librosa/librosa/issues/1160 – Jon Nordby Jun 15 '20 at 11:10
  • Thanks. I used that link to add `numba==0.48` in my `requirements.txt` file. I get the same `OSError: sndfile library not found` Below is the detailed log of the error. `2020-06-15T20:50:33.505234+00:00 app[web.1]: import soundfile as sf 2020-06-15T20:50:33.505234+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/soundfile.py", line 142, in 2020-06-15T20:50:33.505235+00:00 app[web.1]: raise OSError('sndfile library not found') 2020-06-15T20:50:33.505235+00:00 app[web.1]: OSError: sndfile library not found` – Sughosh Kulkarni Jun 15 '20 at 20:53
  • That sounds like you have reverted your fix with the AptFile – Jon Nordby Jun 15 '20 at 21:23
  • Thanks. I changed my apt-file and requirements file. I have updated the question with what helped me. Thanks for your support. I appreciate it. – Sughosh Kulkarni Dec 14 '20 at 15:27