Added initial segment overlap resolution logic

This commit is contained in:
2026-04-27 15:52:53 -05:00
parent e42a2326e8
commit 1b9f4bd922
16 changed files with 1357 additions and 59 deletions

View File

@@ -77,7 +77,7 @@ func finalizeCandidate(in *model.MergedTranscript, candidate overlapCandidate, c
refs := make([]string, 0, len(candidate.indices))
for _, index := range candidate.indices {
in.Segments[index].OverlapGroupID = groupID
refs = append(refs, segmentRef(in.Segments[index]))
refs = append(refs, SegmentRef(in.Segments[index]))
}
in.OverlapGroups = append(in.OverlapGroups, model.OverlapGroup{
@@ -106,8 +106,15 @@ func distinctSpeakers(segments []model.Segment, indices []int) []string {
return speakers
}
func segmentRef(segment model.Segment) string {
return fmt.Sprintf("%s#%d", segment.Source, segment.SourceSegmentIndex)
// SegmentRef returns the stable overlap reference for a segment.
func SegmentRef(segment model.Segment) string {
if segment.SourceSegmentIndex != nil {
return fmt.Sprintf("%s#%d", segment.Source, *segment.SourceSegmentIndex)
}
if segment.SourceRef != "" {
return segment.SourceRef
}
return segment.Source
}
func clearExisting(in *model.MergedTranscript) {