I am using librosa to resample the audio data, like below:
import librosa
filename = "/home/.../example.mp3"
audio, samplerate = librosa.load(filename) # samplerate = 48000
target_samplerate = 24000
new_audio = librosa.resample(audio,samplerate ,target_samplerate ,res_type='sinc_fastest')
This code works in my local linux system. However, when I deploy such code to the Azure function, it outputs Error: OSError: sndfile library not found Stack
The reason should be the librosa.resample
function needs two C build Libs: Libsndfile and Libsamplerate. I can install them on my local linux system:
For Libsndfile:
sudo apt-get libsndfile1
sudo apt-get libsndfile-dev
For Libsamplerate: I first download the file from github: https://github.com/libsndfile/libsamplerate Then just follow the install instruction:
./configure
make
make check
make install
But how to install these two Libs on Azure function? Please give me some help! Thank you very much!
By default, Azure Function on Linux runs in a default container. So Installing via apt-get install libsndfile1 & apt-get install libsndfile-dev
in the Function host would have no effect on what's inside the container.
For such scenario, you should consider Creating function using a custom container.
apt-get
installation depending on what image you choose. Just add your required dependency (libsndfile1,libsndfile-dev
in this case).Note: Custom image is not supported in Consumption plan. It would need Premium plan or a Dedicated (App Service) plan.