Multilingual (Bangla, English) real-time ([almost] in a GPU) speech synthesis library
- Install Anaconda
conda create -n new_virtual_env python==3.6.8
conda activate new_virtual_env
pip install -r requirements.txt
- While running for the first time, keep your internet connection on to download the weights of the speech synthesis models (>500 MB)
- For fast inference, you must install tensorflow-gpu and have a Nvidia GPU (CUDA).
'''
function: generate(text_arr = [""], save_path = None)
arguments:
text_arr (array) : an array of strings
save_path (string, optional) : location where generated wav files will be stored if save_path is not None, if the path is not valid, the wav files will be saved in current directory
returns:
if save_path is None, instead of saving an array of tuples containing geenrated speech signals and the sampling rate will be returned
if save_path is not None, then a list containing the file paths (relative) will be returned
'''
from bangla_tts import generate
# usage 1 (saving to path)
file_names = generate(["আমার সোনার বাংলা আমি তোমাকে ভালোবাসি"], save_path = "static") # will be saved to static folder
print(file_names)
# usage 2 (getting numpy arrays for the signals)
gen_wavs = generate(["আমার সোনার বাংলা আমি তোমাকে ভালোবাসি"]) # will return an array containing the speech and sampling rate
print(gen_wavs[0])
print(f"signal length: {gen_wavs[0][0].shape}")
print(f"samplign rate: {gen_wavs[0][1]}")
Sample 1 (আমার সোনার বাংলা আমি তোমাকে ভালোবাসি)
Sample 2 (আমার নাম জাবির আল নাজি নাবিল)
Sample 3 (I am still not a great speaker)
Sample 4 (This is just a test)
- Synthesize longer sentences
- Phonetic representation for English, Bangla numeric segments
- Added a simple parser which will translate numeric keys to corresponding phonetic representation.
Example: ১৯৯৭ সালের ২১ জানুয়ারী তে আমার জন্ম হয় will be converted to ['ঊনিশশ সাতানব্বই সালের একুশ জানুয়ারী তে আমার জন্ম হয় '] by the parser.
- Added a simple batch mechanism for translating longer sentences. As the attention window was fixed during training, the model previously failed to generate long sentences (n_characters > 200). So, added a simple segmenting scheme to break the sentences into multiple parts, synthesize in batch, and finally merge them into a single audio file.
New examples:
১৯৯৭ সালের ২১ জানুয়ারী তে আমার জন্ম হয়
আমার ফোন নাম্বার ০১৭১৩৩৫৩৪৩, তবে আমাকে সকাল ১০ টার আগে পাবেন না
I have designed a test dataset to compare new bangla TTS models with the benchmark model (bangla-tts).
Bakta dataset (multi-lingual, bangla + english)
- PyPI
- More training
- Light model
- Publish the restful API
- Publish the flask app