import gradio as gr import os import torch import io from pyannote.audio import Pipeline from pyannote.audio import Audio from pyannote.audio.pipelines.utils.hook import TimingHook from pyannote.core import Segment pipeline = Pipeline.from_pretrained( "pyannote/speaker-diarization-3.1", use_auth_token=os.environ['api']) def process_audio(audio_file): # Save the uploaded audio file to a temporary location temp_file = "temp_audio.wav" with open(temp_file, "wb") as f: f.write(audio_file.read()) # Use the diarization pipeline to process the audio file diarization = pipeline(temp_file) # Remove the temporary file os.remove(temp_file) # Return the diarization output return diarization with gr.Blocks() as demo: audio_input = gr.File(label="Upload Audio", file_types=["audio"]) process_button = gr.Button("Process") diarization_output = gr.JSON(label="Diarization Output") process_button.click(fn=process_audio, inputs=audio_input, outputs=diarization_output) demo.launch()