From cc4f43e887e83acc70991d756a56848c90e31c97 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Wed, 2 Jul 2025 19:04:45 +0200 Subject: [PATCH] openvidu-live-captions: remove bug with participantInfo on transcriptions --- ai-services/openvidu-live-captions/src/app.js | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/ai-services/openvidu-live-captions/src/app.js b/ai-services/openvidu-live-captions/src/app.js index 204f255a..5cd52a09 100644 --- a/ai-services/openvidu-live-captions/src/app.js +++ b/ai-services/openvidu-live-captions/src/app.js @@ -57,30 +57,21 @@ async function joinRoom() { } ); -room.registerTextStreamHandler("lk.transcription", async (reader, participantInfo) => { - const message = await reader.readAll(); - const isFinal = reader.info.attributes["lk.transcription_final"] === "true"; - const trackId = reader.info.attributes["lk.transcribed_track_id"]; + room.registerTextStreamHandler("lk.transcription", async (reader, participantInfo) => { + const message = await reader.readAll(); + const isFinal = reader.info.attributes["lk.transcription_final"] === "true"; + const trackId = reader.info.attributes["lk.transcribed_track_id"]; - if (isFinal) { - // Due to a bug in LiveKit Server the participantInfo object may be empty. - // You can still get the participant owning the audio track like below: - let participant; - if (localParticipant.audioTrackPublications.has(trackId)) { - participant = room.localParticipant; - } else { - participant = room.remoteParticipants.values().find(p => p.audioTrackPublications.has(trackId)); + if (isFinal) { + const speaker = participantInfo.identity == room.localParticipant.identity + ? "You" : participantInfo.identity; + const timestamp = new Date().toLocaleTimeString(); + const captionsTextarea = document.getElementById("captions"); + captionsTextarea.value += `[${timestamp}] ${speaker}: ${message}\n`; + captionsTextarea.scrollTop = captionsTextarea.scrollHeight; } - - const captionsTextarea = document.getElementById("captions"); - const timestamp = new Date().toLocaleTimeString(); - const participantIdentity = - participant == room.localParticipant ? "You" : participant.identity; - captionsTextarea.value += `[${timestamp}] ${participantIdentity}: ${message}\n`; - captionsTextarea.scrollTop = captionsTextarea.scrollHeight; } - } -); + ); try { // Get the room name and participant name from the form