我使用了以下代码 https://github.com/davidpraise45/Audio-Signal-Processing
要使它在包含大约100个wav文件的整个文件夹上运行,但无法获取输出,就无法理解问题所在。
def noise_reduction(dirName):
types = ('*.wav', '*.aif', '*.aiff', '*.mp3', '*.au', '*.ogg')
wav_file_list = []
for files in types:
wav_file_list.extend(glob.glob(os.path.join(dirName, files)))
wav_file_list = sorted(wav_file_list)
wav_file_list2 = []
for i, wavFile in enumerate(wav_file_list):
#samples = get_samples(wavFile,)
(Frequency, samples)=read(wavFile)
FourierTransformation = sp.fft(samples) # Calculating the fourier transformation of the signal
scale = sp.linspace(0, Frequency, len(samples))
b,a = signal.butter(5, 9800/(Frequency/2), btype='highpass') # ButterWorth filter 4350
filteredSignal = signal.lfilter(b,a,samples)
c,d = signal.butter(5, 200/(Frequency/4), btype='lowpass') # ButterWorth low-filter
newFilteredSignal = signal.lfilter(c,d,filteredSignal) # Applying the filter to the signal
write(New,wavFile, Frequency, newFilteredSignal)
noise_reduction("C:\\Users\\adity\\Desktop\\capstone\\hindi_dia_2\\sad\\sad_1.wav")
答案 0 :(得分:0)
scipy.io.wavfile.read
仅支持WAV格式。它无法读取aif
,aiff
,mp3
,au
或ogg
文件。
scipy.io.wavfile.write
函数有四个参数,只需要三个即可。 New,wavFile
最有可能是os.path.join(os.path.dirname(wavFile)
,"New"+os.path.basename(wavFile))
。这将在原始目录的同一目录中创建一个前缀为New
的文件。如果要在当前目录中创建它们,请使用"New"+os.path.basename(wavFile)
。
您正在向函数传递文件名而不是目录名:
noise_reduction("C:\\Users\\adity\\Desktop\\capstone\\hindi_dia_2\\sad\\sad_1.wav")
应该是:
noise_reduction("C:\\Users\\adity\\Desktop\\capstone\\hindi_dia_2\\sad")
这将导致glob
模式最终变为:C:\\Users\\adity\\Desktop\\capstone\\hindi_dia_2\\sad\\sad_1.wav\\*.wav
。除非sad_1.wav
是目录,并且其中包含以.wav
结尾的文件,否则该模式没有匹配项。