我一直在尝试使用noisereduce pypi 算法来减少音频文件的噪音,但它给了我一个错误:
Traceback (most recent call last):
File "C:/Users/Seif Koretum/Desktop/noise_reduce/main.py", line 22, in <module>
reduced_noise = nr.reduce_noise(y=data, sr=rate)
File "C:\Users\Seif Koretum\Desktop\noise_reduce\venv\lib\site-packages\noisereduce\noisereduce.py", line 594, in reduce_noise
return sg.get_traces()
File "C:\Users\Seif Koretum\Desktop\noise_reduce\venv\lib\site-packages\noisereduce\noisereduce.py", line 232, in get_traces
filtered_chunk = self.filter_chunk(start_frame=0, end_frame=end_frame)
File "C:\Users\Seif Koretum\Desktop\noise_reduce\venv\lib\site-packages\noisereduce\noisereduce.py", line 162, in filter_chunk
padded_chunk = self._read_chunk(i1, i2)
File "C:\Users\Seif Koretum\Desktop\noise_reduce\venv\lib\site-packages\noisereduce\noisereduce.py", line 154, in _read_chunk
chunk = np.zeros((self.n_channels, i2 - i1))
numpy.core._exceptions.MemoryError: Unable to allocate 98.6 GiB for an array with shape (220500, 60002) and data type float64
我的代码基于录制音频文件,然后消除噪音,然后播放此音频:
from scipy.io import wavfile as wav
from scipy.io.wavfile import write
import sounddevice as sd
from playsound import playsound
import noisereduce as nr
fs = 44100 # Sample rate
seconds = 5 # Duration of recording
myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)
sd.wait() # Wait until recording is finished
write('sample2.wav', fs, myrecording)
#SEARCH FOR NOISEREDUCE PYPI
# # load data
rate, data = wav.read("sample2.wav")
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
filename = 'sample2.wav'
playsound(filename)