clement-pages commited on
Commit
b20173a
·
2 Parent(s): 8aa1b4b c058955

Merge branch 'main' of github.com:clement-pages/hf-separation-pipeline-visualization

Browse files
pyannote_viewer/frontend/package-lock.json CHANGED
@@ -17,6 +17,7 @@
17
  "@gradio/upload": "0.8.5",
18
  "@gradio/utils": "0.3.2",
19
  "@gradio/wasm": "0.10.0",
 
20
  "@types/wavesurfer.js": "^6.0.10",
21
  "extendable-media-recorder": "^9.0.0",
22
  "extendable-media-recorder-wav-encoder": "^7.0.76",
@@ -621,6 +622,12 @@
621
  "path-browserify": "^1.0.1"
622
  }
623
  },
 
 
 
 
 
 
624
  "node_modules/@isaacs/cliui": {
625
  "version": "8.0.2",
626
  "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
 
17
  "@gradio/upload": "0.8.5",
18
  "@gradio/utils": "0.3.2",
19
  "@gradio/wasm": "0.10.0",
20
+ "@gryannote/wavesurfer.js": "^7.8.13",
21
  "@types/wavesurfer.js": "^6.0.10",
22
  "extendable-media-recorder": "^9.0.0",
23
  "extendable-media-recorder-wav-encoder": "^7.0.76",
 
622
  "path-browserify": "^1.0.1"
623
  }
624
  },
625
+ "node_modules/@gryannote/wavesurfer.js": {
626
+ "version": "7.8.13",
627
+ "resolved": "https://registry.npmjs.org/@gryannote/wavesurfer.js/-/wavesurfer.js-7.8.13.tgz",
628
+ "integrity": "sha512-4ZlUZhU+dmys3o/j5A087stnGthjKL/xx1dBv+wvt29idBoZ+oPbxc5AgRTF7YRZ6fhwUkm8kSEoZQ1C0p3P1g==",
629
+ "license": "BSD-3-Clause"
630
+ },
631
  "node_modules/@isaacs/cliui": {
632
  "version": "8.0.2",
633
  "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
pyannote_viewer/frontend/package.json CHANGED
@@ -15,6 +15,7 @@
15
  "@gradio/upload": "0.8.5",
16
  "@gradio/utils": "0.3.2",
17
  "@gradio/wasm": "0.10.0",
 
18
  "@types/wavesurfer.js": "^6.0.10",
19
  "extendable-media-recorder": "^9.0.0",
20
  "extendable-media-recorder-wav-encoder": "^7.0.76",
 
15
  "@gradio/upload": "0.8.5",
16
  "@gradio/utils": "0.3.2",
17
  "@gradio/wasm": "0.10.0",
18
+ "@gryannote/wavesurfer.js": "^7.8.13",
19
  "@types/wavesurfer.js": "^6.0.10",
20
  "extendable-media-recorder": "^9.0.0",
21
  "extendable-media-recorder-wav-encoder": "^7.0.76",
pyannote_viewer/frontend/player/AudioPlayer.svelte CHANGED
@@ -2,9 +2,9 @@
2
  import { onMount } from "svelte";
3
  import { Music } from "@gradio/icons";
4
  import { format_time, type I18nFormatter } from "@gradio/utils";
5
- import WaveSurfer from "wavesurfer.js";
6
- import RegionsPlugin from "wavesurfer.js/dist/plugins/regions";
7
- import { skip_audio } from "../shared/utils";
8
  import WaveformControls from "../shared/WaveformControls.svelte";
9
  import { Empty } from "@gradio/atoms";
10
  import type { WaveformOptions, PipelineOutput } from "../shared/types";
@@ -73,7 +73,6 @@
73
  $: waveform?.on("decode", (duration: any) => {
74
  audioDecoded = true;
75
  const numChannels = waveform.getDecodedData().numberOfChannels;
76
- console.log(numChannels);
77
  audio_duration = duration;
78
  durationRef && (durationRef.textContent = format_time(duration));
79
 
@@ -88,19 +87,20 @@
88
 
89
  // add diarization annotation on each source:
90
  if(!wsRegion){
91
- wsRegion = waveform.registerPlugin(RegionsPlugin.create())
92
  value.segments.forEach(segment => {
93
  const region = wsRegion.addRegion({
94
  start: segment.start,
95
  end: segment.end,
96
- channelIdx: value.multichannel ? segment.channel : 0,
97
  drag: false,
98
  resize: false,
99
  color: colors[segment.channel % colors.length],
100
  });
101
-
102
- const regionHeight = 100 / (value.multichannel ? numChannels : 1);
103
- region.element.style.cssText += `height: ${regionHeight}% !important;`;
 
104
  // TODO: Can we do better than force region color ?
105
  region.element.style.cssText += `background-color: ${region.color} !important;`;
106
  });
 
2
  import { onMount } from "svelte";
3
  import { Music } from "@gradio/icons";
4
  import { format_time, type I18nFormatter } from "@gradio/utils";
5
+ import WaveSurfer from "@gryannote/wavesurfer.js";
6
+ import RegionsPlugin, {type Region} from "@gryannote/wavesurfer.js/dist/plugins/regions";
7
+ import { skip_audio, process_audio } from "../shared/utils";
8
  import WaveformControls from "../shared/WaveformControls.svelte";
9
  import { Empty } from "@gradio/atoms";
10
  import type { WaveformOptions, PipelineOutput } from "../shared/types";
 
73
  $: waveform?.on("decode", (duration: any) => {
74
  audioDecoded = true;
75
  const numChannels = waveform.getDecodedData().numberOfChannels;
 
76
  audio_duration = duration;
77
  durationRef && (durationRef.textContent = format_time(duration));
78
 
 
87
 
88
  // add diarization annotation on each source:
89
  if(!wsRegion){
90
+ wsRegion = waveform.registerPlugin(RegionsPlugin.create({avoidOverlap:!value.multichannel}))
91
  value.segments.forEach(segment => {
92
  const region = wsRegion.addRegion({
93
  start: segment.start,
94
  end: segment.end,
95
+ channelIdx: value.multichannel ? segment.channel : -1,
96
  drag: false,
97
  resize: false,
98
  color: colors[segment.channel % colors.length],
99
  });
100
+ if(value.multichannel){
101
+ const regionHeight = 100 / numChannels;
102
+ region.element.style.cssText += `height: ${regionHeight}% !important;`;
103
+ }
104
  // TODO: Can we do better than force region color ?
105
  region.element.style.cssText += `background-color: ${region.color} !important;`;
106
  });
pyannote_viewer/frontend/recorder/AudioRecorder.svelte CHANGED
@@ -2,12 +2,12 @@
2
  import { onMount } from "svelte";
3
  import type { I18nFormatter } from "@gradio/utils";
4
  import { createEventDispatcher } from "svelte";
5
- import WaveSurfer from "wavesurfer.js";
6
  import { skip_audio, process_audio } from "../shared/utils";
7
- import WSRecord from "wavesurfer.js/dist/plugins/record.js";
8
  import WaveformControls from "../shared/WaveformControls.svelte";
9
  import WaveformRecordControls from "../shared/WaveformRecordControls.svelte";
10
- import RecordPlugin from "wavesurfer.js/dist/plugins/record.js";
11
  import type { WaveformOptions } from "../shared/types";
12
  import { format_time } from "@gradio/utils";
13
 
 
2
  import { onMount } from "svelte";
3
  import type { I18nFormatter } from "@gradio/utils";
4
  import { createEventDispatcher } from "svelte";
5
+ import WaveSurfer from "@gryannote/wavesurfer.js";
6
  import { skip_audio, process_audio } from "../shared/utils";
7
+ import WSRecord from "@gryannote/wavesurfer.js/dist/plugins/record.js";
8
  import WaveformControls from "../shared/WaveformControls.svelte";
9
  import WaveformRecordControls from "../shared/WaveformRecordControls.svelte";
10
+ import RecordPlugin from "@gryannote/wavesurfer.js/dist/plugins/record.js";
11
  import type { WaveformOptions } from "../shared/types";
12
  import { format_time } from "@gradio/utils";
13
 
pyannote_viewer/frontend/shared/DeviceSelect.svelte CHANGED
@@ -1,5 +1,5 @@
1
  <script lang="ts">
2
- import RecordPlugin from "wavesurfer.js/dist/plugins/record.js";
3
  import type { I18nFormatter } from "@gradio/utils";
4
  import { createEventDispatcher } from "svelte";
5
 
 
1
  <script lang="ts">
2
+ import RecordPlugin from "@gryannote/wavesurfer.js/dist/plugins/record.js";
3
  import type { I18nFormatter } from "@gradio/utils";
4
  import { createEventDispatcher } from "svelte";
5
 
pyannote_viewer/frontend/shared/VolumeControl.svelte CHANGED
@@ -1,6 +1,6 @@
1
  <script lang="ts">
2
  import { onMount } from "svelte";
3
- import WaveSurfer from "wavesurfer.js";
4
 
5
  export let currentVolume = 1;
6
  export let show_volume_slider = false;
 
1
  <script lang="ts">
2
  import { onMount } from "svelte";
3
+ import WaveSurfer from "@gryannote/wavesurfer.js";
4
 
5
  export let currentVolume = 1;
6
  export let show_volume_slider = false;
pyannote_viewer/frontend/shared/WaveformControls.svelte CHANGED
@@ -2,10 +2,10 @@
2
  import { Play, Pause, Forward, Backward, Undo, Trim } from "@gradio/icons";
3
  import { get_skip_rewind_amount } from "../shared/utils";
4
  import type { I18nFormatter } from "@gradio/utils";
5
- import WaveSurfer from "wavesurfer.js";
6
  import RegionsPlugin, {
7
  type Region
8
- } from "wavesurfer.js/dist/plugins/regions.js";
9
  import type { WaveformOptions } from "./types";
10
  import VolumeLevels from "./VolumeLevels.svelte";
11
  import VolumeControl from "./VolumeControl.svelte";
 
2
  import { Play, Pause, Forward, Backward, Undo, Trim } from "@gradio/icons";
3
  import { get_skip_rewind_amount } from "../shared/utils";
4
  import type { I18nFormatter } from "@gradio/utils";
5
+ import WaveSurfer from "@gryannote/wavesurfer.js";
6
  import RegionsPlugin, {
7
  type Region
8
+ } from "@gryannote/wavesurfer.js/dist/plugins/regions.js";
9
  import type { WaveformOptions } from "./types";
10
  import VolumeLevels from "./VolumeLevels.svelte";
11
  import VolumeControl from "./VolumeControl.svelte";
pyannote_viewer/frontend/shared/WaveformRecordControls.svelte CHANGED
@@ -1,7 +1,7 @@
1
  <script lang="ts">
2
  import { Pause } from "@gradio/icons";
3
  import type { I18nFormatter } from "@gradio/utils";
4
- import RecordPlugin from "wavesurfer.js/dist/plugins/record.js";
5
  import DeviceSelect from "./DeviceSelect.svelte";
6
 
7
  export let record: RecordPlugin;
 
1
  <script lang="ts">
2
  import { Pause } from "@gradio/icons";
3
  import type { I18nFormatter } from "@gradio/utils";
4
+ import RecordPlugin from "@gryannote/wavesurfer.js/dist/plugins/record.js";
5
  import DeviceSelect from "./DeviceSelect.svelte";
6
 
7
  export let record: RecordPlugin;
pyannote_viewer/frontend/shared/utils.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type WaveSurfer from "wavesurfer.js";
2
  import { audioBufferToWav } from "./audioBufferToWav";
3
 
4
  export interface LoadedParams {
 
1
+ import type WaveSurfer from "@gryannote/wavesurfer.js";
2
  import { audioBufferToWav } from "./audioBufferToWav";
3
 
4
  export interface LoadedParams {
pyannote_viewer/frontend/streaming/StreamAudio.svelte CHANGED
@@ -1,8 +1,8 @@
1
  <script lang="ts">
2
  import { onMount } from "svelte";
3
  import type { I18nFormatter } from "@gradio/utils";
4
- import WaveSurfer from "wavesurfer.js";
5
- import RecordPlugin from "wavesurfer.js/dist/plugins/record.js";
6
  import type { WaveformOptions } from "../shared/types";
7
  import DeviceSelect from "../shared/DeviceSelect.svelte";
8
 
 
1
  <script lang="ts">
2
  import { onMount } from "svelte";
3
  import type { I18nFormatter } from "@gradio/utils";
4
+ import WaveSurfer from "@gryannote/wavesurfer.js";
5
+ import RecordPlugin from "@gryannote/wavesurfer.js/dist/plugins/record.js";
6
  import type { WaveformOptions } from "../shared/types";
7
  import DeviceSelect from "../shared/DeviceSelect.svelte";
8