File size: 3,070 Bytes
1ddca60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env bash

# Thiết lập GPU sử dụng
export CUDA_VISIBLE_DEVICES=0 # 0 nếu như bạn có GPU của nvidia :v

log() {
    echo "$@"
}

# Tạo thư mục cần thiết, 
DATASET_DIR="data/your_training_dataset"
mkdir -p "$DATASET_DIR"
# Bắt buộc phải có thư mục data/your_dataset chứa các file .wav, file .txt tương ứng, các bạn tự xử lý
mkdir -p data/your_dataset

# Định nghĩa các tham số huấn luyện
EXP_NAME="F5TTS_Base"
DATASET_NAME="your_training_dataset"
BATCH_SIZE=7000
NUM_WOKERS=16
WARMUP_UPDATES=20000
SAVE_UPDATES=10000
LAST_UPDATES=10000
PRETRAIN_CKPT="/mnt/d/ckpts/your_training_dataset/pretrained_model_1200000.pt"

# Tạo các biến stage để quản lý pipeline, bước nào đã chạy rồi thì không cần chạy lại
stage=5
stop_stage=5

# Chuẩn hoá sample_rate, bỏ qua stage này nếu audio của bạn đã ở định dạng 24Khz
if [ $stage -le 0 ] && [ $stop_stage -ge 0 ]; then
    log "Convert sample rate: data/your_dataset ..."
    python convert_sr.py
fi

# Chuẩn bị dữ liệu audio_name và text tương ứng
if [ $stage -le 1 ] && [ $stop_stage -ge 1 ]; then
    log "Preparing metadata at: data/your_dataset ..."
    python prepare_metadata.py
fi

# Bổ sung từ vựng trong bộ dữ liệu của bạn chưa có trong từ vựng của mô hình pretrained
if [ $stage -le 2 ] && [ $stop_stage -ge 2 ]; then
    log "Checking missing token in pretrained vocab ... "
    python check_vocab_pretrained.py
fi

# Mở rộng embedding của mô hình pretrained để hỗ trợ bộ từ vựng mới
if [ $stage -le 3 ] && [ $stop_stage -ge 3 ]; then
    log "Extend embedding pretrained with new vocab ... "
    python extend_embedding_pretrained.py
fi

# Trích xuất đặc trưng
if [ $stage -le 4 ] && [ $stop_stage -ge 4 ]; then
    log "Feature extraction ... "
    python src/f5_tts/train/datasets/prepare_csv_wavs.py "$DATASET_DIR" "$DATASET_DIR" --workers "$NUM_WOKERS"
fi

# Chạy quá trình fine-tuning
if [ $stage -le 5 ] && [ $stop_stage -ge 5 ]; then
    log "Start fine-tuning F5-TTS with your dataset ... "
    python src/f5_tts/train/finetune_cli.py \
        --exp_name "$EXP_NAME" \
        --dataset_name "$DATASET_NAME" \
        --batch_size_per_gpu "$BATCH_SIZE" \
        --num_warmup_updates "$WARMUP_UPDATES" \
        --save_per_updates "$SAVE_UPDATES" \
        --last_per_updates "$LAST_UPDATES" \
        --finetune \
        --log_samples \
        --pretrain "$PRETRAIN_CKPT"
    ### Nếu bạn muốn training với nhiều gpu, sử dụng câu lệnh bên dưới:
    # accelerate launch src/f5_tts/train/finetune_cli.py \
    #     --exp_name "$EXP_NAME" \
    #     --dataset_name "$DATASET_NAME" \
    #     --batch_size_per_gpu "$BATCH_SIZE" \
    #     --num_warmup_updates "$WARMUP_UPDATES" \
    #     --save_per_updates "$SAVE_UPDATES" \
    #     --last_per_updates "$LAST_UPDATES" \
    #     --finetune \
    #     --log_samples \
    #     --pretrain "$PRETRAIN_CKPT"
fi

log "Fine-tuning F5-TTS done."