marks
commited on
Commit
·
67d3ff8
1
Parent(s):
992479e
Added default values
Browse files- interface.py +38 -17
interface.py
CHANGED
|
@@ -190,6 +190,11 @@ async def create_podcast(
|
|
| 190 |
|
| 191 |
def create_ui():
|
| 192 |
logger.info("Initializing Gradio interface")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 193 |
with gr.Blocks(title='PodcastCreator', theme=gr.themes.Soft()) as interface:
|
| 194 |
with gr.Row():
|
| 195 |
with gr.Column(scale=2):
|
|
@@ -203,7 +208,11 @@ def create_ui():
|
|
| 203 |
type='password',
|
| 204 |
placeholder='Enter key...'
|
| 205 |
)
|
| 206 |
-
voice = gr.Dropdown(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
|
| 208 |
with gr.Column():
|
| 209 |
openrouter_key = gr.Textbox(
|
|
@@ -211,7 +220,11 @@ def create_ui():
|
|
| 211 |
type='password',
|
| 212 |
placeholder='Enter key...'
|
| 213 |
)
|
| 214 |
-
model = gr.Dropdown(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 215 |
|
| 216 |
submit_btn = gr.Button('Create Podcast', variant='primary')
|
| 217 |
|
|
@@ -222,35 +235,43 @@ def create_ui():
|
|
| 222 |
# Event handlers
|
| 223 |
def update_voices(key):
|
| 224 |
if not key:
|
| 225 |
-
return gr.Dropdown(choices=[])
|
| 226 |
try:
|
| 227 |
client = ElevenLabsClient(key)
|
| 228 |
voices = client.get_voices()
|
| 229 |
-
return gr.Dropdown(choices=voices)
|
| 230 |
except Exception as e:
|
| 231 |
-
|
|
|
|
| 232 |
|
| 233 |
async def update_models(key):
|
| 234 |
if not key:
|
| 235 |
-
return gr.Dropdown(choices=[])
|
| 236 |
try:
|
| 237 |
client = OpenRouterClient(key)
|
| 238 |
models = await client.get_models()
|
| 239 |
-
return gr.Dropdown(choices=models)
|
| 240 |
except Exception as e:
|
| 241 |
-
|
|
|
|
| 242 |
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
|
|
|
|
| 252 |
return interface
|
| 253 |
|
| 254 |
if __name__ == '__main__':
|
| 255 |
demo = create_ui()
|
| 256 |
-
demo.launch()
|
|
|
|
| 190 |
|
| 191 |
def create_ui():
|
| 192 |
logger.info("Initializing Gradio interface")
|
| 193 |
+
|
| 194 |
+
# Default choices for dropdowns
|
| 195 |
+
default_voices = [("", "Enter API key to load voices")]
|
| 196 |
+
default_models = [("", "Enter API key to load models")]
|
| 197 |
+
|
| 198 |
with gr.Blocks(title='PodcastCreator', theme=gr.themes.Soft()) as interface:
|
| 199 |
with gr.Row():
|
| 200 |
with gr.Column(scale=2):
|
|
|
|
| 208 |
type='password',
|
| 209 |
placeholder='Enter key...'
|
| 210 |
)
|
| 211 |
+
voice = gr.Dropdown(
|
| 212 |
+
label='Voice',
|
| 213 |
+
choices=default_voices,
|
| 214 |
+
value=default_voices[0][0]
|
| 215 |
+
)
|
| 216 |
|
| 217 |
with gr.Column():
|
| 218 |
openrouter_key = gr.Textbox(
|
|
|
|
| 220 |
type='password',
|
| 221 |
placeholder='Enter key...'
|
| 222 |
)
|
| 223 |
+
model = gr.Dropdown(
|
| 224 |
+
label='AI Model',
|
| 225 |
+
choices=default_models,
|
| 226 |
+
value=default_models[0][0]
|
| 227 |
+
)
|
| 228 |
|
| 229 |
submit_btn = gr.Button('Create Podcast', variant='primary')
|
| 230 |
|
|
|
|
| 235 |
# Event handlers
|
| 236 |
def update_voices(key):
|
| 237 |
if not key:
|
| 238 |
+
return gr.Dropdown(choices=default_voices, value=default_voices[0][0])
|
| 239 |
try:
|
| 240 |
client = ElevenLabsClient(key)
|
| 241 |
voices = client.get_voices()
|
| 242 |
+
return gr.Dropdown(choices=voices, value=voices[0][0] if voices else None)
|
| 243 |
except Exception as e:
|
| 244 |
+
logger.error(f"Failed to load voices: {e}")
|
| 245 |
+
return gr.Dropdown(choices=[(None, f"Error: {str(e)}")], value=None)
|
| 246 |
|
| 247 |
async def update_models(key):
|
| 248 |
if not key:
|
| 249 |
+
return gr.Dropdown(choices=default_models, value=default_models[0][0])
|
| 250 |
try:
|
| 251 |
client = OpenRouterClient(key)
|
| 252 |
models = await client.get_models()
|
| 253 |
+
return gr.Dropdown(choices=models, value=models[0][0] if models else None)
|
| 254 |
except Exception as e:
|
| 255 |
+
logger.error(f"Failed to load models: {e}")
|
| 256 |
+
return gr.Dropdown(choices=[(None, f"Error: {str(e)}")], value=None)
|
| 257 |
|
| 258 |
+
# Add error handling for the event handlers
|
| 259 |
+
try:
|
| 260 |
+
elevenlabs_key.change(fn=update_voices, inputs=elevenlabs_key, outputs=voice)
|
| 261 |
+
openrouter_key.change(fn=update_models, inputs=openrouter_key, outputs=model)
|
| 262 |
+
|
| 263 |
+
submit_btn.click(
|
| 264 |
+
fn=create_podcast,
|
| 265 |
+
inputs=[url_input, prompt, elevenlabs_key, voice, openrouter_key, model],
|
| 266 |
+
outputs=[audio_output, status]
|
| 267 |
+
)
|
| 268 |
+
except Exception as e:
|
| 269 |
+
logger.error(f"Failed to set up event handlers: {e}")
|
| 270 |
+
raise
|
| 271 |
|
| 272 |
+
logger.info("Gradio interface initialized successfully")
|
| 273 |
return interface
|
| 274 |
|
| 275 |
if __name__ == '__main__':
|
| 276 |
demo = create_ui()
|
| 277 |
+
demo.launch()
|