File size: 3,658 Bytes
98630e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import os

from trainer import Trainer, TrainerArgs

from TTS.tts.configs.shared_configs import BaseDatasetConfig, CharactersConfig
from TTS.tts.configs.vits_config import VitsConfig
from TTS.tts.datasets import load_tts_samples
from TTS.tts.models.vits import Vits, VitsAudioConfig
from TTS.tts.utils.text.tokenizer import TTSTokenizer
from TTS.utils.audio import AudioProcessor


if __name__ == "__main__":
    output_path = os.path.dirname(os.path.abspath(__file__))
    dataset_config = BaseDatasetConfig(
        formatter="ljspeech", meta_file_train="metadata.csv", path=os.path.join(output_path, "/home/fatima-w/workpj/texttospeech/yal_asheh1_book")
    )

    audio_config = VitsAudioConfig(
        sample_rate=22050, 
        win_length=1024, 
        hop_length=256, 
        num_mels=80, 
        mel_fmin=0, 
        mel_fmax=None
    )

    character_config = CharactersConfig(
        characters="ىءۀابتثجحخدذرزسشصضطظعغفقلمنهويِپچژکگیآأؤإئًَُّْ'ٔ٪۰۱۲۳۴۵۶۷۸۹ةabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZكأي",
        # characters="ءۀابتثجحخدذرزسشصضطظعغفقلمنهويِپچژکگیآأؤإئًَُّ۰۱۲۳۴۵۶۷۸۹ة",
        punctuations='!(),-.–:;«»?— ̠،؛؟‌<>"',
        phonemes=None,
        pad="<PAD>",
        eos="<EOS>",
        bos="<BOS>",
        blank="<BLNK>",
        characters_class=None,
    )

    config = VitsConfig(
        audio=audio_config,
        run_name="vits_farsi",
        batch_size=20,
        eval_batch_size=10,
        batch_group_size=5,
        num_loader_workers=4,
        num_eval_loader_workers=2,
        run_eval=True,
        test_delay_epochs=-1,
        epochs=1000,
        text_cleaner="basic_cleaners",
        use_phonemes=False,
        phoneme_language="fa",
        phoneme_cache_path=os.path.join(output_path, "phoneme_cache"),
        compute_input_seq_cache=True,
        print_step=25,
        print_eval=True,
        mixed_precision=True,  # Keep mixed precision enabled
        output_path=output_path,
        datasets=[dataset_config],
        cudnn_benchmark=False,
        characters=character_config,
        test_sentences=[
        ["سلطان محمود در زمستانی سخت به طلخک گفت که: با این جامه ی یک لا در این سرما چه می کنی "],
        ["مردی نزد بقالی آمد و گفت پیاز هم ده تا دهان بدان خو شبوی سازم."],
        ["از مال خود پاره ای گوشت بستان و زیره بایی معطّر بساز"],
        ["یک بار هم از جهنم بگویید."],
        ["یکی اسبی به عاریت خواست"]
    ],
    )

   
    # INITIALIZE THE AUDIO PROCESSOR
    ap = AudioProcessor.init_from_config(config)

    # INITIALIZE THE TOKENIZER
    tokenizer, config = TTSTokenizer.init_from_config(config)

    # LOAD DATA SAMPLES
    train_samples, eval_samples = load_tts_samples(
        dataset_config,
        eval_split=True,
        eval_split_max_size=config.eval_split_max_size,
        eval_split_size=config.eval_split_size,
    )

    # INIT MODEL
    model = Vits(config, ap, tokenizer, speaker_manager=None)

    checkpoint_path = os.path.join('/home/fatima-w/workpj/coqui/vits_farsi-April-10-2025_10+51PM-0000000', "best_model.pth")

    # INIT THE TRAINER AND START TRAINING
    trainer = Trainer(
       TrainerArgs(restore_path=checkpoint_path),
        # TrainerArgs(),
        config,
        output_path,
        model=model,
        train_samples=train_samples,
        eval_samples=eval_samples,
    )
    trainer.fit()