hide noisy bit talkers

This commit is contained in:
5shekel
2026-01-18 12:49:47 +02:00
parent 88842d2368
commit 3a3e0df287
2 changed files with 27 additions and 7 deletions

29
app.js
View File

@@ -44,11 +44,21 @@ if (CONFIG.speaker_merges) {
});
}
// Build speaker hide set for O(1) lookups
const speakerHideSet = new Set(CONFIG.speaker_hide || []);
// Resolve speaker ID through merge map
function resolveSpeaker(speakerId) {
return speakerMergeMap.get(speakerId) || speakerId;
}
// Check if speaker should be hidden (checks both raw and resolved ID)
function isSpeakerHidden(speakerId) {
if (!speakerId) return false;
const resolved = resolveSpeaker(speakerId);
return speakerHideSet.has(speakerId) || speakerHideSet.has(resolved);
}
// Set audio source from config
audio.src = CONFIG.audio_path;
@@ -130,10 +140,13 @@ function buildIntervals(segments) {
const raw = [];
segments.forEach((segment) => {
const segmentSpeaker = resolveSpeaker(segment.speaker || null);
// Skip hidden speakers at segment level
if (isSpeakerHidden(segmentSpeaker)) return;
if (Array.isArray(segment.words) && segment.words.length) {
segment.words.forEach((word) => {
const speaker = resolveSpeaker(word.speaker || segmentSpeaker);
if (!speaker || word.start == null || word.end == null) return;
// Skip hidden speakers at word level
if (!speaker || word.start == null || word.end == null || isSpeakerHidden(speaker)) return;
raw.push({ start: word.start, end: word.end, speaker });
});
return;
@@ -886,12 +899,14 @@ async function init() {
const response = await fetch(transcriptPath);
const transcript = await response.json();
state.intervals = buildIntervals(transcript.segments || []);
state.segments = (transcript.segments || []).map((segment) => ({
start: segment.start,
end: segment.end,
text: segment.text || "",
speaker: segment.speaker,
}));
state.segments = (transcript.segments || [])
.filter((segment) => !isSpeakerHidden(segment.speaker))
.map((segment) => ({
start: segment.start,
end: segment.end,
text: segment.text || "",
speaker: segment.speaker,
}));
const { speakers, speakerMap } = buildSpeakers(state.intervals);
state.speakers = speakers;
state.speakerMap = speakerMap;

View File

@@ -51,6 +51,11 @@ const CONFIG = {
"SPEAKER_00": ["SPEAKER_03"],
"SPEAKER_22": ["SPEAKER_21"],
},
// Noisy talkers to hide from transcript and visualization
speaker_hide: [
"SPEAKER_13","SPEAKER_15"
],
// ===================
// TRANSCRIPT DEFAULTS