Spaces:
Runtime error
Runtime error
File size: 2,519 Bytes
c3a047c |
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 |
import gradio as gr
from tts_engine import TTSEngine
from translation import Translator, CustomTranslator
from data_manager import save_uploaded_file, convert_to_jsonl
from training.train_translation import train_from_jsonl
from stt_engine import STTEngine
import os
# Init engines
stt_engine = STTEngine()
tts_engine = TTSEngine(use_coqui=True)
translator = CustomTranslator() if os.path.exists("./training/outputs/model") else Translator()
LANGUAGES = ["english", "yoruba", "igbo", "hausa", "pidgin", "esan", "tiv", "calabar", "benin"]
def handle_conversation(audio, src_lang, tgt_lang, clone_voice):
if audio is None:
return "", None
# Step 1: Speech to Text
text = stt_engine.transcribe(audio, language=src_lang)
# Step 2: Translate
translated = translator.translate(text, src_lang, tgt_lang)
# Step 3: Text to Speech
audio_path = tts_engine.speak(translated, lang=tgt_lang, voice_clone=clone_voice)
return translated, audio_path
def admin_upload(file):
file_path = save_uploaded_file(file, file.name)
jsonl_path = convert_to_jsonl(file_path)
train_from_jsonl(jsonl_path)
return "β
Training done. Model updated!"
with gr.Blocks(title="π Two-Way Voice Translator") as demo:
gr.Markdown("# π Nigerian Two-Way Voice Translator")
with gr.Tab("Translator"):
with gr.Row():
src_lang = gr.Dropdown(LANGUAGES, value="english", label="Speaker A Language")
tgt_lang = gr.Dropdown(LANGUAGES, value="hausa", label="Speaker B Language")
with gr.Row():
audio_in = gr.Audio(sources=["microphone"], type="filepath", label="π€ Speak")
translated = gr.Textbox(label="Translated Text", interactive=False)
audio_out = gr.Audio(label="π Translation Audio")
clone_voice = gr.Checkbox(value=False, label="ποΈ Use my cloned voice (if my_voice.wav exists)")
audio_in.change(
handle_conversation,
inputs=[audio_in, src_lang, tgt_lang, clone_voice],
outputs=[translated, audio_out]
)
with gr.Tab("Admin (Training)"):
gr.Markdown("Upload Hausa β English data (.csv, .xlsx, .tsv, .jsonl)")
file_in = gr.File(label="Upload dataset")
train_btn = gr.Button("π Train Model")
output_box = gr.Textbox(label="Training Status")
train_btn.click(admin_upload, inputs=file_in, outputs=output_box)
demo.launch()
|