in scripts/make_dataset.py [0:0]
def room_gen(self, room_dims, RT60):
mic_x = room_dims[0] // 2 + np.random.uniform(low=-0.15, high=0.15)
mic_y = room_dims[1] // 2 + np.random.uniform(low=-0.15, high=0.15)
mic_pos = [round(mic_x, 2), round(mic_y, 2), 1.5] # x,y,z in meters
speakers_pos = np.zeros(
(self.num_of_speakers, 3)) # (num_speakers,x,y)
speakers_angles = np.zeros((self.num_of_speakers, ))
angel_deg = np.linspace(0, 180, 36) # [0,30,60,90,120,150,180]
for i in range(self.num_of_speakers):
invalid = 0
while not invalid:
angle_index = np.random.randint(low=0, high=len(
angel_deg))
speakers_angles[i] = angel_deg[angle_index]
angle = np.deg2rad(angel_deg[angle_index])
speaker_distance = 1.5 + \
round(np.random.uniform(low=-0.2, high=0.2), 2)
x = mic_x + speaker_distance * np.cos(angle)
y = mic_y + speaker_distance * np.sin(angle)
speakers_pos[i, 0] = round(x, 2)
speakers_pos[i, 1] = round(y, 2)
speakers_pos[i, 2] = 1.5
if self.position_valid(room_dims, speakers_pos[i]):
invalid = 1
else:
logging.error('mic not in the room')
invalid = 0
self.speakers_pos = speakers_pos
self.speakers_angles = speakers_angles
c = 340 # Sound velocity (m/s)
r = [mic_pos] # Receiver position [x y z] (m)
# Room dimensions [x y z] (m)
L = [room_dims[0], room_dims[1], room_dims[2]]
rt = RT60 # Reverberation time (s)
n = 2048 # Number of samples
mtype = 'omnidirectional' # Type of microphone
order = -1 # Reflection order
dim = 3 # Room dimension
orientation = 0 # Microphone orientation (rad)
hp_filter = True # Enable high-pass filter
Systems = np.zeros((self.num_of_speakers, n))
Systems_anechoic = np.zeros((self.num_of_speakers, n))
for i in range(self.num_of_speakers):
s = speakers_pos[i]
h_temp, _, _ = nprirgen.np_generateRir(
L, s, r, soundVelocity=c, fs=self.sr, reverbTime=rt, nSamples=n, micType=mtype, nOrder=order, nDim=dim, isHighPassFilter=hp_filter)
h_temp_anechoic, _, _ = nprirgen.np_generateRir(
L, s, r, soundVelocity=c, fs=self.sr, reverbTime=0, nSamples=n, micType=mtype, nOrder=order, nDim=dim, isHighPassFilter=hp_filter)
Systems[i] = h_temp
Systems_anechoic[i] = h_temp_anechoic
return Systems, Systems_anechoic