Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,7 @@ import openai
|
|
3 |
from kokoro import KPipeline
|
4 |
import soundfile as sf
|
5 |
import io
|
|
|
6 |
|
7 |
# Streamlit App UI Setup
|
8 |
st.title("Text-to-Speech Translator with Kokoro")
|
@@ -191,40 +192,46 @@ def generate_audio(text, lang_code, voice, speed):
|
|
191 |
|
192 |
# Generate and display the audio file
|
193 |
if st.button('Generate Audio'):
|
194 |
-
|
195 |
-
#
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
st.download_button(
|
206 |
-
label="Download Audio (
|
207 |
-
data=
|
208 |
-
file_name="
|
209 |
mime="audio/wav"
|
210 |
)
|
211 |
-
|
212 |
-
# Check if OpenAI API Key is provided for translation and English audio generation
|
213 |
-
if openai_api_key:
|
214 |
-
# Translate the input text to English using OpenAI
|
215 |
-
translated_text = translate_to_english(openai_api_key, input_text, lang_code)
|
216 |
-
|
217 |
-
# Generate audio for the translated English text
|
218 |
-
translated_audio_buffer = generate_audio(translated_text, 'a', voice, speed)
|
219 |
-
|
220 |
-
# Display Audio for the translated text
|
221 |
-
st.write(f"Translated Text: {translated_text}")
|
222 |
-
st.audio(translated_audio_buffer, format='audio/wav')
|
223 |
-
|
224 |
-
# Optional: Save the generated audio file for download (Translated Text)
|
225 |
-
st.download_button(
|
226 |
-
label="Download Audio (Translated to English)",
|
227 |
-
data=translated_audio_buffer,
|
228 |
-
file_name="generated_speech_translated.wav",
|
229 |
-
mime="audio/wav"
|
230 |
-
)
|
|
|
3 |
from kokoro import KPipeline
|
4 |
import soundfile as sf
|
5 |
import io
|
6 |
+
import time # To simulate some delay for spinner visibility
|
7 |
|
8 |
# Streamlit App UI Setup
|
9 |
st.title("Text-to-Speech Translator with Kokoro")
|
|
|
192 |
|
193 |
# Generate and display the audio file
|
194 |
if st.button('Generate Audio'):
|
195 |
+
# Display custom spinner while generating audio
|
196 |
+
spinner_placeholder = st.empty() # Create a placeholder for the spinner
|
197 |
+
spinner_placeholder.markdown('<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>', unsafe_allow_html=True)
|
198 |
+
|
199 |
+
# Simulate a delay (can be removed once audio generation is complete)
|
200 |
+
time.sleep(1) # Simulating audio generation time (Remove this line in production)
|
201 |
+
|
202 |
+
# Generate audio for the original text
|
203 |
+
audio_buffer = generate_audio(input_text, lang_code, voice, speed)
|
204 |
+
|
205 |
+
# Remove the spinner once audio generation is complete
|
206 |
+
spinner_placeholder.empty()
|
207 |
+
|
208 |
+
# Display Audio player for the original language
|
209 |
+
st.audio(audio_buffer, format='audio/wav')
|
210 |
+
|
211 |
+
# Optional: Save the generated audio file for download (Original Text)
|
212 |
+
st.download_button(
|
213 |
+
label="Download Audio (Original Text)",
|
214 |
+
data=audio_buffer,
|
215 |
+
file_name="generated_speech_original.wav",
|
216 |
+
mime="audio/wav"
|
217 |
+
)
|
218 |
+
|
219 |
+
# Check if OpenAI API Key is provided for translation and English audio generation
|
220 |
+
if openai_api_key:
|
221 |
+
# Translate the input text to English using OpenAI
|
222 |
+
translated_text = translate_to_english(openai_api_key, input_text, lang_code)
|
223 |
+
|
224 |
+
# Generate audio for the translated English text
|
225 |
+
translated_audio_buffer = generate_audio(translated_text, 'a', voice, speed)
|
226 |
+
|
227 |
+
# Display Audio for the translated text
|
228 |
+
st.write(f"Translated Text: {translated_text}")
|
229 |
+
st.audio(translated_audio_buffer, format='audio/wav')
|
230 |
+
|
231 |
+
# Optional: Save the generated audio file for download (Translated Text)
|
232 |
st.download_button(
|
233 |
+
label="Download Audio (Translated to English)",
|
234 |
+
data=translated_audio_buffer,
|
235 |
+
file_name="generated_speech_translated.wav",
|
236 |
mime="audio/wav"
|
237 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|