|
import gradio as gr |
|
import numpy as np |
|
|
|
class AudioProcessor: |
|
def __init__(self): |
|
self.sample_rate = 16000 |
|
|
|
def process_audio(self, audio_input): |
|
|
|
if audio_input is None: |
|
return (np.random.random(self.sample_rate * 3), self.sample_rate |
|
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) |
|
return ( |
|
f"Audio processed successfully\nLength: {len(audio_data)/sr:.2f} seconds", |
|
f"Sample rate: {sr} Hz\nData points: {len(audio_data)}" |
|
) |
|
except Exception as e: |
|
return ( |
|
f"Error processing audio: {str(e)}", |
|
"No backend information available" |
|
) |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## Simple Audio Processor") |
|
|
|
with gr.Row(): |
|
audio_input = gr.Audio(sources=["microphone"], type="filepath") |
|
process_btn = gr.Button("Process Audio") |
|
|
|
with gr.Row(): |
|
status = gr.Textbox(label="Status") |
|
info = gr.Textbox(label="Audio Info") |
|
|
|
process_btn.click( |
|
fn=process_audio, |
|
inputs=[audio_input], |
|
outputs=[status, info] |
|
) |
|
|
|
return demo |
|
|
|
if __name__ == "__main__": |
|
demo = create_interface() |
|
demo.launch() |