|
import tempfile |
|
|
|
import gradio as gr |
|
|
|
from neon_tts_plugin_coqui import CoquiTTS |
|
|
|
|
|
language_phrases = { |
|
"en": "Hello, how are you?", |
|
"pl": "Witam, jak się masz?", |
|
"uk": "Привіт, як твої справи?", |
|
} |
|
|
|
LANGUAGES = list(language_phrases.keys()) |
|
|
|
|
|
|
|
title = "🐸💬 - NeonAI Coqui AI TTS Plugin" |
|
description = "🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production" |
|
info = "more info at [Neon Coqui TTS Plugin](https://github.com/NeonGeckoCom/neon-tts-plugin-coqui), [Coqui TTS](https://github.com/coqui-ai/TTS)" |
|
|
|
|
|
|
|
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="Hello, how are you?", |
|
max_lines=3, |
|
) |
|
radio = gr.Radio( |
|
label="Language", |
|
choices=LANGUAGES, |
|
) |
|
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: language_phrases[lang], radio, textbox) |
|
|
|
|
|
|
|
blocks.launch() |
|
|