translators-will commited on
Commit
a5e9424
·
verified ·
1 Parent(s): a7c9eb4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -9
app.py CHANGED
@@ -60,14 +60,35 @@ def translate_transcript(transcript):
60
  response = completion.choices[0].message.content
61
  return response
62
 
63
- def generate_dub(translated_text):
64
- audio_data = client_el.text_to_speech.convert(
65
- text=translated_text,
66
- voice_id="EXAVITQu4vr4xnSDxMaL",
67
- model_id="eleven_multilingual_v2"
68
- )
69
- return audio_data
 
 
 
 
 
 
 
 
 
 
70
 
 
 
 
 
 
 
 
 
 
 
 
71
  def run_quality_check(spanish, english):
72
  st.write(spanish)
73
  st.write(english)
@@ -107,11 +128,19 @@ if uploaded_file:
107
  st.subheader("Translated Text")
108
 
109
  with st.spinner("💿 Generating dub..."):
110
- dubbed_audio = generate_dub(translated)
111
  if dubbed_audio:
112
  st.success("Dubbing process completed successfully!")
113
  dubbed_audio.seek(0)
114
- st.audio(dubbed_audio, format='audio/mp3')
 
 
 
 
 
 
 
 
115
 
116
  with st.spinner("Running quality check... "):
117
  qa_result = run_quality_check(transcript, translated)
 
60
  response = completion.choices[0].message.content
61
  return response
62
 
63
+ # Helper function for generate_dub
64
+ def convert_audio_response(audio, to_wav=False):
65
+ # Handle generator or bytes input
66
+ if isinstance(audio, (bytes, bytearray)):
67
+ audio_bytes = audio
68
+ elif hasattr(audio, '__iter__'):
69
+ audio_bytes = b''.join(audio)
70
+ else:
71
+ raise ValueError("Unsupported audio format.")
72
+
73
+ def generate_dub(translated_text, to_wav=False):
74
+ try:
75
+ audio_data = client_el.text_to_speech.convert(
76
+ text=translated_text,
77
+ voice_id="EXAVITQu4vr4xnSDxMaL",
78
+ model_id="eleven_multilingual_v2"
79
+ )
80
 
81
+ if 'audio' in audio_data:
82
+ audio_stream, mime_type = convert_audio_response(audio_data['audio'] to_wav=to_wav)
83
+ return audio_stream, mime_type
84
+ else:
85
+ st.error("❌ No audio data returned.")
86
+ return None, None
87
+
88
+ except Exception as e:
89
+ st.error(f"ElevenLabs API error: {e}")
90
+ return None, None
91
+
92
  def run_quality_check(spanish, english):
93
  st.write(spanish)
94
  st.write(english)
 
128
  st.subheader("Translated Text")
129
 
130
  with st.spinner("💿 Generating dub..."):
131
+ dubbed_audio, mime_type = generate_dub(translated)
132
  if dubbed_audio:
133
  st.success("Dubbing process completed successfully!")
134
  dubbed_audio.seek(0)
135
+ st.audio(dubbed_audio, format=mime_type)
136
+ st.download_button(
137
+ label="Download dub",
138
+ data = dubbed_audio,
139
+ file_name = f"dubbed_audio.{mime_type.split("/")[-1]}",
140
+ mime=mime_type
141
+ )
142
+ else:
143
+ st.warning("No audio to play or download.")
144
 
145
  with st.spinner("Running quality check... "):
146
  qa_result = run_quality_check(transcript, translated)