failed to hear audio on jupyter with librosa but can with scipy – sampling rate issues?
Question:
I can hear audio in jupyter if loaded with scipy.
However, I can hear untill 192000 sampling rate. If I set to 192001 or above, I cannot hear anything.
from IPython.display import Audio
from scipy.io.wavfile import read
wave_filename = 'mywave.wav'
fs, data = read(wave_filename, mmap=True) # fs - sampling frequency
data = data.reshape(-1, 1)
Audio(data = data[:, 0], rate = 180000)
I try the same with librosa:
from IPython.display import Audio
import librosa
wave_filename = 'mywave.wav'
data, fs = librosa.load(wave_filename) # fs - sampling frequency
Audio(data = data, rate = 120000)
But cannot hear nothing, for any rate value I set.
What can the issue be?
Note – with librosa I can hear a synthetic sound, using a numpy array. But not from original wave.
(p.s. original sampling rate is 250000, I m working with animals vocalisations..)
Answers:
The issue could be related to the maximum sampling rate supported by your audio system. Most audio devices have a maximum sampling rate supported, and anything beyond that will not be played.
In your case, it seems that your audio system can play audio with sampling rates up to 192000, but not higher. This is why you can hear audio using scipy, but not with librosa.
To confirm this, you can try playing the audio file outside of Jupyter using a media player or audio editor that supports high sampling rates.
If you want to play audio with a sampling rate higher than what your audio system supports, you can try resampling the audio to a lower sampling rate using the librosa.resample function, for example:
from IPython.display import Audio
import librosa
wave_filename = 'mywave.wav'
sr_target = 192000 # or any other value supported by your audio system
data, fs = librosa.load(wave_filename, sr=sr_target)
Audio(data=data, rate=sr_target)
This will resample the audio file to the specified target sampling rate before playing it. Note that resampling may result in some loss of quality, so it’s generally best to work with the original sampling rate whenever possible.
I can hear audio in jupyter if loaded with scipy.
However, I can hear untill 192000 sampling rate. If I set to 192001 or above, I cannot hear anything.
from IPython.display import Audio
from scipy.io.wavfile import read
wave_filename = 'mywave.wav'
fs, data = read(wave_filename, mmap=True) # fs - sampling frequency
data = data.reshape(-1, 1)
Audio(data = data[:, 0], rate = 180000)
I try the same with librosa:
from IPython.display import Audio
import librosa
wave_filename = 'mywave.wav'
data, fs = librosa.load(wave_filename) # fs - sampling frequency
Audio(data = data, rate = 120000)
But cannot hear nothing, for any rate value I set.
What can the issue be?
Note – with librosa I can hear a synthetic sound, using a numpy array. But not from original wave.
(p.s. original sampling rate is 250000, I m working with animals vocalisations..)
The issue could be related to the maximum sampling rate supported by your audio system. Most audio devices have a maximum sampling rate supported, and anything beyond that will not be played.
In your case, it seems that your audio system can play audio with sampling rates up to 192000, but not higher. This is why you can hear audio using scipy, but not with librosa.
To confirm this, you can try playing the audio file outside of Jupyter using a media player or audio editor that supports high sampling rates.
If you want to play audio with a sampling rate higher than what your audio system supports, you can try resampling the audio to a lower sampling rate using the librosa.resample function, for example:
from IPython.display import Audio
import librosa
wave_filename = 'mywave.wav'
sr_target = 192000 # or any other value supported by your audio system
data, fs = librosa.load(wave_filename, sr=sr_target)
Audio(data=data, rate=sr_target)
This will resample the audio file to the specified target sampling rate before playing it. Note that resampling may result in some loss of quality, so it’s generally best to work with the original sampling rate whenever possible.