gaur3009 commited on
Commit
81b5bee
·
verified ·
1 Parent(s): 0d6fa8e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline
3
+ from gtts import gTTS
4
+ import tempfile
5
+
6
+ # Load ASR & Translation models
7
+ asr_model = pipeline("automatic-speech-recognition", model="openai/whisper-medium", device=0)
8
+ translator = pipeline("translation", model="ai4bharat/indictrans2-en-indic", device=0)
9
+
10
+ # Map language names to codes
11
+ lang_code_map = {
12
+ "Hindi": "hi", "Kannada": "kn", "Tamil": "ta", "Telugu": "te", "Bengali": "bn", "Marathi": "mr",
13
+ "Gujarati": "gu", "Punjabi": "pa", "Malayalam": "ml", "Assamese": "as", "Odia": "or", "Urdu": "ur",
14
+ "Sanskrit": "sa", "Nepali": "ne", "Manipuri": "mni", "English": "en"
15
+ }
16
+
17
+ languages = list(lang_code_map.keys())
18
+
19
+ def process_speech(audio, speaker_lang, listener_lang):
20
+ # Step 1: Speech → Text
21
+ transcript = asr_model(audio)["text"]
22
+
23
+ # Step 2: Translate
24
+ try:
25
+ result = translator(transcript, src_lang=speaker_lang.lower(), tgt_lang=listener_lang.lower())
26
+ translated_text = result[0]["translation_text"]
27
+ except:
28
+ translated_text = "[Translation failed]"
29
+
30
+ # Step 3: Text → Speech
31
+ tts_lang = lang_code_map.get(listener_lang, "en")
32
+ tts = gTTS(translated_text, lang=tts_lang)
33
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as f:
34
+ tts.save(f.name)
35
+ return transcript, translated_text, f.name
36
+
37
+ # Gradio UI
38
+ with gr.Blocks(title="Indian Language Speech Translator") as demo:
39
+ gr.Markdown("## 🗣️ Real-Time Indian Speech Translator")
40
+ gr.Markdown("Choose two languages and take turns speaking. The app will translate and speak for you in real-time.")
41
+
42
+ with gr.Row():
43
+ speaker_lang = gr.Dropdown(choices=languages, value="Hindi", label="🎙️ Speaker's Language")
44
+ listener_lang = gr.Dropdown(choices=languages, value="Kannada", label="👂 Listener's Language")
45
+
46
+ audio_input = gr.Audio(source="microphone", type="filepath", label="🎤 Speak here")
47
+
48
+ with gr.Row():
49
+ transcript_box = gr.Textbox(label="📝 Recognized Speech")
50
+ translation_box = gr.Textbox(label="🌐 Translated Text")
51
+
52
+ audio_output = gr.Audio(label="🔊 Translated Speech")
53
+
54
+ btn = gr.Button("Translate & Speak")
55
+
56
+ btn.click(
57
+ fn=process_speech,
58
+ inputs=[audio_input, speaker_lang, listener_lang],
59
+ outputs=[transcript_box, translation_box, audio_output]
60
+ )
61
+
62
+ demo.launch()