Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from gtts import gTTS | |
| from pydub import AudioSegment | |
| from pydub.playback import play | |
| from io import BytesIO | |
| # Step 1: Define a function to generate and merge TTS audio for multiple languages | |
| def multilingual_tts(korean_text, english_text, russian_text, bulgarian_text): | |
| # Language mapping | |
| texts = { | |
| "ko": korean_text, | |
| "en": english_text, | |
| "ru": russian_text, | |
| "bg": bulgarian_text, | |
| } | |
| combined_audio = AudioSegment.silent(duration=0) # Empty audio to start | |
| for lang, text in texts.items(): | |
| if text.strip(): # Process only if text is provided | |
| tts = gTTS(text, lang=lang) | |
| audio_file = BytesIO() | |
| tts.write_to_fp(audio_file) | |
| audio_file.seek(0) | |
| tts_audio = AudioSegment.from_file(audio_file, format="mp3") | |
| combined_audio += tts_audio + AudioSegment.silent(duration=500) # Add silence between languages | |
| # Save combined audio to a file | |
| output_file = "combined_output.mp3" | |
| combined_audio.export(output_file, format="mp3") | |
| return output_file | |
| # Step 2: Create Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Multilingual TTS: Generate a Single Audio File") | |
| with gr.Row(): | |
| korean_input = gr.Textbox(label="Enter Korean Text:", placeholder="안녕하세요") | |
| english_input = gr.Textbox(label="Enter English Text:", placeholder="Hello") | |
| russian_input = gr.Textbox(label="Enter Russian Text:", placeholder="Привет") | |
| bulgarian_input = gr.Textbox(label="Enter Bulgarian Text:", placeholder="Здравейте") | |
| output_audio = gr.Audio(label="Generated Speech", type="filepath") | |
| generate_button = gr.Button("Generate Speech") | |
| generate_button.click( | |
| multilingual_tts, | |
| inputs=[korean_input, english_input, russian_input, bulgarian_input], | |
| outputs=output_audio | |
| ) | |
| # Run the app | |
| if __name__ == "__main__": | |
| demo.launch() | |