File size: 3,083 Bytes
3b92d66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import argparse
import numpy as np
from argparse import Namespace
from .advanced_tts import load_all_models, run_tts_paragraph


def hit_tts(textbox, gender, slider_noise_scale, slider_length_sclae, choice_transliteration, choice_number_conversion, choice_split_sentences):
    inputs_to_gradio = {'text' : textbox,
                        'gender' : gender,
                        'noise_scale': slider_noise_scale,
                        'length_scale': slider_length_sclae,
                        'transliteration' : 1 if choice_transliteration else 0,
                        'number_conversion' : 1 if choice_number_conversion else 0,
                        'split_sentences' : 1 if choice_split_sentences else 0
                        }

    args = Namespace(**inputs_to_gradio)
    args.wav = None
    args.lang = lang
    args.gender = gender

    if args.text:
        sr, audio = run_tts_paragraph(args)
        return (sr, audio)

def build_gradio(args):
    global lang
    lang = args.lang
    load_all_models(args)
    textbox = gr.inputs.Textbox(placeholder="Enter Text to run", default="", label="Enter Input Text")
    gender = gr.inputs.Radio(choices = ['Female', 'Male'], default='Female', label='Gender')
    slider_noise_scale = gr.inputs.Slider(minimum=0, maximum=1.0, step=0.001, default=0.667, label='Noise Scale')
    slider_length_sclae = gr.inputs.Slider(minimum=0, maximum=2.0, step=0.1, default=1.0, label='Length Scale')

    choice_transliteration = gr.inputs.Checkbox(default=True, label="Transliteration")
    choice_number_conversion = gr.inputs.Checkbox(default=True, label="Number Conversion")
    choice_split_sentences = gr.inputs.Checkbox(default=True, label="Split Sentences")

    examples = [['இந்தியா எனது நாடு, நான் இந்தியனாக இருப்பதில் பெருமை கொள்கிறேன்.', 'Male', 0.667, 1, 0, 1, 1]]
   
    op = gr.outputs.Audio(type="numpy", label=None)

    inputs_to_gradio = [textbox, gender, slider_noise_scale, slider_length_sclae, choice_transliteration, choice_number_conversion, choice_split_sentences]
    iface = gr.Interface(fn=hit_tts, examples = examples, inputs=inputs_to_gradio, outputs=op, theme='huggingface', title='Vakyansh Tamil TTS', article = 'Note: Transliteration models may not work well in some scenarios which can hamper the TTS quality, to evaluate the model in better sense it is advisable to provide input in the required language and switch off transliteration. Contact @harveenchadha on twitter for any issues.')
    iface.launch(enable_queue=True)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-a", "--acoustic", required=True, type=str)
    parser.add_argument("-v", "--vocoder", required=True, type=str)
    parser.add_argument("-d", "--device", type=str, default="cpu")
    parser.add_argument("-L", "--lang", type=str, required=True)

    global lang

    args = parser.parse_args()    
    lang = args.lang
    
    build_gradio(args)