Added a module to coalesce adjacent same-speaker segments
This commit is contained in:
@@ -2,6 +2,7 @@ package overlap
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
|
||||
"gitea.maximumdirect.net/eric/seriatim/internal/model"
|
||||
)
|
||||
@@ -18,9 +19,10 @@ func Detect(in model.MergedTranscript) model.MergedTranscript {
|
||||
return in
|
||||
}
|
||||
|
||||
order := sortedSegmentIndices(in.Segments)
|
||||
var groupID int
|
||||
var candidate overlapCandidate
|
||||
for index := range in.Segments {
|
||||
for _, index := range order {
|
||||
segment := in.Segments[index]
|
||||
if !candidate.active {
|
||||
candidate = newCandidate(index, segment)
|
||||
@@ -40,6 +42,17 @@ func Detect(in model.MergedTranscript) model.MergedTranscript {
|
||||
return in
|
||||
}
|
||||
|
||||
func sortedSegmentIndices(segments []model.Segment) []int {
|
||||
indices := make([]int, len(segments))
|
||||
for index := range segments {
|
||||
indices[index] = index
|
||||
}
|
||||
sort.SliceStable(indices, func(i, j int) bool {
|
||||
return model.SegmentLess(segments[indices[i]], segments[indices[j]])
|
||||
})
|
||||
return indices
|
||||
}
|
||||
|
||||
type overlapCandidate struct {
|
||||
active bool
|
||||
indices []int
|
||||
|
||||
Reference in New Issue
Block a user