in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/internal/audio/DefaultAudioClientObserver.kt [225:289]
override fun onTranscriptEventsReceived(events: Array<out TranscriptEventInternal>?) {
if (events == null) return
events.forEach { rawEvent ->
val event: TranscriptEvent?
when (rawEvent) {
is TranscriptionStatusInternal -> {
event = TranscriptionStatus(
TranscriptionStatusType.from(rawEvent.type.value),
rawEvent.eventTimeMs,
rawEvent.transcriptionRegion,
rawEvent.transcriptionConfiguration,
rawEvent.message
)
}
is TranscriptInternal -> {
val results = mutableListOf<TranscriptResult>()
rawEvent.results.forEach { rawResult ->
val alternatives = mutableListOf<TranscriptAlternative>()
rawResult.alternatives.forEach { rawAlternative ->
val items = mutableListOf<TranscriptItem>()
rawAlternative.items.forEach { rawItem ->
val item = TranscriptItem(
TranscriptItemType.from(rawItem.type.value),
rawItem.startTimeMs,
rawItem.endTimeMs,
AttendeeInfo(
rawItem.attendee.attendeeId,
rawItem.attendee.externalUserId
),
rawItem.content,
rawItem.vocabularyFilterMatch
)
items.add(item)
}
val alternative = TranscriptAlternative(
items.toTypedArray(),
rawAlternative.transcript
)
alternatives.add(alternative)
}
val result = TranscriptResult(
rawResult.resultId,
rawResult.channelId,
rawResult.isPartial,
rawResult.startTimeMs,
rawResult.endTimeMs,
alternatives.toTypedArray()
)
results.add(result)
}
event = Transcript(results.toTypedArray())
} else -> {
logger.error(TAG, "Received transcript event in unknown format")
event = null
}
}
event?.let { transcriptEvent ->
ObserverUtils.notifyObserverOnMainThread(transcriptEventObservers) {
it.onTranscriptEventReceived(transcriptEvent)
}
}
}
}