mobassir94 / comprehensive-bangla-tts

Aiming to achieve ultimate Multilingual TTS pipeline with main focus on releasing COQUI🐸TTS(Text-to-Speech) based high performing neural voice cloning systems for Bangla for the first time, supporting different SOTA models for Bangla and also Multilingual (Arabic+Bengali) code mixed TTS pipeline.
MIT License
35 stars 7 forks source link

Character not found in vocabulary , is it normal ? #6

Open desis123 opened 1 year ago

desis123 commented 1 year ago

First of all thanks for getting a prompt reply for my previous question . I am sorry for disturbing you over and over . As I am pretty new to machine learning along with TTS . While I am running your training script at the beginning I am getting this following message

0%|▏                                       | 27/6126 [00:00<00:23, 264.87it/s]
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'স' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ক' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'া' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ল' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ড়' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ে' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ন' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ট' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'য়' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ি' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ু' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'র' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ও' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character '্' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'শ' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'প' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'ত' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'য' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'আ' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character 'গ' not found in the vocabulary. Discarding it.
সকাল সাড়ে নটায় লিলুয়া রেল ওয়ার্কশপে পরিত্যক্ত পাটের স্তুপে আগুন লাগে।
 [!] Character '।' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'খ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'এ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ব' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'অ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ং' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'দ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ম' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ণ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ফ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ঁ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'হ' not found in the vocabulary. Discarding it.
সেখানকার একটা বড় অংশ দিনের পর দিন মরণফাঁদ হয়ে রয়েছে।
 [!] Character 'ছ' not found in the vocabulary. Discarding it.
ভর্তির নূন্যতম শিক্ষাগত যোগ্যতা ধরা হয়েছে মাধ্যমিক পাশ।
 [!] Character 'ভ' not found in the vocabulary. Discarding it.
ভর্তির নূন্যতম শিক্ষাগত যোগ্যতা ধরা হয়েছে মাধ্যমিক পাশ।
 [!] Character 'ূ' not found in the vocabulary. Discarding it.
ভর্তির নূন্যতম শিক্ষাগত যোগ্যতা ধরা হয়েছে মাধ্যমিক পাশ।
 [!] Character 'ষ' not found in the vocabulary. Discarding it.
ভর্তির নূন্যতম শিক্ষাগত যোগ্যতা ধরা হয়েছে মাধ্যমিক পাশ।
 [!] Character 'ো' not found in the vocabulary. Discarding it.
ভর্তির নূন্যতম শিক্ষাগত যোগ্যতা ধরা হয়েছে মাধ্যমিক পাশ।
 [!] Character 'ধ' not found in the vocabulary. Discarding it.
পার্বতীদুগগা ভিড় আর ঠেলাঠেলির আপ্যায়নে দরদরিয়ে ঘামছেন প্যাণ্ডেলে।
 [!] Character 'ী' not found in the vocabulary. Discarding it.
পার্বতীদুগগা ভিড় আর ঠেলাঠেলির আপ্যায়নে দরদরিয়ে ঘামছেন প্যাণ্ডেলে।
 [!] Character 'ঠ' not found in the vocabulary. Discarding it.
পার্বতীদুগগা ভিড় আর ঠেলাঠেলির আপ্যায়নে দরদরিয়ে ঘামছেন প্যাণ্ডেলে।
 [!] Character 'ঘ' not found in the vocabulary. Discarding it.
পার্বতীদুগগা ভিড় আর ঠেলাঠেলির আপ্যায়নে দরদরিয়ে ঘামছেন প্যাণ্ডেলে।
 [!] Character 'ড' not found in the vocabulary. Discarding it.
বিদ্যুত বিভ্রাটে অতিষ্ঠ বাসিন্দারা বিদ্যুত পর্ষদের বাজারসাউ কার্যালয় ভাঙ্গচুর করল।
 [!] Character 'জ' not found in the vocabulary. Discarding it.
বিদ্যুত বিভ্রাটে অতিষ্ঠ বাসিন্দারা বিদ্যুত পর্ষদের বাজারসাউ কার্যালয় ভাঙ্গচুর করল।
 [!] Character 'উ' not found in the vocabulary. Discarding it.
বিদ্যুত বিভ্রাটে অতিষ্ঠ বাসিন্দারা বিদ্যুত পর্ষদের বাজারসাউ কার্যালয় ভাঙ্গচুর করল।
 [!] Character 'ঙ' not found in the vocabulary. Discarding it.
বিদ্যুত বিভ্রাটে অতিষ্ঠ বাসিন্দারা বিদ্যুত পর্ষদের বাজারসাউ কার্যালয় ভাঙ্গচুর করল।
 [!] Character 'চ' not found in the vocabulary. Discarding it.
তার পাশ দিয়েই বেরিয়ে আসছিল রুক্ষ উলুঝূলো চেহারার মানুষের দল।
 [!] Character 'ই' not found in the vocabulary. Discarding it.
তার পাশ দিয়েই বেরিয়ে আসছিল রুক্ষ উলুঝূলো চেহারার মানুষের দল।
 [!] Character 'ঝ' not found in the vocabulary. Discarding it.
পাশাপাশি উৎপাদকেরা যে পরিমাণ কর মিটিয়ে থাকেন সেটাও ওই সূচকের অন্তর্ভুক্ত।
 [!] Character 'ৎ' not found in the vocabulary. Discarding it.
পাশাপাশি উৎপাদকেরা যে পরিমাণ কর মিটিয়ে থাকেন সেটাও ওই সূচকের অন্তর্ভুক্ত।
 [!] Character 'থ' not found in the vocabulary. Discarding it.
এশিয়া প্রশান্ত মহাসাগরীয় অঞ্চলে জৈবপ্রযুক্তি ক্ষেত্রে পাঁচটি অগ্রণী দেশের অন্যতম হল ভারত।
 [!] Character 'ঞ' not found in the vocabulary. Discarding it.
এশিয়া প্রশান্ত মহাসাগরীয় অঞ্চলে জৈবপ্রযুক্তি ক্ষেত্রে পাঁচটি অগ্রণী দেশের অন্যতম হল ভারত।
 [!] Character 'ৈ' not found in the vocabulary. Discarding it.
শাস্ত্রীজি তাঁর গৃহদেবতা শিবলিঙ্গকে বহুকালের বাসঘর থেকে উৎখাত করে।
 [!] Character 'ৃ' not found in the vocabulary. Discarding it.
সেই নৌকা থেকে প্রবাহিত জল ও পারিপার্শ্বিক দৃশ্যাবলি দেখছেন শিল্পী।
 [!] Character 'ৌ' not found in the vocabulary. Discarding it.
তাই কমিশনে আগে যে কথাগুলি আমি বলেছিলাম সেটা ওই রাগেরই বহিঃপ্রকাশ।
 [!] Character 'ঃ' not found in the vocabulary. Discarding it.
  2%|▊                                      | 129/6126 [00:00<00:18, 324.72it/s]
ওরাই বলল বিশাল উঁচু উঁচু ঢেউ আসছে বললেন প্রৌঢ়।
 [!] Character 'ঢ' not found in the vocabulary. Discarding it.
ওরাই বলল বিশাল উঁচু উঁচু ঢেউ আসছে বললেন প্রৌঢ়।
 [!] Character 'ঢ়' not found in the vocabulary. Discarding it.
  5%|█▉                                     | 303/6126 [00:00<00:17, 338.05it/s]
পারস্পরিক আলোচনার মাধ্যমে আমরা এই ঐকমত্য গড়ে তুলছি।
 [!] Character 'ঐ' not found in the vocabulary. Discarding it.
অ্যালবামের সবচেয়ে ক্ষুদে শিল্পী ঋষভএর কন্ঠ মাধুর্য প্রশংসনীয়।
 [!] Character 'ঋ' not found in the vocabulary. Discarding it.
  7%|██▊                                    | 442/6126 [00:01<00:16, 342.15it/s]
কাল শিখার ঔজ্জ্বল্যে লিয়েণ্ডার পেজের বদলা নেওয়ার ম্যাচও অনেকটা ম্লান হয়ে যায়।
 [!] Character 'ঔ' not found in the vocabulary. Discarding it.
 10%|███▉                                   | 619/6126 [00:01<00:15, 345.29it/s]
না কি কেবলই শোপিস হয়ে থাকবে এই ঈর্ষণীয় স্থাপত্য।
 [!] Character 'ঈ' not found in the vocabulary. Discarding it.
 22%|████████▍                             | 1365/6126 [00:04<00:13, 340.87it/s]
উৎপাদনের হার ঊর্ধ্বমুখী হওয়ায় কর্তৃপক্ষ আধুনিকীকরণের কাজে জোর দিয়েছেন।
 [!] Character 'ঊ' not found in the vocabulary. Discarding it.
100%|██████████████████████████████████████| 6126/6126 [00:18<00:00, 336.27it/s]

 > TRAINING (2023-10-01 21:44:03) 

> DataLoader initialization
| > Tokenizer:
    | > add_blank: True
    | > use_eos_bos: False
    | > use_phonemes: True
    | > phonemizer:
        | > phoneme language: bn
        | > phoneme backend: bn_phonemizer
    | > 62 not found characters:
    | > স
    | > ক
    | > া
    | > ল
    | > ড়
    | > ে
    | > ন
    | > ট
    | > য়
    | > ি
    | > ু
    | > র
    | > ও
    | > ্
    | > শ
    | > প
    | > ত
    | > য
    | > আ
    | > গ
    | > ।
    | > খ
    | > এ
    | > ব
    | > অ
    | > ং
    | > দ
    | > ম
    | > ণ
    | > ফ
    | > ঁ
    | > হ
    | > ছ
    | > ভ
    | > ূ
    | > ষ
    | > ো
    | > ধ
    | > ী
    | > ঠ
    | > ঘ
    | > ড
    | > জ
    | > উ
    | > ঙ
    | > চ
    | > ই
    | > ঝ
    | > ৎ
    | > থ
    | > ঞ
    | > ৈ
    | > ৃ
    | > ৌ
    | > ঃ
    | > ঢ
    | > ঢ়
    | > ঐ
    | > ঋ
    | > ঔ
    | > ঈ
    | > ঊ
| > Number of instances : 6126
 | > Preprocessing samples
 | > Max text length: 114
 | > Min text length: 16
 | > Avg text length: 64.72233104799217
 | 
 | > Max audio length: 276757.0
 | > Min audio length: 49474.0
 | > Avg audio length: 129107.80362389814
 | > Num. instances discarded samples: 0
 | > Batch group size: 0.

is it normal ?, I am not clear why characters not found is happening ?

second question after that script is running and currently on 256 epoch and each epoch is taking around 2 mins . I am running with 3090TI gpu , is there anyway to improve this timing ?

mobassir94 commented 1 year ago

you probably have done something wrong,if you check here : https://www.kaggle.com/datasets/mobassir/comprehensive-bangla-tts you will see my trained log saved as .txt file and if you check my trainig log you won't see characters getting discarded, i have used this script to train vits with phoneme : https://github.com/mobassir94/comprehensive-bangla-tts/blob/main/bn_vits_tts/Bangla_phoneme_ViTS_trainer.ipynb if you are using exactly my dataset and my training script mentioned above then you shouldn't get character discarding warning,,make sure you follow the steps exactly like i did,,, i don't know any way of reducing training time.

desis123 commented 1 year ago

Yes I have used exactly your dataset downloaded from kaggle .. Because I like to do it on your dataset first. Yes I might miss something. Let me try it from the beginning once again and yes I am using https://github.com/mobassir94/comprehensive-bangla-tts/blob/main/bn_vits_tts/Bangla_phoneme_ViTS_trainer.ipynb . Just changed the location parameter to run it . Still I might miss somewhere let me try it from the beginning once again . Thanks again for continuous help and support .

mobassir94 commented 1 year ago

Make sure this code prints absolute path of espeak and espeak-ng : from shutil import which print(which('espeak')) print(which('espeak-ng'))

At least you should see path of espeak-ng Otherwise install espeak-ng by following Their documentation, then try to re run the code

desis123 commented 1 year ago

Yes espeak-ng having absolute path , and after rerun the code having the same issue . But as I can see #phonemizer="espeak-ng",# multi_phonemizer espeak-ng is commented out here .. if that is the case is there any other uses of espeak-ng in other module ?

and aslo characters_config is commented out .. do you think that could cause this error ?

mobassir94 commented 1 year ago

phonemizer="espeak-ng", is commented out because iirc by default phonemizer parameter selects espeak for bangla. you can uncomment and see if that was the case.

characters_config is commented out because we only need it while training without phoneme. the code you see in my training notebook is the exact same code that i used for training the model without facing any issue, you probably have issue with espeak installation or issue related to any package installation or version difference of coqui, this is the tutorial i followed for installing espeak-ng https://github.com/espeak-ng/espeak-ng/blob/master/docs/guide.md#linux

desis123 commented 1 year ago

Thanks for reply .. I have just used following characters_config and sample down to 1000 just to see the quick result and affter just 500 epoch I have started to get some good result . With just 1000 sample epoch is taking like 30 seoncds right now . So it's just a result of 4-5 hours of training .. I am still continuing the training just to see optimal outcome of 1000 samples.

affer 500 epoch https://drive.google.com/file/d/1YsrikAe4vsAYCDO6eb-HQoN9L4ErRHz4/view?usp=drive_link

and character_config I have used

characters_config = CharactersConfig( characters_class="TTS.tts.models.vits.VitsCharacters", pad="", eos="", bos="", blank="", phonemes = None, characters = "\u200cABCDEFGHIJKLMNOPRSTVWXYZabcdefghijklmnopqrstuvwxyzঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻ৼ৽৾ः", punctuations = "|।–!,-. ?" )

so far so good .. let see what came out after 5000 epoch .. I will keep updating here and if I have any question in future. and Lastly thanks for all help.

mobassir94 commented 1 year ago

@desis123 good work. from my past experiments i have witnessed that with or without phoneme the performances are nearly same ,only difference is "you need to train longer for the model to converge if you do not use phoneme,but if you use phoneme then the model converges very fast(400-500 epoch is more than enough for phoneme model training)".

desis123 commented 1 year ago

So you think it will not improve anymore ?? or should I continue at least 1000 ?

mobassir94 commented 1 year ago

@desis123 as you are not using phoneme currently,so you can train more and hopefully performance will be improved,,,i said "if you use phoneme then you don't have to train for many epochs"