簡體   English   中英

python中多個wav文件的降噪

[英]noise reduction on multiple wav file in python

我已經使用了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")

scipy.io.wavfile.read僅支持WAV格式。 它無法讀取aifaiffmp3auogg文件。

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結尾的文件,否則該模式沒有匹配sad_1.wav

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM