|
import gradio as gr |
|
import numpy as np |
|
|
|
class AudioProcessor: |
|
def __init__(self): |
|
self.sample_rate = 16000 |
|
|
|
def process_audio(self, audio_input): |
|
|
|
return (np.random.random(self.sample_rate * 3), self.sample_rate |
|
|
|
def create_interface(): |
|
processor = AudioProcessor() |
|
|
|
def process_audio(audio): |
|
try: |
|
audio_data, sr = processor.process_audio(audio) |
|
status = f"Success! Processed {len(audio_data)} samples at {sr}Hz" |
|
info = f"Audio length: {len(audio_data)/sr:.2f} seconds" |
|
return status, info |
|
except Exception as e: |
|
return f"Error: {str(e)}", "No audio info available" |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## Working Audio Processor") |
|
|
|
mic_input = gr.Audio(sources=["microphone"], type="filepath") |
|
process_btn = gr.Button("Process") |
|
|
|
with gr.Row(): |
|
status_out = gr.Textbox(label="Status") |
|
info_out = gr.Textbox(label="Information") |
|
|
|
process_btn.click( |
|
fn=process_audio, |
|
inputs=[mic_input], |
|
outputs=[status_out, info_out] |
|
) |
|
|
|
return demo |
|
|
|
if __name__ == "__main__": |
|
demo = create_interface() |
|
demo.launch() |