| import tempfile |
|
|
| import gradio as gr |
|
|
| from neon_tts_plugin_coqui import CoquiTTS |
|
|
|
|
| LANGUAGES = list(CoquiTTS.langs.keys()) |
| default_lang = "en" |
|
|
| title = "ChatGPTBots.net | TTS" |
| description = "A deep learning toolkit for Text-to-Speech, battle-tested in research and production" |
| info = "More info at [TTS](https://chatgptbots.net)" |
|
|
| coquiTTS = CoquiTTS() |
|
|
| def tts(text: str, language: str): |
| print(text, language) |
| |
| with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: |
| coquiTTS.get_tts(text, fp, speaker={"language": language}) |
| return fp.name |
|
|
| with gr.Blocks() as blocks: |
| gr.Markdown("<h1 style='text-align: center; margin-bottom: 1rem'>" |
| + title |
| + "</h1>") |
| gr.Markdown(description) |
| with gr.Row(): |
| with gr.Column(): |
| textbox = gr.Textbox( |
| label="Input", |
| value=CoquiTTS.langs[default_lang]["sentence"], |
| max_lines=3, |
| ) |
| radio = gr.Radio( |
| label="Language", |
| choices=LANGUAGES, |
| value=default_lang |
| ) |
| with gr.Row(): |
| submit = gr.Button("Submit", variant="primary") |
| audio = gr.Audio(label="Output", interactive=False) |
| gr.Markdown(info) |
|
|
| |
| submit.click( |
| tts, |
| [textbox, radio], |
| [audio], |
| ) |
| radio.change(lambda lang: CoquiTTS.langs[lang]["sentence"], radio, textbox) |
|
|
| blocks.launch() |