From 2f013b47519828b5fa0a29d38052b75607d3c559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=93=D0=BB=D0=B0=D0=B7=D1=83?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Thu, 15 Jan 2026 20:21:06 +0300 Subject: [PATCH] Bump version to 0.5.8 and add silence detection timer for audio processing --- package.json | 2 +- src/utils/openai-sdk.js | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 97cf162..a5e565b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cheating-daddy", "productName": "cheating-daddy", - "version": "0.5.7", + "version": "0.5.8", "description": "cheating daddy", "main": "src/index.js", "scripts": { diff --git a/src/utils/openai-sdk.js b/src/utils/openai-sdk.js index f230d40..3654241 100644 --- a/src/utils/openai-sdk.js +++ b/src/utils/openai-sdk.js @@ -281,6 +281,7 @@ async function sendImageMessage(base64Image, prompt) { let audioChunks = []; let lastAudioTime = 0; const SILENCE_THRESHOLD_MS = 1500; // 1.5 seconds of silence +let silenceCheckTimer = null; async function processAudioChunk(base64Audio, mimeType) { if (!openaiClient) { @@ -294,8 +295,20 @@ async function processAudioChunk(base64Audio, mimeType) { audioChunks.push(buffer); lastAudioTime = now; - // Check for silence (no new audio for SILENCE_THRESHOLD_MS) - // This is a simple approach - in production you'd want proper VAD + // Clear existing timer + if (silenceCheckTimer) { + clearTimeout(silenceCheckTimer); + } + + // Set timer to check for silence + silenceCheckTimer = setTimeout(async () => { + const silenceDuration = Date.now() - lastAudioTime; + if (silenceDuration >= SILENCE_THRESHOLD_MS && audioChunks.length > 0) { + console.log('Silence detected, flushing audio for transcription...'); + await flushAudioAndTranscribe(); + } + }, SILENCE_THRESHOLD_MS); + return { success: true, buffering: true }; }