diff --git a/whisperlivekit/audio_processor.py b/whisperlivekit/audio_processor.py index 862ce54..9232dd3 100644 --- a/whisperlivekit/audio_processor.py +++ b/whisperlivekit/audio_processor.py @@ -368,7 +368,11 @@ class AudioProcessor: if additional_token is SENTINEL: sentinel_found = True break - tokens_to_process.append(additional_token) + elif type(additional_token) is Silence: + self.translation.insert_silence(additional_token.duration) + continue + else: + tokens_to_process.append(additional_token) if tokens_to_process: self.translation.insert_tokens(tokens_to_process) self.translated_segments = await asyncio.to_thread(self.translation.process) diff --git a/whisperlivekit/timed_objects.py b/whisperlivekit/timed_objects.py index 76c5ef8..caa5967 100644 --- a/whisperlivekit/timed_objects.py +++ b/whisperlivekit/timed_objects.py @@ -126,7 +126,7 @@ class Line(TimedText): def to_dict(self): _dict = { - 'speaker': int(self.speaker), + 'speaker': abs(int(self.speaker)), 'text': self.text, 'start': format_time(self.start), 'end': format_time(self.end), @@ -151,7 +151,7 @@ class FrontData(): def to_dict(self): _dict = { 'status': self.status, - 'lines': [line.to_dict() for line in self.lines], + 'lines': [line.to_dict() for line in self.lines if line.text], 'buffer_transcription': self.buffer_transcription, 'buffer_diarization': self.buffer_diarization, 'remaining_time_transcription': self.remaining_time_transcription, diff --git a/whisperlivekit/web/live_transcription.js b/whisperlivekit/web/live_transcription.js index c399295..360b7f6 100644 --- a/whisperlivekit/web/live_transcription.js +++ b/whisperlivekit/web/live_transcription.js @@ -416,10 +416,13 @@ function renderLinesWithBuffer( } if (item.translation) { - currentLineText += `
- ${translationIcon} - ${item.translation} -
`; + currentLineText += ` +
+
+ ${translationIcon} + ${item.translation} +
+
`; } return currentLineText.trim().length > 0 || speakerLabel.length > 0