import gradio as gr from gryannote_audio import AudioLabeling from gryannote_pipeline import PipelineSelector from gryannote_rttm import RTTM from pyannote.audio import Pipeline import os def apply_pipeline(pipeline: Pipeline, audio): """Apply specified pipeline on the indicated audio file""" annotations = pipeline(audio) return ((audio, annotations), (audio, annotations)) def update_annotations(data): return rttm.on_edit(data) with gr.Blocks() as demo: gr.Markdown( "[Gryannote](): The [pyannote](https://github.com/pyannote/pyannote-audio) audio labeling tool" ) pipeline_selector = PipelineSelector(token=os.environ["HF_TOKEN"]) pipeline_selector.select( fn=pipeline_selector.on_select, inputs=pipeline_selector, outputs=pipeline_selector, preprocess=False, postprocess=False, ) pipeline_selector.change( fn=pipeline_selector.on_change, inputs=pipeline_selector, outputs=pipeline_selector, preprocess=False, postprocess=False, ) audio_labeling = AudioLabeling( type="filepath", interactive=True, ) run_btn = gr.Button("Run pipeline") rttm = RTTM() audio_labeling.edit( fn=update_annotations, inputs=audio_labeling, outputs=rttm, preprocess=False, postprocess=False, ) run_btn.click( fn=apply_pipeline, inputs=[pipeline_selector, audio_labeling], outputs=[audio_labeling, rttm], ) if __name__ == "__main__": demo.launch()