|
|
import os, fnmatch |
|
|
import numpy as np |
|
|
import random |
|
|
import soundfile as sf |
|
|
from scipy.io.wavfile import write |
|
|
|
|
|
import RT60 |
|
|
|
|
|
folder_path = "/cephfs/anton/room-impulse-responses/AIR/RWCP_REVERB_AACHEN/real_rirs_isotropic_noises/" |
|
|
final_path = "/cephfs/anton/room-impulse-responses/AIR/RWCP_REVERB_AACHEN/AACHEN/" |
|
|
tfs =16000 |
|
|
file_label = open("RT60.txt","w") |
|
|
|
|
|
for root, dirnames, filenames in os.walk(folder_path): |
|
|
for filename in filenames: |
|
|
if filename.endswith(".wav"): |
|
|
ACE_Path = os.path.join(root, filename) |
|
|
wave,fs = sf.read(ACE_Path) |
|
|
channel = int(wave.size/len(wave)) |
|
|
|
|
|
if(channel == 1): |
|
|
wave_single = wave |
|
|
max_loc = np.where(wave_single == np.amax(wave_single)) |
|
|
min_loc = np.where(wave_single == np.amin(wave_single)) |
|
|
start = min(max_loc[0][0],min_loc[0][0]) |
|
|
wave_single =wave_single[start:len(wave_single)] |
|
|
T60_val = RT60.t60_impulse(wave_single,tfs) |
|
|
|
|
|
if(T60_val<1): |
|
|
file_label.write(str(T60_val)+"\n") |
|
|
save_path = final_path+ filename |
|
|
write(save_path,tfs,wave_single.astype(np.float32)) |
|
|
else: |
|
|
for n in range(channel): |
|
|
wave_single = wave[:,n] |
|
|
max_loc = np.where(wave_single == np.amax(wave_single)) |
|
|
min_loc = np.where(wave_single == np.amin(wave_single)) |
|
|
start = min(max_loc[0][0],min_loc[0][0]) |
|
|
wave_single =wave_single[start:len(wave_single)] |
|
|
T60_val = RT60.t60_impulse(wave_single,tfs) |
|
|
|
|
|
if(T60_val<1): |
|
|
file_label.write(str(T60_val)+"\n") |
|
|
save_path = final_path+filename+str(n)+".wav" |
|
|
write(save_path,tfs,wave_single.astype(np.float32)) |
|
|
|