уменьшение шума на нескольких файлах WAV в Python - PullRequest
0 голосов
/ 11 декабря 2018

Я использовал код из 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")

1 Ответ

0 голосов
/ 11 декабря 2018

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.

...