ghostai1 commited on
Commit
e94cef8
·
verified ·
1 Parent(s): 22d2fd3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -15
app.py CHANGED
@@ -5,38 +5,40 @@ import gradio as gr
5
 
6
  def translate_and_speak(text: str, target: str, log: list):
7
  if not text.strip():
8
- return "", None, log
 
9
 
10
- # Translate
11
  dest = "es" if target == "Spanish" else "en"
12
  translated = GoogleTranslator(source='auto', target=dest).translate(text)
13
 
14
- # Text-to-speech
15
  tts = gTTS(translated, lang=dest)
16
  tmp = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
17
  tts.write_to_fp(tmp)
18
  tmp.flush()
19
 
20
- # Update session log
21
  log_entry = [text, target, translated]
22
- log = log + [log_entry]
23
 
24
- return translated, tmp.name, log
 
25
 
26
- with gr.Blocks(title="🌐💬 Translate & Speak with Logs") as demo:
27
  gr.Markdown(
28
  "# 🗣️ Translate & Speak + Session Log\n"
29
- "Type text, choose language, click **Go**, and see your session history."
30
  )
31
 
32
  with gr.Row():
33
- text_in = gr.Textbox(lines=3, placeholder="Enter text here…")
34
  lang_sel = gr.Radio(["Spanish", "English"], value="Spanish", label="Translate to")
35
  go_btn = gr.Button("Go 🔄", variant="primary")
36
 
37
  translated_out = gr.Textbox(label="Translated text", interactive=False)
38
- audio_out = gr.Audio(label="Speech output", type="filepath")
39
- session_log = gr.Dataframe(
40
  headers=["Input Text", "Target Language", "Translated Text"],
41
  datatype=["str", "str", "str"],
42
  wrap=True,
@@ -44,14 +46,12 @@ with gr.Blocks(title="🌐💬 Translate & Speak with Logs") as demo:
44
  label="Session Log"
45
  )
46
 
47
- # Hidden state for accumulating log entries
48
- log_state = gr.State([])
49
 
50
  go_btn.click(
51
  translate_and_speak,
52
  inputs=[text_in, lang_sel, log_state],
53
- outputs=[translated_out, audio_out, session_log],
54
- _js="(x)=>{return x;}" # ensure state passes through
55
  )
56
 
57
  if __name__ == "__main__":
 
5
 
6
  def translate_and_speak(text: str, target: str, log: list):
7
  if not text.strip():
8
+ # return empty outputs and keep log untouched
9
+ return "", None, log, log
10
 
11
+ # 1️⃣ translate
12
  dest = "es" if target == "Spanish" else "en"
13
  translated = GoogleTranslator(source='auto', target=dest).translate(text)
14
 
15
+ # 2️⃣ speak
16
  tts = gTTS(translated, lang=dest)
17
  tmp = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
18
  tts.write_to_fp(tmp)
19
  tmp.flush()
20
 
21
+ # 3️⃣ update log
22
  log_entry = [text, target, translated]
23
+ new_log = log + [log_entry]
24
 
25
+ # outputs: translated text, audio filepath, session table rows, updated state
26
+ return translated, tmp.name, new_log, new_log
27
 
28
+ with gr.Blocks(title="🌐💬 Translate & Speak + Session Log") as demo:
29
  gr.Markdown(
30
  "# 🗣️ Translate & Speak + Session Log\n"
31
+ "Type text, choose language, click **Go**, and watch your session history."
32
  )
33
 
34
  with gr.Row():
35
+ text_in = gr.Textbox(lines=3, placeholder="Enter text here…")
36
  lang_sel = gr.Radio(["Spanish", "English"], value="Spanish", label="Translate to")
37
  go_btn = gr.Button("Go 🔄", variant="primary")
38
 
39
  translated_out = gr.Textbox(label="Translated text", interactive=False)
40
+ audio_out = gr.Audio(label="Speech output", type="filepath")
41
+ session_log = gr.Dataframe(
42
  headers=["Input Text", "Target Language", "Translated Text"],
43
  datatype=["str", "str", "str"],
44
  wrap=True,
 
46
  label="Session Log"
47
  )
48
 
49
+ log_state = gr.State([]) # holds list of [input, lang, translation]
 
50
 
51
  go_btn.click(
52
  translate_and_speak,
53
  inputs=[text_in, lang_sel, log_state],
54
+ outputs=[translated_out, audio_out, session_log, log_state]
 
55
  )
56
 
57
  if __name__ == "__main__":