|
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: |
|
|
|
folder_dropdown = gr.Dropdown( |
|
choices=[], |
|
label="Select Audio Folder", |
|
value=None |
|
) |
|
|
|
|
|
audio_dropdown = gr.Dropdown( |
|
choices=[], |
|
label="Select Audio File", |
|
value=None |
|
) |
|
|
|
|
|
def update_audio_files(folder_path): |
|
if not folder_path: |
|
return [] |
|
|
|
audio_files = get_audio_files(folder_path) |
|
return audio_files |
|
|
|
|
|
folder_dropdown.change( |
|
fn=update_audio_files, |
|
inputs=folder_dropdown, |
|
outputs=audio_dropdown |
|
) |
|
|
|
|
|
demo.append(gr.Row([folder_dropdown])) |
|
demo.append(gr.Row([audio_dropdown])) |
|
|
|
return demo |
|
|
|
|
|
if __name__ == "__main__": |
|
app = create_dropdown() |
|
app.launch() |