다른 데이터를 가지고 학습하기 위해 고쳐야 할 코드를 정리해보자.
기존 코드는 folder (KsponSpeech) => 타고 들어가 .text 가 있는 파일 경로까지 만든다음, 해당 파일을 열고 audio_path + 탭 + korean transcript + 탭 + 벡터화된 transcripts 로 저장한다. (최종적으로 해당 파일의 경로는 audio_path에, 전사는 위의 규칙에 따라 transcript 에 저장하고 반환하면 된다.) 아마 sentence_filter 에 위의 규칙에 맞게 읽어온 raw_sentence 를 만들어주게 될 거 같은데, 수정이 필요할 듯.
추가적으로 special_filter 함수의 EXCEPT 에 괄호도 추가해주었고, elif ch == '%' 코드는 불필요한 것 같아 삭제해주었다.
또한 수정된 preprocess 코드는 다음과 같다.
def preprocess(dataset_path, mode='phonetic'):
print('preprocess started..')
audio_paths = list()
transcripts = list()
percent_files = {
'087797': '퍼센트',
'215401': '퍼센트',
'284574': '퍼센트',
'397184': '퍼센트',
'501006': '프로',
'502173': '프로',
'542363': '프로',
'581483': '퍼센트'
}
# TS_DO3 > DO3 > J13 > S000154 > wav
for folder in os.listdir(dataset_path): # TS_DO3까지
#folder = J13 ..
path = os.path.join(dataset_path, folder) # TSDO3 J13
for idx, subfolder in enumerate(os.listdir(path)):
path = os.path.join(dataset_path, folder, subfolder) # phone TSDO3 J13 S000154
for jdx, file in enumerate(os.listdir(path)):
if file.endswith('.txt'):
with open(os.path.join(path, file), "r", encoding = 'UTF-8') as f:
raw_sentence = f.read()
new_sentence = sentence_filter(raw_sentence, mode = mode)
audio_paths.append(os.path.join(folder, subfolder, file))
transcripts.append(new_sentence)
else: continue
return audio_paths, transcripts
전체 글자의 개수를 지정해 잘라서 단어 사전을 저장하는 부분을 수정하자. 전체 단어 개수를 몇 개로 설정할 지를 너무 적게 등장한 단어들을 제외하고 설정하자!