diff --git a/src/tools/voice_engine.py b/src/tools/voice_engine.py index 9bd1b12..b2a8863 100644 --- a/src/tools/voice_engine.py +++ b/src/tools/voice_engine.py @@ -119,7 +119,9 @@ class Engine: f.write(audio_bytes) path = f.name try: - segments, info = self.stt_model.transcribe(path, language=language or None, beam_size=5, vad_filter=True) + segments, info = self.stt_model.transcribe( + path, language=language or None, beam_size=5, vad_filter=True, condition_on_previous_text=False, + ) text = ''.join(seg.text for seg in segments).strip() return text, (info.language if info else language) finally: @@ -140,7 +142,9 @@ class Engine: # ── Streaming STT (partial decode of an accumulating PCM buffer) ────── def transcribe_pcm(self, pcm: bytes, language: str): audio = pcm16_bytes_to_float(pcm) - segments, info = self.stt_model.transcribe(audio, language=language or None, beam_size=1, vad_filter=True) + segments, info = self.stt_model.transcribe( + audio, language=language or None, beam_size=1, vad_filter=True, condition_on_previous_text=False, + ) text = ''.join(seg.text for seg in segments).strip() return text, (info.language if info else language) diff --git a/web-ui/app.js b/web-ui/app.js index 3730f4e..4793b76 100644 --- a/web-ui/app.js +++ b/web-ui/app.js @@ -1561,6 +1561,7 @@ async function sendChat(queuedMessage = null) { const token = event.text || event.content || event.delta || ''; if (token) { partialContent += token; + if (window._voiceCallOnToken) window._voiceCallOnToken(partialContent); } break; } @@ -1813,6 +1814,11 @@ async function sendChat(queuedMessage = null) { if (s.finalAnswer) { addProcessEntry('final', s.finalAnswer); partialContent = s.finalAnswer; // track for stop + // partialContent just got replaced wholesale (not appended to), so + // any voice-call spokenUpTo offset computed against the old string + // is now meaningless — reset before feeding the new text through. + if (window._voiceCallResetSpoken) window._voiceCallResetSpoken(); + if (window._voiceCallOnToken) window._voiceCallOnToken(partialContent); } break; } @@ -1903,6 +1909,8 @@ async function sendChat(queuedMessage = null) { } } + if (window._voiceCallOnTurnDone) window._voiceCallOnTurnDone(finalReply || partialContent); + if (finalReply) { // Append file cards for any attachments sent via the 'files' SSE event if (turnFileLinks.length > 0) { diff --git a/web-ui/index.html b/web-ui/index.html index f04d990..6bba984 100644 --- a/web-ui/index.html +++ b/web-ui/index.html @@ -387,10 +387,18 @@ +
+