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)