File size: 1,794 Bytes
ed34ab2
4091b91
84a6095
4091b91
84a6095
 
4091b91
 
 
 
ed34ab2
4091b91
ed34ab2
4091b91
 
 
ed34ab2
4091b91
ed34ab2
84a6095
4091b91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed34ab2
4091b91
84a6095
4091b91
84a6095
4091b91
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import os
import gradio as gr

folder_path = "./audios"


def get_audio_files():
    """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 initial empty value (Gradio 4.x style)
        folder_dropdown = gr.Dropdown(
            choices=[],
            label="Select Audio Folder",
            value=None,
            placeholder="Choose an audio folder"
        )
        
        # Create dropdown for audio files
        audio_dropdown = gr.Dropdown(
            choices=[],
            label="Select Audio File",
            value=None,
            placeholder="Audio files will appear here"
        )
        
        # 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()