Update app.py
Browse files
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="
|
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 |
-
|
|
|
|
|
|
|
|
|
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)
|