Suppressing audio with Python

In my previous article, I separated the vocals from a track using librosa. I wasn’t happy about the outcome so I did a little googling and found another audio library from python called noisereduce. In this article, I’ll show you how I solved my problem with a muddy audio which was removed using librosa.

You can find the jupyter notebook here

<span># Read audio </span><span>data</span><span>,</span> <span>samplerate</span> <span>=</span> <span>sf</span><span>.</span><span>read</span><span>(</span><span>'</span><span>Vocals.wav</span><span>'</span><span>)</span>
<span># reduce noise </span><span>y_reduced_noise</span> <span>=</span> <span>nr</span><span>.</span><span>reduce_noise</span><span>(</span><span>y</span><span>=</span><span>data</span><span>,</span> <span>sr</span><span>=</span><span>samplerate</span><span>)</span>
<span># save audio </span><span>sf</span><span>.</span><span>write</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>,</span> <span>y_reduced_noise</span><span>,</span> <span>samplerate</span><span>,</span> <span>subtype</span><span>=</span><span>"</span><span>PCM_24</span><span>"</span><span>)</span>
<span># load and play audio </span><span>data</span><span>,</span> <span>samplerate</span> <span>=</span> <span>librosa</span><span>.</span><span>load</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>)</span>
<span>ipd</span><span>.</span><span>Audio</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>)</span>
<span># Read audio </span><span>data</span><span>,</span> <span>samplerate</span> <span>=</span> <span>sf</span><span>.</span><span>read</span><span>(</span><span>'</span><span>Vocals.wav</span><span>'</span><span>)</span>
<span># reduce noise </span><span>y_reduced_noise</span> <span>=</span> <span>nr</span><span>.</span><span>reduce_noise</span><span>(</span><span>y</span><span>=</span><span>data</span><span>,</span> <span>sr</span><span>=</span><span>samplerate</span><span>)</span>
<span># save audio </span><span>sf</span><span>.</span><span>write</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>,</span> <span>y_reduced_noise</span><span>,</span> <span>samplerate</span><span>,</span> <span>subtype</span><span>=</span><span>"</span><span>PCM_24</span><span>"</span><span>)</span>
<span># load and play audio </span><span>data</span><span>,</span> <span>samplerate</span> <span>=</span> <span>librosa</span><span>.</span><span>load</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>)</span>
<span>ipd</span><span>.</span><span>Audio</span><span>(</span><span>'</span><span>Vocals_reduced.wav</span><span>'</span><span>)</span>
# Read audio data, samplerate = sf.read('Vocals.wav') # reduce noise y_reduced_noise = nr.reduce_noise(y=data, sr=samplerate) # save audio sf.write('Vocals_reduced.wav', y_reduced_noise, samplerate, subtype="PCM_24") # load and play audio data, samplerate = librosa.load('Vocals_reduced.wav') ipd.Audio('Vocals_reduced.wav')

Enter fullscreen mode Exit fullscreen mode

We first read the audio’s y and x axis with a data and samplerate variable with soundfile. Then reduce the noise with the reduce_noise() function of noisereduce which we then pass in the data and samplerate arguments for the function. Next, we write the new audio with soundfile‘s write() function and pass in the reduced noise variable, samplerate to get a .wav output. Finally, we load and play the audio with librosa‘s load() function and IPython‘s Audio() function.

原文链接:Suppressing audio with Python

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
things never change, we change.
世界并没有变,改变的是我们
评论 抢沙发

请登录后发表评论

    暂无评论内容