From dda072176fb7d945c0c60e5ee3161c3aeb5b1ee9 Mon Sep 17 00:00:00 2001 From: Charles Zablit Date: Mon, 3 Oct 2022 16:24:15 +0200 Subject: [PATCH] fix: repeated strings in VOSK transcription results (#449) * fix: repeated strings in VOSK transcription results * chore: add documentation * chore: remove unrelated changes * fix: send the final result, no matter what Thanks for the review of @TomDurrant-yt --- .../transcription/VoskTranscriptionService.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jitsi/jigasi/transcription/VoskTranscriptionService.java b/src/main/java/org/jitsi/jigasi/transcription/VoskTranscriptionService.java index 657685b0..b422a674 100644 --- a/src/main/java/org/jitsi/jigasi/transcription/VoskTranscriptionService.java +++ b/src/main/java/org/jitsi/jigasi/transcription/VoskTranscriptionService.java @@ -175,6 +175,12 @@ public class VoskWebsocketStreamingSession */ private final List listeners = new ArrayList<>(); + /** + * Latest assigned UUID to a transcription result. + * A new one has to be generated whenever a definitive result is received. + */ + private UUID uuid = UUID.randomUUID(); + VoskWebsocketStreamingSession(String debugName) throws Exception { @@ -213,20 +219,26 @@ public void onMessage(String msg) partial = false; result = obj.getString("text"); } - if (!result.isEmpty() && !result.equals(lastResult)) + + if (!result.isEmpty() && (!partial || !result.equals(lastResult))) { lastResult = result; for (TranscriptionListener l : listeners) { l.notify(new TranscriptionResult( null, - UUID.randomUUID(), + this.uuid, partial, "C", 1.0, new TranscriptionAlternative(result))); } } + + if (!partial) + { + this.uuid = UUID.randomUUID(); + } } @OnWebSocketError