handleCaptionTranscription method
Implementation
void handleCaptionTranscription(CaptionData data) {
final name = getParticipantNameByIdentity(data.participantIdentity);
final isFinal = data.speechEventType == Constant.captionAgentFinalTranscript;
final isPartial = data.speechEventType == Constant.captionAgentInterimTranscript;
if (isFinal) {
if (particalTranscription != null) {
// Finalize previous partial
particalTranscription = particalTranscription!.copyWith(
name: name,
transcription: data.text,
isFinal: true,
sourceLang: transcriptionLanguageData?.sourceLang ?? data.language,
targetLang: translationLanguage?.code ??
transcriptionLanguageData?.sourceLang ??
data.language,
);
_updateTranscriptionInList(particalTranscription!);
if (particalTranscription!.sourceLang !=
particalTranscription!.targetLang) {
translateText(particalTranscription!);
}
} else {
final newTranscription = TranscriptionModel(
id: const Uuid().v4(),
name: name,
transcription: data.text,
timestamp: Utils.formatTimestampToTime(
DateTime.now().millisecondsSinceEpoch),
isFinal: true,
sourceLang: transcriptionLanguageData?.sourceLang ?? data.language,
targetLang: translationLanguage?.code ??
transcriptionLanguageData?.sourceLang ??
data.language,
);
addTranscription(newTranscription);
if (newTranscription.sourceLang != newTranscription.targetLang) {
translateText(newTranscription);
}
}
particalTranscription = null;
}
// -------------------- PARTIAL ---------------------
else if (isPartial) {
if (particalTranscription != null) {
// Update existing partial
particalTranscription = particalTranscription!.copyWith(
name: name,
transcription: data.text,
isFinal: false,
sourceLang: transcriptionLanguageData?.sourceLang ?? data.language,
targetLang: translationLanguage?.code ??
transcriptionLanguageData?.sourceLang ??
data.language,
);
_updateTranscriptionInList(particalTranscription!);
} else {
// Create new partial
particalTranscription = TranscriptionModel(
id: const Uuid().v4(),
name: name,
transcription: data.text,
timestamp: Utils.formatTimestampToTime(
DateTime.now().millisecondsSinceEpoch),
isFinal: false,
sourceLang: transcriptionLanguageData?.sourceLang ?? data.language,
targetLang: translationLanguage?.code ??
transcriptionLanguageData?.sourceLang ??
data.language,
);
addTranscription(particalTranscription!);
}
}
}