File size: 4,567 Bytes
8919734
 
 
 
 
1989564
8919734
1989564
8919734
 
1989564
8919734
 
 
1989564
 
 
 
 
 
 
 
 
8919734
1989564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8919734
1989564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8919734
 
 
1989564
 
8919734
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import gradio as gr
from gryannote_audio import AudioLabeling
from pyannote.audio import Pipeline
import os

def apply_pipeline(audio):
    """Apply specified pipeline on the indicated audio file"""
    pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1", use_auth_token=os.environ["HF_TOKEN"])
    annotations = pipeline(audio)

    return (audio, annotations)


with gr.Blocks() as demo:
    with gr.Row(equal_height=True):
        with gr.Row():
            with gr.Column(scale=1):
                gr.Markdown(
                    '<a href="https://github.com/clement-pages/gryannote"><img src="https://repository-images.githubusercontent.com/744648524/e841cef0-fbd9-45b0-9bce-536a1822c7b1" alt="gryannote logo" width="220"/></a>',
                )
        with gr.Column(scale=6):
                gr.Markdown('<h1 style="font-size: 3em;">gryannote</h1>')  
                gr.Markdown("<h2>Make the audio labeling process easier and faster! </h2>")

    with gr.Row():
        with gr.Column():
            gr.Markdown(
                "To use the component, start by loading or recording audio."
                "Then apply the diarization pipeline (here [pyannote/speaker-diarization-3.1](https://huggingface.co/pyannote/speaker-diarization-3.1))" 
                "or double-click directly on the waveform. The annotations produced can be edited."
                "You can also use keyboard shortcuts to speed things up!"
            )
            gr.Markdown()
            gr.Markdown()
            gr.Markdown('<img src="https://github.com/clement-pages/gryannote/blob/main/docs/assets/poster-interspeech.jpg?raw=true" alt="gryannote poster"/>')
        with gr.Column():
            audio_labeling = AudioLabeling(
                type="filepath",
                interactive=True,
            )
            gr.Markdown()
            gr.Markdown()
            run_btn = gr.Button("Run pipeline")

            gr.Markdown(
                """| Shortcut                                      | Action                                                                |
                    | --------------------------------------------- | --------------------------------------------------------------------- |
                    | `SPACE`                                       | Toggle play / pause                                                   |
                    | `ENTER`                                       | Create annotation at current time                                     |
                    | `SHIFT + ENTER`                               | Split annotation at current time                                      |
                    | `A`, `B`, `C`, ..., `Z`                       | Set active label. If there is a selected annotation, update its label |
                    | `LEFT` or `RIGHT`                             | Edit start time of selected annotation (if any) or move time cursor   |
                    | `SHIFT + LEFT` or `SHIFT + RIGHT`             | Same, but faster                                                      |
                    |`ALT + LEFT` or `ALT + RIGHT`                  | Edit end time of selected annotation                                  |
                    | `SHIFT + ALT + LEFT` or `SHIFT + ALT + RIGHT` | Same, but faster                                                      |
                    | `TAB`                                         | Select next annotation                                                |
                    | `SHIFT + TAB`                                 | Select previous annotation                                            |
                    |`BACKSPACE`                                    | Delete selected annotation and select the previous one                |
                    |`DELETE` or `SHIFT + BACKSPACE`                | Delete selected region and select the next one                        |
                    |`ESC`                                          | Unselect selected annotation and / or label                           |
                    | `UP` or `DOWN`                                | Zoom in/out                                                           |
                    | `F2`                                          | Open settings for the active label                                    |
                    """
            )

    run_btn.click(
        fn=apply_pipeline,
        inputs=audio_labeling,
        outputs=audio_labeling,
    )


if __name__ == "__main__":
    demo.launch()