ghostai1 commited on
Commit
e41b97b
·
verified ·
1 Parent(s): ebfb3de

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🗣️ Audio Translator | CPU-only HF Space
2
+
3
+ import tempfile
4
+ from deep_translator import GoogleTranslator
5
+ from gtts import gTTS
6
+ import gradio as gr
7
+ from transformers import pipeline
8
+
9
+ # 1. ASR pipeline (Whisper Tiny)
10
+ asr = pipeline(
11
+ "automatic-speech-recognition",
12
+ model="openai/whisper-tiny",
13
+ device=-1,
14
+ chunk_length_s=30
15
+ )
16
+
17
+ def audio_translate(audio_path: str, target_lang: str):
18
+ if not audio_path:
19
+ return "", "", None
20
+
21
+ # 2. Transcribe
22
+ result = asr(audio_path)
23
+ transcript = result["text"].strip()
24
+
25
+ # 3. Translate
26
+ dest_code = "es" if target_lang == "Spanish" else "en"
27
+ translated = GoogleTranslator(source="auto", target=dest_code).translate(transcript)
28
+
29
+ # 4. Text-to-speech
30
+ tts = gTTS(translated, lang=dest_code)
31
+ tmp = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
32
+ tts.write_to_fp(tmp)
33
+ tmp.flush()
34
+
35
+ return transcript, translated, tmp.name
36
+
37
+ # 5. Gradio UI
38
+ with gr.Blocks(title="🗣️ Audio Translator") as demo:
39
+ gr.Markdown(
40
+ "# 🗣️ Audio Translator\n"
41
+ "Upload an audio clip (any language), choose **English** or **Spanish**,\n"
42
+ "and get an immediate translated transcript and spoken audio."
43
+ )
44
+
45
+ with gr.Row():
46
+ audio_in = gr.Audio(source="upload", type="filepath", label="Upload Audio")
47
+ lang_sel = gr.Radio(["Spanish", "English"], value="Spanish", label="Translate to")
48
+ translate_btn = gr.Button("Translate 🔄", variant="primary")
49
+
50
+ orig_txt = gr.Textbox(label="Transcription", interactive=False)
51
+ trans_txt = gr.Textbox(label="Translation", interactive=False)
52
+ audio_out = gr.Audio(label="Translated Speech", type="filepath")
53
+
54
+ translate_btn.click(
55
+ audio_translate,
56
+ inputs=[audio_in, lang_sel],
57
+ outputs=[orig_txt, trans_txt, audio_out]
58
+ )
59
+
60
+ if __name__ == "__main__":
61
+ demo.launch(server_name="0.0.0.0")