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的格式有四種:\colon

  1. <idx> :\colon只執行一個batch,即batch <idx>
  2. <begin_idx> - <end_idx> :\colon 執行從<begin_idx><end_idx>的所有batch。e.g. 2-5 (執行batch 2, 3, 4, 5)
  3. <begin_idx> - :\colon 執行從<begin_idx>到最後一個batch
  4. - <end_idx> :\colon 執行從第一個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_idxrr.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)

results matching ""

    No results matching ""