69 lines
2.1 KiB
Go
69 lines
2.1 KiB
Go
package artifact
|
|
|
|
import (
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/config"
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/model"
|
|
"gitea.maximumdirect.net/eric/seriatim/schema"
|
|
)
|
|
|
|
const (
|
|
ApplicationName = "seriatim"
|
|
Version = "dev"
|
|
)
|
|
|
|
// FromMerged converts the internal merged transcript model into the public
|
|
// serialized output contract.
|
|
func FromMerged(cfg config.Config, merged model.MergedTranscript) schema.Transcript {
|
|
segments := make([]schema.Segment, len(merged.Segments))
|
|
for index, segment := range merged.Segments {
|
|
segments[index] = schema.Segment{
|
|
ID: segment.ID,
|
|
Source: segment.Source,
|
|
SourceSegmentIndex: copyIntPtr(segment.SourceSegmentIndex),
|
|
SourceRef: segment.SourceRef,
|
|
DerivedFrom: append([]string(nil), segment.DerivedFrom...),
|
|
Speaker: segment.Speaker,
|
|
Start: segment.Start,
|
|
End: segment.End,
|
|
Text: segment.Text,
|
|
Categories: append([]string(nil), segment.Categories...),
|
|
OverlapGroupID: segment.OverlapGroupID,
|
|
}
|
|
}
|
|
|
|
overlapGroups := make([]schema.OverlapGroup, len(merged.OverlapGroups))
|
|
for index, group := range merged.OverlapGroups {
|
|
overlapGroups[index] = schema.OverlapGroup{
|
|
ID: group.ID,
|
|
Start: group.Start,
|
|
End: group.End,
|
|
Segments: append([]string(nil), group.Segments...),
|
|
Speakers: append([]string(nil), group.Speakers...),
|
|
Class: group.Class,
|
|
Resolution: group.Resolution,
|
|
}
|
|
}
|
|
|
|
return schema.Transcript{
|
|
Metadata: schema.Metadata{
|
|
Application: ApplicationName,
|
|
Version: Version,
|
|
InputReader: cfg.InputReader,
|
|
InputFiles: append([]string(nil), cfg.InputFiles...),
|
|
PreprocessingModules: append([]string(nil), cfg.PreprocessingModules...),
|
|
PostprocessingModules: append([]string(nil), cfg.PostprocessingModules...),
|
|
OutputModules: append([]string(nil), cfg.OutputModules...),
|
|
},
|
|
Segments: segments,
|
|
OverlapGroups: overlapGroups,
|
|
}
|
|
}
|
|
|
|
func copyIntPtr(value *int) *int {
|
|
if value == nil {
|
|
return nil
|
|
}
|
|
copied := *value
|
|
return &copied
|
|
}
|