Spaces:
Runtime error
Runtime error
File size: 2,522 Bytes
8e6e515 1551825 8e6e515 1551825 e8dd4ac 8e6e515 e8dd4ac 1551825 e8dd4ac 1551825 e8dd4ac 1551825 8e6e515 1551825 | 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 | from transformers import MarianMTModel, MarianTokenizer, pipeline
import gradio as gr
import tempfile
from gtts import gTTS
MODEL_NAME = "victorachede/tiv-translator"
print("Loading tokenizer...")
tokenizer = MarianTokenizer.from_pretrained(MODEL_NAME)
print("Loading model...")
model = MarianMTModel.from_pretrained(MODEL_NAME)
print("Loading Whisper...")
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
print("All models ready.")
def translate(text: str) -> str:
if not text or not text.strip():
return ""
inputs = tokenizer(
text.strip(),
return_tensors="pt",
padding=True,
truncation=True,
max_length=512
)
outputs = model.generate(
**inputs,
max_length=128,
num_beams=5,
repetition_penalty=1.3,
no_repeat_ngram_size=3,
early_stopping=True
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
def text_to_speech(tiv_text: str) -> str:
tts = gTTS(text=tiv_text, lang='en') # placeholder — swap for ElevenLabs later
tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
tts.save(tmp.name)
return tmp.name
def translate_text(english_text: str):
tiv = translate(english_text)
audio = text_to_speech(tiv)
return tiv, audio
def speech_to_speech(audio_path: str):
result = asr(audio_path)
english_text = result["text"]
tiv = translate(english_text)
audio = text_to_speech(tiv)
return english_text, tiv, audio
with gr.Blocks(title="TRANSLTR — by Black Sheep Co.") as demo:
gr.Markdown("# TRANSLTR\n### English → Tiv | by Black Sheep Co.")
with gr.Tab("Text"):
text_in = gr.Textbox(label="English", placeholder="Enter English text...", lines=3)
text_out = gr.Textbox(label="Tiv", lines=3)
audio_out_text = gr.Audio(label="Tiv (spoken)")
text_in.submit(translate_text, inputs=text_in, outputs=[text_out, audio_out_text])
gr.Button("Translate").click(translate_text, inputs=text_in, outputs=[text_out, audio_out_text])
with gr.Tab("Speech"):
audio_in = gr.Audio(sources=["microphone"], type="filepath", label="Speak English")
english_heard = gr.Textbox(label="English (heard)")
tiv_out = gr.Textbox(label="Tiv (translated)")
audio_out_speech = gr.Audio(label="Tiv (spoken)")
gr.Button("Translate").click(speech_to_speech, inputs=audio_in, outputs=[english_heard, tiv_out, audio_out_speech])
demo.launch() |