bluenevus commited on
Commit
45bbd97
·
verified ·
1 Parent(s): 72cdd21

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -4
app.py CHANGED
@@ -130,14 +130,15 @@ with gr.Blocks() as demo:
130
 
131
  voice_dict = asyncio.run(get_voice_list())
132
  languages = list(voice_dict.keys())
 
133
 
134
  with gr.Row():
135
  lang1_select = gr.Dropdown(label="Select Language 1", choices=[f"{language_names.get(lang, lang)}" for lang in languages], value="English (United States)")
136
- voice1_select = gr.Dropdown(label="Select Voice 1")
137
 
138
  with gr.Row():
139
- lang2_select = gr.Dropdown(label="Select Language 2", choices=[f"{language_names.get(lang, lang)}" for lang in languages], value="English (United States)")
140
- voice2_select = gr.Dropdown(label="Select Voice 2")
141
 
142
  generate_btn = gr.Button("Generate Script")
143
  script_output = gr.Textbox(label="Generated Script", lines=10)
@@ -146,6 +147,8 @@ with gr.Blocks() as demo:
146
  audio_output = gr.Audio(label="Generated Podcast")
147
 
148
  def update_voices(lang):
 
 
149
  selected_lang = next((key for key, value in language_names.items() if value == lang), None)
150
  voices = voice_dict.get(selected_lang, [])
151
  return gr.Dropdown(choices=voices, value=voices[0] if voices else None)
@@ -157,7 +160,11 @@ with gr.Blocks() as demo:
157
  return generate_podcast_script(api_key, content, duration)
158
 
159
  async def render_podcast_wrapper(api_key, script, voice1, voice2):
160
- return await render_podcast(api_key, script, voice1, voice2)
 
 
 
 
161
 
162
  generate_btn.click(generate_script_wrapper, inputs=[api_key_input, content_input, duration], outputs=script_output)
163
  render_btn.click(render_podcast_wrapper, inputs=[api_key_input, script_output, voice1_select, voice2_select], outputs=audio_output)
 
130
 
131
  voice_dict = asyncio.run(get_voice_list())
132
  languages = list(voice_dict.keys())
133
+ languages.insert(0, "None") # Add "None" option for single speaker
134
 
135
  with gr.Row():
136
  lang1_select = gr.Dropdown(label="Select Language 1", choices=[f"{language_names.get(lang, lang)}" for lang in languages], value="English (United States)")
137
+ voice1_select = gr.Dropdown(label="Select Voice 1", value="Microsoft Server Speech Text to Speech Voice (en-US, AvaNeural)")
138
 
139
  with gr.Row():
140
+ lang2_select = gr.Dropdown(label="Select Language 2", choices=[f"{language_names.get(lang, lang)}" for lang in languages], value="None")
141
+ voice2_select = gr.Dropdown(label="Select Voice 2", value="Microsoft Server Speech Text to Speech Voice (en-US, AndrewNeural)")
142
 
143
  generate_btn = gr.Button("Generate Script")
144
  script_output = gr.Textbox(label="Generated Script", lines=10)
 
147
  audio_output = gr.Audio(label="Generated Podcast")
148
 
149
  def update_voices(lang):
150
+ if lang == "None":
151
+ return gr.Dropdown(choices=[], value=None)
152
  selected_lang = next((key for key, value in language_names.items() if value == lang), None)
153
  voices = voice_dict.get(selected_lang, [])
154
  return gr.Dropdown(choices=voices, value=voices[0] if voices else None)
 
160
  return generate_podcast_script(api_key, content, duration)
161
 
162
  async def render_podcast_wrapper(api_key, script, voice1, voice2):
163
+ if voice2 is None or lang2_select.value == "None":
164
+ # Use only voice1 for all lines
165
+ return await render_podcast(api_key, script, voice1, voice1)
166
+ else:
167
+ return await render_podcast(api_key, script, voice1, voice2)
168
 
169
  generate_btn.click(generate_script_wrapper, inputs=[api_key_input, content_input, duration], outputs=script_output)
170
  render_btn.click(render_podcast_wrapper, inputs=[api_key_input, script_output, voice1_select, voice2_select], outputs=audio_output)