diff --git a/src/main/services/VoiceModeService.ts b/src/main/services/VoiceModeService.ts index 41d01da..47e6f54 100644 --- a/src/main/services/VoiceModeService.ts +++ b/src/main/services/VoiceModeService.ts @@ -536,13 +536,9 @@ class VoiceModeService extends EventEmitter { this._audioStarted = false this._errorEmitted = false - // 약간의 딜레이 후 IDLE로 전이 (UI 애니메이션용) - setTimeout(() => { - if (!this._session) { - this._setRecognitionState(RecognitionState.IDLE) - this._setAudioState(AudioState.IDLE) - } - }, 200) + // 즉시 IDLE로 전이 (딜레이는 race condition 유발) + this._setRecognitionState(RecognitionState.IDLE) + this._setAudioState(AudioState.IDLE) } // ── 에러 처리 ────────────────────────────────────────── @@ -621,10 +617,10 @@ class VoiceModeService extends EventEmitter { } } - private async _handleRelease(action: VoiceAction): Promise { - if (action.mode === 'dictation' && this.isActive) { - // Dictation: hold-to-talk — release로 종료 (200ms 딜레이) - await new Promise((resolve) => setTimeout(resolve, 200)) + private async _handleRelease(_action: VoiceAction): Promise { + if (_action.mode === 'dictation' && this.isActive) { + // Dictation: hold-to-talk — release로 즉시 종료 + // Speakly 패턴: 딜레이 없이 즉시 stop (딜레이가 race condition 유발) await this.stopSession() } // HandsFree: release 무시