Spaces:
Build error
Build error
File size: 3,048 Bytes
55151cd f3fdb9f 0208d48 f3fdb9f 376e6d0 6008cad 376e6d0 6008cad b6133a3 376e6d0 b6133a3 376e6d0 b6133a3 376e6d0 f3fdb9f |
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
from TTS.api import TTS
import gradio as gr
from googletrans import Translator
# Load the TTS model
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=False)
translator = Translator()
# Define the list of supported languages
SUPPORTED_LANGUAGES = {
"English (en)": "en",
"Spanish (es)": "es",
"French (fr)": "fr",
"German (de)": "de",
"Italian (it)": "it",
"Portuguese (pt)": "pt",
"Polish (pl)": "pl",
"Turkish (tr)": "tr",
"Russian (ru)": "ru",
"Dutch (nl)": "nl",
"Czech (cs)": "cs",
"Arabic (ar)": "ar",
"Chinese (zh-cn)": "zh-cn",
"Japanese (ja)": "ja",
"Hungarian (hu)": "hu",
"Korean (ko)": "ko",
"Hindi (hi)": "hi"
}
def translate_text(text, input_lang, output_lang):
try:
translated = translator.translate(text, src=input_lang, dest=output_lang)
return translated.text
except Exception as e:
return str(e)
def generate_speech(input_text, voice_path, input_lang, output_lang, translation_enabled):
try:
if translation_enabled:
translated_text = translate_text(input_text, input_lang, output_lang)
if 'ERROR' in translated_text:
return translated_text, None
else:
translated_text = input_text
output_lang = input_lang
output_path = "output.wav"
tts.tts_to_file(
text=translated_text,
file_path=output_path,
speaker_wav=voice_path,
language=output_lang,
split_sentences=True
)
return translated_text, output_path
except Exception as e:
return str(e), None
def update_output_lang_options(translation_enabled, input_lang):
if not translation_enabled:
return gr.update(choices=[input_lang], value=input_lang, interactive=False)
return gr.update(choices=list(SUPPORTED_LANGUAGES.values()), value=input_lang, interactive=True)
with gr.Blocks() as iface:
with gr.Row():
with gr.Column(scale=1):
input_text = gr.Textbox(label="Input Text")
voice_path = gr.Audio(type="filepath", label="Upload Voice")
input_lang = gr.Dropdown(choices=list(SUPPORTED_LANGUAGES.values()), label="Input Language")
output_lang = gr.Dropdown(choices=list(SUPPORTED_LANGUAGES.values()), label="Output Language")
translation_enabled = gr.Checkbox(label="Enable Translation", value=True)
generate_button = gr.Button("Generate Speech")
with gr.Column(scale=1):
translated_text = gr.Textbox(label="Translated Text")
generated_speech = gr.Audio(label="Generated Speech")
translation_enabled.change(
update_output_lang_options,
inputs=[translation_enabled, input_lang],
outputs=output_lang
)
generate_button.click(
generate_speech,
inputs=[input_text, voice_path, input_lang, output_lang, translation_enabled],
outputs=[translated_text, generated_speech]
)
iface.launch() |