import os import gradio as gr def get_audio_files(folder_path): """Get list of audio files from a folder.""" if not os.path.exists(folder_path): return [] audio_extensions = ['.mp3', '.wav', '.m4a'] try: files = [f for f in os.listdir(folder_path) if os.path.splitext(f)[1].lower() in audio_extensions] return sorted(files) except Exception as e: print(f"Error reading folder: {e}") return [] def create_dropdown(): """Create dropdown interface with audio folder detection.""" with gr.Blocks() as demo: # Create dropdown with empty choices and descriptive label folder_dropdown = gr.Dropdown( choices=[], label="Select Audio Folder", value=None ) # Create dropdown for audio files audio_dropdown = gr.Dropdown( choices=[], label="Select Audio File", value=None ) # Event listener for folder selection def update_audio_files(folder_path): if not folder_path: return [] audio_files = get_audio_files(folder_path) return audio_files # Link events folder_dropdown.change( fn=update_audio_files, inputs=folder_dropdown, outputs=audio_dropdown ) # Layout configuration demo.append(gr.Row([folder_dropdown])) demo.append(gr.Row([audio_dropdown])) return demo # Launch the interface if __name__ == "__main__": app = create_dropdown() app.launch()