728x90
allocate_egs.py 무한루프 현상
KALDI Recipe 중 voxceleb 을 진행하다가 stage 6 ~ 8 x-vector training 부분에서 무한루프 에러가 발생했다.
이 화면에서 몇시간이 지나고도 멈춰있다면 아래 방식으로 해결이 가능하다.
sid/nnet3/xvector/allocate_egs.py 에서 일부 코드 수정
... (생략) line 178
def get_random_utt(spkr, spk2utt):
this_utts = spk2utt[spkr]
this_num_utts = len(this_utts)
i = random.randint(0, this_num_utts-1)
utt = this_utts[i]
return utt
...(생략) line 255
for n in range(this_num_egs):
if len(spkrs) == 0:
print("Ran out of speakers for archive {0}".format(archive_index + 1))
break
spkr = spkrs.pop()
utt_len = 0
while utt_len < length:
utt = get_random_utt(spkr, spk2utt)
utt_len = utt2len[utt]
offset = get_random_offset(utt_len, length)
this_egs.append( (utt, offset) )
all_egs.append(this_egs)
info_f.close()
이 부분을 아래처럼 변경해 준다.
def get_random_utt(spkr, spk2utt, min_length):
this_utts = spk2utt[spkr]
this_num_utts = len(this_utts)
i = random.randint(0, this_num_utts-1)
utt = this_utts[i]
return utt
for n in range(this_num_egs):
if len(spkrs) == 0:
print("Ran out of speakers for archive {0}".format(archive_index + 1))
break
spkr = spkrs.pop()
utt_len = 0
nutt_spkr = len(spk2utt[spkr])
break_loop = 0
while utt_len < length and break_loop < nutt_spkr:
utt = get_random_utt(spkr, spk2utt, length)
utt_len = utt2len[utt]
break_loop += 1
if break_loop < nutt_spkr:
offset = get_random_offset(utt_len, length)
this_egs.append( (utt, offset) )
all_egs.append(this_egs)
info_f.close()
[출처] https://github.com/kaldi-asr/kaldi/issues/4319
728x90
'Speech AI > 음성 인식' 카테고리의 다른 글
[음성인식] MFCC (0) | 2021.12.27 |
---|---|
[음성인식] x-vector (0) | 2021.12.02 |
[KALDI] VoxCeleb Recipe 따라하기 (0) | 2021.12.01 |
[음성인식] 화자 확인 평가방법 (EER, minDCF) (0) | 2021.11.30 |
[음성인식] 화자분리 (x-vector 클러스터링 기반의 Speaker Diarization) (0) | 2021.11.23 |