fix: voice input in Electron - local Whisper STT + network error handling

- Add local Whisper STT via Transformers.js with Web Worker (no UI freeze)
- Default sttProvider to 'local' in Electron (browser STT unavailable)
- Fix infinite toast loop: stop auto-restart on network errors
- Add retry limit with exponential backoff for transient STT errors
- Append voice transcript to input field (append-inline), not replace
- Add model catalog with download/load button in Voice Settings
This commit is contained in:
Bohdan Triapitsyn
2026-05-14 01:19:52 +03:00
parent ceb5bbd5dd
commit ef85c63336
18 changed files with 1114 additions and 89 deletions
@@ -1301,6 +1301,14 @@ export const settingsDict = {
'settings.voice.page.provider.custom': '사용자 정의',
'settings.voice.page.provider.say': 'Say',
'settings.voice.page.provider.server': '서버',
'settings.voice.page.provider.wasm': '로컬',
'settings.voice.page.stt.wasmModel': 'Whisper 모델',
'settings.voice.page.stt.wasmLoaded': '모델 로드됨',
'settings.voice.page.stt.wasmDownloading': '모델 다운로드 중...',
'settings.voice.page.stt.wasmLoading': '모델 로드 중...',
'settings.voice.page.stt.wasmNotLoaded': '첫 음성 사용 시 모델이 다운로드됩니다',
'settings.voice.page.stt.wasmDownload': '다운로드',
'settings.voice.page.stt.wasmRetry': '재시도',
'settings.voice.page.tooltip.browser': '무료, 오프라인, 모바일 지원 제한.',
'settings.voice.page.tooltip.openai': '고품질, 모바일 지원, API key 필요.',
'settings.voice.page.tooltip.custom': 'OpenAI 호환 서버(예: Kokoro).',