Spaces:
Running
Running
Upload 3 files
Browse files- README.md +6 -9
- app.py +41 -0
- requirements.txt +1 -3
README.md
CHANGED
@@ -1,11 +1,8 @@
|
|
1 |
-
---
|
2 |
-
license: mit
|
3 |
-
title: Multilingual Realtime Translator
|
4 |
-
sdk: gradio
|
5 |
-
emoji: 🚀
|
6 |
-
colorTo: green
|
7 |
-
short_description: ranslate between English and Nigerian languages using speech
|
8 |
-
---
|
9 |
# Multilingual Realtime Translator
|
10 |
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
# Multilingual Realtime Translator
|
2 |
|
3 |
+
This Gradio app translates speech or text between English and Yoruba (extendable to Hausa and Igbo).
|
4 |
+
|
5 |
+
## Usage
|
6 |
+
|
7 |
+
- Upload to your Hugging Face Space
|
8 |
+
- Ensure you have the proper model weights downloaded (Whisper, MarianMT)
|
app.py
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from transformers import pipeline, MarianMTModel, MarianTokenizer
|
3 |
+
import edge_tts
|
4 |
+
import asyncio
|
5 |
+
|
6 |
+
# Load Whisper for English ASR
|
7 |
+
asr_en = pipeline("automatic-speech-recognition", model="openai/whisper-base")
|
8 |
+
|
9 |
+
# Load MarianMT for Yoruba-English (can switch for Igbo/Hausa)
|
10 |
+
mt_model_name = "Helsinki-NLP/opus-mt-yo-en"
|
11 |
+
tokenizer = MarianTokenizer.from_pretrained(mt_model_name)
|
12 |
+
model = MarianMTModel.from_pretrained(mt_model_name)
|
13 |
+
|
14 |
+
def translate_speech(audio):
|
15 |
+
transcription = asr_en(audio)["text"]
|
16 |
+
inputs = tokenizer(transcription, return_tensors="pt", padding=True)
|
17 |
+
translated_tokens = model.generate(**inputs)
|
18 |
+
translated_text = tokenizer.decode(translated_tokens[0], skip_special_tokens=True)
|
19 |
+
return transcription, translated_text
|
20 |
+
|
21 |
+
def translate_text(text):
|
22 |
+
inputs = tokenizer(text, return_tensors="pt", padding=True)
|
23 |
+
translated_tokens = model.generate(**inputs)
|
24 |
+
translated_text = tokenizer.decode(translated_tokens[0], skip_special_tokens=True)
|
25 |
+
return translated_text
|
26 |
+
|
27 |
+
with gr.Blocks() as demo:
|
28 |
+
gr.Markdown("### Multilingual Realtime Translator - English ↔ Yoruba (V1)")
|
29 |
+
|
30 |
+
with gr.Tab("Speech Input"):
|
31 |
+
mic = gr.Audio(source="microphone", type="filepath", label="Speak Now")
|
32 |
+
transcription = gr.Textbox(label="Transcription")
|
33 |
+
translation = gr.Textbox(label="Translation")
|
34 |
+
mic.submit(translate_speech, inputs=mic, outputs=[transcription, translation])
|
35 |
+
|
36 |
+
with gr.Tab("Text Input"):
|
37 |
+
input_text = gr.Textbox(label="Enter text")
|
38 |
+
translated_text = gr.Textbox(label="Translated text")
|
39 |
+
input_text.submit(translate_text, inputs=input_text, outputs=translated_text)
|
40 |
+
|
41 |
+
demo.launch()
|
requirements.txt
CHANGED
@@ -1,6 +1,4 @@
|
|
|
|
1 |
transformers
|
2 |
torch
|
3 |
-
openai-whisper
|
4 |
-
gradio
|
5 |
edge-tts
|
6 |
-
speechrecognition
|
|
|
1 |
+
gradio
|
2 |
transformers
|
3 |
torch
|
|
|
|
|
4 |
edge-tts
|
|