Get Processing File List (begin_idx and end_idx)
176 batch_size = args.batch_size
177 string_batch_range = args.batch_idx
178 input_dir = args.input_dir
179
180 input_nr_dir = os.path.join(input_dir,'nr')
181 if not os.path.isdir(input_nr_dir):
182 os.makedirs(input_nr_dir)
183
184 output_dir= 'result_'+ input_dir
185 if not os.path.isdir(output_dir):
186 os.makedirs(output_dir)
187
188 entireSpeechFileList = sorted(glob.glob(os.path.join(input_dir,'*.wav')))
189 #print('entire speech files in folder {}'.format(input_dir))
190 #print(entireSpeechFileList)
191
192 if re.search('-', string_batch_range):
193 rr = re.match(r'([0-9]*)-([0-9]*)', string_batch_range)
194 if rr.group(1):
195 begin_idx = int(rr.group(1)) - 1
196 else:
197 begin_idx = 0
198 if rr.group(2):
199 end_idx = int(rr.group(2))
200 else:
201 end_idx = int(np.ceil(len(entireSpeechFileList)/batch_size))
202 else:
203 rr = re.match(r'([0-9]*)', string_batch_range)
204 if int(rr.group(1)) != 0:
205 begin_idx = int(rr.group(1))
206 end_idx = int(rr.group(1)) + 1
207 else:
208 begin_idx = 0
209 end_idx = int(np.ceil(len(entireSpeechFileList)/batch_size))
行176-178是把args.batch_size, args.batch_idx, args.input_dir的值取出來,放到比較簡短的變數名稱batch_size, string_batch_range, input_dir裡面,方便後面程式的呼叫。
行180-182是在input_dir資料夾新增一個nr的子資料夾,用來儲存降噪後的音頻檔。
行184-186是在input_dir前面加個result_當成辨識結果的輸出資料夾output_dir。
行188是把input_dir裡面所有副檔名為wav的檔案抓出來,整理成按照檔名排序的列表。
行192-209是if...else...結構,用來把string_batch_range的字串轉換成batch開始的編號begin_idx跟結束編號end_idx。
string_batch_range的格式有四種
<idx>只執行一個batch,即batch<idx><begin_idx> - <end_idx>執行從<begin_idx>到<end_idx>的所有batch。e.g. 2-5 (執行batch 2, 3, 4, 5)<begin_idx> -執行從<begin_idx>到最後一個batch- <end_idx>執行從第一個batch到第<end_idx>個batch。
行192透過字元"-",辨識string_batch_range。如果沒有"-",執行行203-209。有"-"的話,執行行193-201。
行193是在把字元"-"前後的字串分開。
行194判斷"-"前面的字串rr.group(1)是否有值。如果有值,執行195行,把字串rr.group(1)轉換成整數begin_idx,因為python計數起始值為0,所以begin_idx比rr.group(1)少1。如果沒有值,執行197行,直接把begin_idx設定為第一個batch的編號0。
行198是判斷"-"後面的字串rr.group(2)是否有值。如果有值,執行第199行,把字串rr.group(2)轉換成整數end_idx。如果沒有值,執行第201行,把end_idx設定為最後一個batch的編號。
行203抓取string_batch_range字串轉換成整數值rr.group(1)。
行204判斷rr.group(1)是否為0,如果不為0,執行第205-206行,把begin_idx指定為rr.group(1),end_idx指定為rr.group(1)+1。
如果rr.group(1)為0,代表使用者希望執行所有的batch,所以begin_idx為0,end_idx為最後一個batch的編號。(行207-209)