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 ключ.",
"settings.voice.page.tooltip.custom": "OpenAI-сумісний сервер, наприклад Kokoro.",