표준어 텍스트를 입력으로 받아 경상도 방언을 출력하는 프로젝트입니다.
- 먼저 T2T Model(KoUL2)이 표준어 텍스트를 경상도 방언 텍스트로 바꿔줍니다.
- 이후 TTS Model(GlowTTS, HifiGan)이 경상도 방언 텍스트를 경상도 방언 스피치로 바꿔줍니다.
pip install -r requirements.txt
st2ds_demo.ipynb 파일을 실행하면 사용자로부터 입력 받은 표준어 텍스트를 경상도 방언 스피치로 바꾸어주는 기능을 사용할 수 있습니다.
cd TTS
filelists.zip 데이터 셋을 만들기 위한 아래의 Raw 데이터들을 다운받아줍니다.
AI HUB 경상도 사투리 데이터
Youtube 경상도 사투리 데이터
- 경상도 어린왕자 오디오 1,2,3편
- https://youtu.be/4rQtdphNhD4?si=eblTnZ9Nq4wxrgFV
- https://youtu.be/SsSmaZgXOtg?si=vbxa0_Ad8MYvW3_H
- https://youtu.be/A9ZmcZ1pAnk?si=khNOw_9npTkA74lY
-
경상도어 능력고사
각 Raw 데이터에 대하여 1 -> 2 순으로 전처리 및 filelists 폴더를 만들어주는 과정을 진행합니다.
- AI HUB 데이터 전처리
AIHUB_data_preprocessing.ipynbmake_filelists.py
- Youtube 데이터 전처리
YoutubeData_preprocessing.ipynbmake_filelists.py
모든 TTS 모델 학습은 Google Colab에서 T4 GPU와 고용량 메모리를 사용하여 진행했습니다. 메모리 이슈로 학습이 안될 경우 배치사이즈 및 데이터 길이를 적절히 조절해주세요. 또한, 마운트 할 구글 드라이브 내에 다음 파일이 존재하는지 꼭 확인해주세요.
/Colab Notebooks/data/filelists.zip
Fine-Tuning Glow-TTS
train_glow-tts.ipynb
Fine-Tuning Hifi-GAN
train_hifi-gan.ipynb
Glow-TTS 모델과 Hifi-GAN 모델을 같은 filelists.zip 데이터로 각각 Fine-Tuning 한 후, 새로 만들어진 모델 폴더 경로를 inference 할 때 사용합니다. 자세한 내용은 아래의 파일에서 확인해주세요.
inference.ipynb
cd T2T
먼저 aihub의 한국어 방언 발화(경상도) 데이터를 다운받습니다. T2T 디렉토리 내에 gyeongsang_dialect_data 디렉토리를 만들어 json 파일과 txt 파일을 해당 디렉토리 내에 저장합니다. 이 때 wav 파일은 저장할 필요 없습니다. 이후 아래 커맨드를 실행하면 gyeongsang_dialect_csv 디렉토리가 생성되며, same_forms.csv 파일과 different_forms.csv 파일이 생성됩니다.
python make_csv.py
모든 T2T 모델 학습은 RTX 3090 1ea 환경에서 진행했습니다. 메모리 이슈로 학습이 안될 경우 적절히 배치사이즈를 조절해주세요.
YOUR_MODEL_PATH에 저장할 폴더를 지정해주세요.
FineTuning KoBART
python train_bart.py \
--pretrained_model_name_or_path gogamza/kobart-base-v2 \
--save_dir $YOUR_MODEL_PATH \
--save_strategy epoch \
--per_device_train_batch_size 128 \
--per_device_eval_batch_size 128 \
--learning_rate 1e-5 \
--num_train_epochs 5 \
--use_wandb \
--entity dannykm \
--wandb_model_name kobart_test \
--project_name dialect \
FineTuning KoUL2 (Recommend)
python train_ul2.py \
--pretrained_model_name_or_path DaehanKim/KoUL2 \
--save_dir $YOUR_MODEL_PATH \
--save_strategy epoch \
--per_device_train_batch_size 32 \
--per_device_eval_batch_size 32 \
--learning_rate 1e-5 \
--num_train_epochs 5 \
--use_wandb \
--entity dannykm \
--wandb_model_name ul2_test \
--project_name dialect \
$YOUR_MODEL_PATH 대신 dannykm/DialectKoUL2을 넣으시면 위 학습 과정 없이도 이미 해당 프로젝트 코드로 학습된 모델을 허깅페이스 허브로 부터 불러올 수 있습니다.
python inference.py --model_name_or_path $YOUR_MODEL_PATH