Webui / app.py
NeoPy's picture
Update app.py
ed34ab2 verified
raw
history blame
1.63 kB
import gradio as gr
from pathlib import Path
import os
directory = "./audios"
def scan_audio_folder():
"""Scan directory for audio files and return list of paths."""
supported_formats = ['.mp3', '.wav', '.m4a']
audio_files = []
try:
for root, _, files in os.walk(directory):
for file in files:
if os.path.splitext(file)[1].lower() in supported_formats:
audio_files.append(os.path.join(root, file))
return sorted(audio_files)
except Exception as e:
print(f"Error scanning directory: {str(e)}")
return []
def update_audio_list(folder_path):
"""Update audio dropdown based on selected folder."""
audio_files = scan_audio_folder(folder_path)
return gr.Dropdown.update(choices=[Path(f).name for f in audio_files])
# Initialize the app
with gr.Blocks() as demo:
# Input components
folder_input = gr.Textbox(label="Audio Folder Path")
# Dropdown for selecting audio files
audio_dropdown = gr.Dropdown(label="Select Audio File")
# Audio player component
audio_player = gr.Audio(label="Audio Player")
# Events
folder_input.change(
fn=update_audio_list,
inputs=[folder_input],
outputs=[audio_dropdown]
)
audio_dropdown.change(
fn=lambda x, f: os.path.join(f, x),
inputs=[audio_dropdown, folder_input],
outputs=[audio_player]
)
# Layout
demo.append(gr.Column([
folder_input,
audio_dropdown,
audio_player
]))
if __name__ == "__main__":
demo.launch(debug=True)