clement-pages
commited on
Merge branch 'main' of github.com:clement-pages/hf-separation-pipeline-visualization
Browse files- pyannote_viewer/frontend/package-lock.json +7 -0
- pyannote_viewer/frontend/package.json +1 -0
- pyannote_viewer/frontend/player/AudioPlayer.svelte +9 -9
- pyannote_viewer/frontend/recorder/AudioRecorder.svelte +3 -3
- pyannote_viewer/frontend/shared/DeviceSelect.svelte +1 -1
- pyannote_viewer/frontend/shared/VolumeControl.svelte +1 -1
- pyannote_viewer/frontend/shared/WaveformControls.svelte +2 -2
- pyannote_viewer/frontend/shared/WaveformRecordControls.svelte +1 -1
- pyannote_viewer/frontend/shared/utils.ts +1 -1
- pyannote_viewer/frontend/streaming/StreamAudio.svelte +2 -2
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 :
|
97 |
drag: false,
|
98 |
resize: false,
|
99 |
color: colors[segment.channel % colors.length],
|
100 |
});
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
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 |
|