From 330bdd96925e14697790ecef42232be49f92c07f Mon Sep 17 00:00:00 2001 From: tkyaji Date: Wed, 26 Jun 2024 21:59:55 +0900 Subject: [PATCH] fix: Updated librosa to version 0.10.2 There is a bug in librosa 0.9.1. https://github.com/librosa/librosa/pull/1594 As a result, an error occurs when executing the "Vocals/Accompaniment Separation & Reverberation Removal" function. To address this issue, librosa has been upgraded to version 0.10.2. Additionally, torchcrepe has been upgraded due to its dependency on librosa. --- infer/lib/uvr5_pack/lib_v5/spec_utils.py | 42 +++++++++++++----------- infer/modules/uvr5/vr.py | 24 +++++++------- requirements-amd.txt | 4 +-- requirements-dml.txt | 4 +-- requirements-ipex.txt | 4 +-- requirements-py311.txt | 4 +-- requirements.txt | 4 +-- 7 files changed, 45 insertions(+), 41 deletions(-) diff --git a/infer/lib/uvr5_pack/lib_v5/spec_utils.py b/infer/lib/uvr5_pack/lib_v5/spec_utils.py index a9634fd..3766a94 100644 --- a/infer/lib/uvr5_pack/lib_v5/spec_utils.py +++ b/infer/lib/uvr5_pack/lib_v5/spec_utils.py @@ -43,8 +43,8 @@ def wave_to_spectrogram( wave_left = np.asfortranarray(wave[0]) wave_right = np.asfortranarray(wave[1]) - spec_left = librosa.stft(wave_left, n_fft, hop_length=hop_length) - spec_right = librosa.stft(wave_right, n_fft, hop_length=hop_length) + spec_left = librosa.stft(wave_left, n_fft=n_fft, hop_length=hop_length) + spec_right = librosa.stft(wave_right, n_fft=n_fft, hop_length=hop_length) spec = np.asfortranarray([spec_left, spec_right]) @@ -78,7 +78,7 @@ def wave_to_spectrogram_mt( kwargs={"y": wave_left, "n_fft": n_fft, "hop_length": hop_length}, ) thread.start() - spec_right = librosa.stft(wave_right, n_fft, hop_length=hop_length) + spec_right = librosa.stft(wave_right, n_fft=n_fft, hop_length=hop_length) thread.join() spec = np.asfortranarray([spec_left, spec_right]) @@ -230,26 +230,30 @@ def cache_or_load(mix_path, inst_path, mp): if d == len(mp.param["band"]): # high-end band X_wave[d], _ = librosa.load( - mix_path, bp["sr"], False, dtype=np.float32, res_type=bp["res_type"] + mix_path, + sr=bp["sr"], + mono=False, + dtype=np.float32, + res_type=bp["res_type"] ) y_wave[d], _ = librosa.load( inst_path, - bp["sr"], - False, + sr=bp["sr"], + mono=False, dtype=np.float32, res_type=bp["res_type"], ) else: # lower bands X_wave[d] = librosa.resample( X_wave[d + 1], - mp.param["band"][d + 1]["sr"], - bp["sr"], + orig_sr=mp.param["band"][d + 1]["sr"], + target_sr=bp["sr"], res_type=bp["res_type"], ) y_wave[d] = librosa.resample( y_wave[d + 1], - mp.param["band"][d + 1]["sr"], - bp["sr"], + orig_sr=mp.param["band"][d + 1]["sr"], + target_sr=bp["sr"], res_type=bp["res_type"], ) @@ -401,8 +405,8 @@ def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None): mp.param["mid_side_b2"], mp.param["reverse"], ), - bp["sr"], - sr, + orig_sr=bp["sr"], + target_sr=sr, res_type="sinc_fastest", ) else: # mid @@ -419,7 +423,7 @@ def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None): ), ) # wave = librosa.core.resample(wave2, bp['sr'], sr, res_type="sinc_fastest") - wave = librosa.core.resample(wave2, bp["sr"], sr, res_type="scipy") + wave = librosa.resample(wave2, orig_sr=bp["sr"], target_sr=sr, res_type="scipy") return wave.T @@ -506,8 +510,8 @@ def ensembling(a, specs): def stft(wave, nfft, hl): wave_left = np.asfortranarray(wave[0]) wave_right = np.asfortranarray(wave[1]) - spec_left = librosa.stft(wave_left, nfft, hop_length=hl) - spec_right = librosa.stft(wave_right, nfft, hop_length=hl) + spec_left = librosa.stft(wave_left, n_fft=nfft, hop_length=hl) + spec_right = librosa.stft(wave_right, n_fft=nfft, hop_length=hl) spec = np.asfortranarray([spec_left, spec_right]) return spec @@ -569,8 +573,8 @@ if __name__ == "__main__": if d == len(mp.param["band"]): # high-end band wave[d], _ = librosa.load( args.input[i], - bp["sr"], - False, + sr=bp["sr"], + mono=False, dtype=np.float32, res_type=bp["res_type"], ) @@ -580,8 +584,8 @@ if __name__ == "__main__": else: # lower bands wave[d] = librosa.resample( wave[d + 1], - mp.param["band"][d + 1]["sr"], - bp["sr"], + orig_sr=mp.param["band"][d + 1]["sr"], + target_sr=bp["sr"], res_type=bp["res_type"], ) diff --git a/infer/modules/uvr5/vr.py b/infer/modules/uvr5/vr.py index ed57784..5ec0546 100644 --- a/infer/modules/uvr5/vr.py +++ b/infer/modules/uvr5/vr.py @@ -60,20 +60,20 @@ class AudioPre: ( X_wave[d], _, - ) = librosa.core.load( # 理论上librosa读取可能对某些音频有bug,应该上ffmpeg读取,但是太麻烦了弃坑 + ) = librosa.load( # 理论上librosa读取可能对某些音频有bug,应该上ffmpeg读取,但是太麻烦了弃坑 music_file, - bp["sr"], - False, + sr=bp["sr"], + mono=False, dtype=np.float32, res_type=bp["res_type"], ) if X_wave[d].ndim == 1: X_wave[d] = np.asfortranarray([X_wave[d], X_wave[d]]) else: # lower bands - X_wave[d] = librosa.core.resample( + X_wave[d] = librosa.resample( X_wave[d + 1], - self.mp.param["band"][d + 1]["sr"], - bp["sr"], + orig_sr=self.mp.param["band"][d + 1]["sr"], + target_sr=bp["sr"], res_type=bp["res_type"], ) # Stft of wave source @@ -241,20 +241,20 @@ class AudioPreDeEcho: ( X_wave[d], _, - ) = librosa.core.load( # 理论上librosa读取可能对某些音频有bug,应该上ffmpeg读取,但是太麻烦了弃坑 + ) = librosa.load( # 理论上librosa读取可能对某些音频有bug,应该上ffmpeg读取,但是太麻烦了弃坑 music_file, - bp["sr"], - False, + sr=bp["sr"], + mono=False, dtype=np.float32, res_type=bp["res_type"], ) if X_wave[d].ndim == 1: X_wave[d] = np.asfortranarray([X_wave[d], X_wave[d]]) else: # lower bands - X_wave[d] = librosa.core.resample( + X_wave[d] = librosa.resample( X_wave[d + 1], - self.mp.param["band"][d + 1]["sr"], - bp["sr"], + orig_sr=self.mp.param["band"][d + 1]["sr"], + target_sr=bp["sr"], res_type=bp["res_type"], ) # Stft of wave source diff --git a/requirements-amd.txt b/requirements-amd.txt index d0976a7..ee8fa37 100644 --- a/requirements-amd.txt +++ b/requirements-amd.txt @@ -3,7 +3,7 @@ joblib>=1.1.0 numba==0.56.4 numpy==1.23.5 scipy -librosa==0.9.1 +librosa==0.10.2 llvmlite==0.39.0 fairseq==0.12.2 faiss-cpu==1.7.3 @@ -41,7 +41,7 @@ pyworld==0.3.2 httpx onnxruntime onnxruntime-gpu -torchcrepe==0.0.20 +torchcrepe==0.0.23 fastapi==0.88 ffmpy==0.3.1 python-dotenv>=1.0.0 diff --git a/requirements-dml.txt b/requirements-dml.txt index b4690ae..6987607 100644 --- a/requirements-dml.txt +++ b/requirements-dml.txt @@ -2,7 +2,7 @@ joblib>=1.1.0 numba==0.56.4 numpy==1.23.5 scipy -librosa==0.9.1 +librosa==0.10.2 llvmlite==0.39.0 fairseq==0.12.2 faiss-cpu==1.7.3 @@ -39,7 +39,7 @@ colorama>=0.4.5 pyworld==0.3.2 httpx onnxruntime-directml -torchcrepe==0.0.20 +torchcrepe==0.0.23 fastapi==0.88 ffmpy==0.3.1 python-dotenv>=1.0.0 diff --git a/requirements-ipex.txt b/requirements-ipex.txt index 19ff424..6f72aee 100644 --- a/requirements-ipex.txt +++ b/requirements-ipex.txt @@ -7,7 +7,7 @@ joblib>=1.1.0 numba==0.56.4 numpy==1.23.5 scipy -librosa==0.9.1 +librosa==0.10.2 llvmlite==0.39.0 fairseq==0.12.2 faiss-cpu==1.7.3 @@ -45,7 +45,7 @@ pyworld==0.3.2 httpx onnxruntime; sys_platform == 'darwin' onnxruntime-gpu; sys_platform != 'darwin' -torchcrepe==0.0.20 +torchcrepe==0.0.23 fastapi==0.88 ffmpy==0.3.1 python-dotenv>=1.0.0 diff --git a/requirements-py311.txt b/requirements-py311.txt index 99c6a44..6a51685 100644 --- a/requirements-py311.txt +++ b/requirements-py311.txt @@ -2,7 +2,7 @@ joblib>=1.1.0 numba numpy scipy -librosa==0.9.1 +librosa==0.10.2 llvmlite fairseq @ git+https://github.com/One-sixth/fairseq.git faiss-cpu @@ -40,7 +40,7 @@ pyworld==0.3.2 httpx onnxruntime; sys_platform == 'darwin' onnxruntime-gpu; sys_platform != 'darwin' -torchcrepe==0.0.20 +torchcrepe==0.0.23 fastapi==0.88 torchfcpe ffmpy==0.3.1 diff --git a/requirements.txt b/requirements.txt index f3b4b5e..4a9f0a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ joblib>=1.1.0 numba numpy scipy -librosa==0.9.1 +librosa==0.10.2 llvmlite fairseq faiss-cpu @@ -40,7 +40,7 @@ pyworld==0.3.2 httpx onnxruntime; sys_platform == 'darwin' onnxruntime-gpu; sys_platform != 'darwin' -torchcrepe==0.0.20 +torchcrepe==0.0.23 fastapi==0.88 torchfcpe ffmpy==0.3.1