hivecorp commited on
Commit
6a1912b
·
verified ·
1 Parent(s): b9983fe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -31
app.py CHANGED
@@ -442,17 +442,6 @@ language_dict = {
442
  }
443
 
444
 
445
- async def text_to_speech_edge(text, language_code, speaker, tashkeel_checkbox=False):
446
-
447
-
448
- # Get the voice for the selected language and speaker
449
- voice = language_dict[language_code][speaker]
450
- communicate = edge_tts.Communicate(text, voice)
451
- with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
452
- tmp_path = tmp_file.name
453
- await communicate.save(tmp_path)
454
-
455
- return text, tmp_path
456
 
457
 
458
  def get_speakers(language):
@@ -463,27 +452,41 @@ def get_speakers(language):
463
 
464
  default_language = None
465
  default_speaker = None
466
- with gr.Blocks(title="Writoo AI V2") as demo:
467
- gr.HTML(" ")
468
- gr.HTML(f"<h2 style='color:Tomato;'> 🎥 **Exciting News: 60+ Minutes File Creation is also Free !!** 🎥 </h3>")
 
 
469
 
470
- gr.Markdown("✨ Features: • Convert text to speech with 60+ audio files.• Choose from 72+ languages • Its Free 😍")
471
- with gr.Row():
472
- with gr.Column():
473
- input_text = gr.Textbox(lines=5, label="Input Text", placeholder="Enter text to convert to speech")
474
- language = gr.Dropdown(
475
- choices=list(language_dict.keys()), value=default_language, label="Languages", interactive=True
476
- )
477
- speaker = gr.Dropdown(choices=[], value=default_speaker, label="Speakers", interactive=False)
478
- tashkeel_checkbox = gr.Checkbox(label="Tashkeel", value=False, visible=False, interactive=False)
479
- run_btn = gr.Button(value="Generate Audio", variant="primary")
480
 
481
- with gr.Column():
482
- output_text = gr.Textbox(label="Output Text")
483
- output_audio = gr.Audio(type="filepath", label="Audio Output")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
 
485
- language.change(get_speakers, inputs=[language], outputs=[speaker, tashkeel_checkbox])
486
- run_btn.click(text_to_speech_edge, inputs=[input_text, language, speaker, tashkeel_checkbox], outputs=[output_text, output_audio])
487
 
488
- if __name__ == "__main__":
489
- demo.queue().launch(share=False)
 
442
  }
443
 
444
 
 
 
 
 
 
 
 
 
 
 
 
445
 
446
 
447
  def get_speakers(language):
 
452
 
453
  default_language = None
454
  default_speaker = None
455
+ max_words = 1600 # Maximum word limit for input text
456
+
457
+ async def generate_audio(text, language, voice):
458
+ if len(text.split()) > max_words:
459
+ return "Error: Input text exceeds the maximum allowed word limit of 1600.", None
460
 
461
+ communicator = edge_tts.Communicate(text, voice)
462
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
463
+ file_path = tmp_file.name
464
+ await communicator.save(file_path)
465
+ return None, file_path
 
 
 
 
 
466
 
467
+ def tts_wrapper(text, language, voice):
468
+ error_message, audio_path = gr.Blocks.run_coroutine(generate_audio(text, language, voice))
469
+ if error_message:
470
+ return error_message, None
471
+ return None, audio_path
472
+
473
+ def update_voices(language):
474
+ return list(language_dict[language].keys())
475
+
476
+ with gr.Blocks() as app:
477
+ gr.Markdown("# Text-to-Speech Application")
478
+ with gr.Row():
479
+ text_input = gr.Textbox(lines=5, label="Input Text", placeholder="Enter text to convert to speech")
480
+ with gr.Row():
481
+ language_dropdown = gr.Dropdown(choices=list(language_dict.keys()), label="Select Language", value="English")
482
+ voice_dropdown = gr.Dropdown(choices=list(language_dict["English"].keys()), label="Select Voice", value="Jenny")
483
+ with gr.Row():
484
+ submit_button = gr.Button("Generate Speech")
485
+ with gr.Row():
486
+ error_output = gr.Textbox(label="Error Message", interactive=False)
487
+ audio_output = gr.Audio(label="Generated Audio", type="filepath")
488
 
489
+ language_dropdown.change(update_voices, inputs=[language_dropdown], outputs=[voice_dropdown])
490
+ submit_button.click(tts_wrapper, inputs=[text_input, language_dropdown, voice_dropdown], outputs=[error_output, audio_output])
491
 
492
+ app.launch()