''' Example file to test tts_infer after installing it. Refer to section 1.1 in README.md for steps of installation. ''' from tts_infer.tts import TextToMel, MelToWav from tts_infer.transliterate import XlitEngine from tts_infer.num_to_word_on_sent import normalize_nums import re import numpy as np from scipy.io.wavfile import write from mosestokenizer import * from indicnlp.tokenize import sentence_tokenize INDIC = ["as", "bn", "gu", "hi", "kn", "ml", "mr", "or", "pa", "ta", "te"] def split_sentences(paragraph, language): if language == "en": with MosesSentenceSplitter(language) as splitter: return splitter([paragraph]) elif language in INDIC: return sentence_tokenize.sentence_split(paragraph, lang=language) device='cpu' text_to_mel = TextToMel(glow_model_dir='/path/to/glow_ckp', device=device) mel_to_wav = MelToWav(hifi_model_dir='/path/to/hifi_ckp', device=device) lang='hi' # transliteration from En to Hi engine = XlitEngine(lang) # loading translit model globally def translit(text, lang): reg = re.compile(r'[a-zA-Z]') words = [engine.translit_word(word, topk=1)[lang][0] if reg.match(word) else word for word in text.split()] updated_sent = ' '.join(words) return updated_sent def run_tts(text, lang): text = text.replace('।', '.') # only for hindi models text_num_to_word = normalize_nums(text, lang) # converting numbers to words in lang text_num_to_word_and_transliterated = translit(text_num_to_word, lang) # transliterating english words to lang final_text = ' ' + text_num_to_word_and_transliterated mel = text_to_mel.generate_mel(final_text) audio, sr = mel_to_wav.generate_wav(mel) write(filename='temp.wav', rate=sr, data=audio) # for saving wav file, if needed return (sr, audio) def run_tts_paragraph(text, lang): audio_list = [] split_sentences_list = split_sentences(text, language='hi') for sent in split_sentences_list: sr, audio = run_tts(sent, lang) audio_list.append(audio) concatenated_audio = np.concatenate([i for i in audio_list]) write(filename='temp_long.wav', rate=sr, data=concatenated_audio) return (sr, concatenated_audio) if __name__ == "__main__": _, audio = run_tts('mera naam neeraj hai', 'hi') para = ''' भारत मेरा देश है और मुझे भारतीय होने पर गर्व है। ये विश्व का सातवाँ सबसे बड़ा और विश्व में दूसरा सबसे अधिक जनसंख्या वाला देश है। इसे भारत, हिन्दुस्तान और आर्यव्रत के नाम से भी जाना जाता है। ये एक प्रायद्वीप है जो पूरब में बंगाल की खाड़ी, पश्चिम में अरेबियन सागर और दक्षिण में भारतीय महासागर जैसे तीन महासगरों से घिरा हुआ है। भारत का राष्ट्रीय पशु चीता, राष्ट्रीय पक्षी मोर, राष्ट्रीय फूल कमल, और राष्ट्रीय फल आम है। भारत मेरा देश है और मुझे भारतीय होने पर गर्व है। ये विश्व का सातवाँ सबसे बड़ा और विश्व में दूसरा सबसे अधिक जनसंख्या वाला देश है। इसे भारत, हिन्दुस्तान और आर्यव्रत के नाम से भी जाना जाता है। ये एक प्रायद्वीप है जो पूरब में बंगाल की खाड़ी, पश्चिम में अरेबियन सागर और दक्षिण में भारतीय महासागर जैसे तीन महासगरों से घिरा हुआ है। भारत का राष्ट्रीय पशु चीता, राष्ट्रीय पक्षी मोर, राष्ट्रीय फूल कमल, और राष्ट्रीय फल आम है। भारत मेरा देश है और मुझे भारतीय होने पर गर्व है। ये विश्व का सातवाँ सबसे बड़ा और विश्व में दूसरा सबसे अधिक जनसंख्या वाला देश है। इसे भारत, हिन्दुस्तान और आर्यव्रत के नाम से भी जाना जाता है। ये एक प्रायद्वीप है जो पूरब में बंगाल की खाड़ी, पश्चिम में अरेबियन सागर और दक्षिण में भारतीय महासागर जैसे तीन महासगरों से घिरा हुआ है। भारत का राष्ट्रीय पशु चीता, राष्ट्रीय पक्षी मोर, राष्ट्रीय फूल कमल, और राष्ट्रीय फल आम है। ''' print('Num chars in paragraph: ', len(para)) _, audio_long = run_tts_paragraph(para, 'hi')