Compare commits

...

1 Commits

Author SHA1 Message Date
pabloFuente
cc4f43e887 openvidu-live-captions: remove bug with participantInfo on transcriptions 2025-07-02 19:04:45 +02:00

View File

@ -57,30 +57,21 @@ async function joinRoom() {
} }
); );
room.registerTextStreamHandler("lk.transcription", async (reader, participantInfo) => { room.registerTextStreamHandler("lk.transcription", async (reader, participantInfo) => {
const message = await reader.readAll(); const message = await reader.readAll();
const isFinal = reader.info.attributes["lk.transcription_final"] === "true"; const isFinal = reader.info.attributes["lk.transcription_final"] === "true";
const trackId = reader.info.attributes["lk.transcribed_track_id"]; const trackId = reader.info.attributes["lk.transcribed_track_id"];
if (isFinal) { if (isFinal) {
// Due to a bug in LiveKit Server the participantInfo object may be empty. const speaker = participantInfo.identity == room.localParticipant.identity
// You can still get the participant owning the audio track like below: ? "You" : participantInfo.identity;
let participant; const timestamp = new Date().toLocaleTimeString();
if (localParticipant.audioTrackPublications.has(trackId)) { const captionsTextarea = document.getElementById("captions");
participant = room.localParticipant; captionsTextarea.value += `[${timestamp}] ${speaker}: ${message}\n`;
} else { captionsTextarea.scrollTop = captionsTextarea.scrollHeight;
participant = room.remoteParticipants.values().find(p => p.audioTrackPublications.has(trackId));
} }
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 { try {
// Get the room name and participant name from the form // Get the room name and participant name from the form