hide noisy bit talkers
This commit is contained in:
29
app.js
29
app.js
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user