in python/ts-to-word.py [0:0]
def merge_speaker_segments(input_segment_list):
"""
Merges together consecutive speaker segments unless:
(a) There is a speaker change, or
(b) The gap between segments is greater than our acceptable level of delay
:param input_segment_list: Full time-sorted list of speaker segments
:return: An updated segment list
"""
outputSegmentList = []
lastSpeaker = ""
lastSegment = None
# Step through each of our defined speaker segments
for segment in input_segment_list:
if (segment.segmentSpeaker != lastSpeaker) or \
((segment.segmentStartTime - lastSegment.segmentEndTime) >= START_NEW_SEGMENT_DELAY):
# Simple case - speaker change or > n-second gap means new output segment
outputSegmentList.append(segment)
# This is now our base segment moving forward
lastSpeaker = segment.segmentSpeaker
lastSegment = segment
else:
# Same speaker, short time, need to copy this info to the last one
lastSegment.segmentEndTime = segment.segmentEndTime
lastSegment.segmentText += " " + segment.segmentText
segment.segmentConfidence[0]["text"] = " " + segment.segmentConfidence[0]["text"]
for wordConfidence in segment.segmentConfidence:
lastSegment.segmentConfidence.append(wordConfidence)
return outputSegmentList