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:
@@ -604,7 +604,7 @@ export const createSettingsHelpers = (dependencies) => {
|
||||
|
||||
if (typeof candidate.sttProvider === 'string') {
|
||||
const provider = candidate.sttProvider.trim();
|
||||
if (provider === 'browser' || provider === 'server') {
|
||||
if (provider === 'browser' || provider === 'server' || provider === 'wasm') {
|
||||
result.sttProvider = provider;
|
||||
}
|
||||
}
|
||||
@@ -620,6 +620,12 @@ export const createSettingsHelpers = (dependencies) => {
|
||||
result.sttModel = trimmed;
|
||||
}
|
||||
}
|
||||
if (typeof candidate.wasmSttModel === 'string') {
|
||||
const trimmed = candidate.wasmSttModel.trim();
|
||||
if (trimmed.length <= 256) {
|
||||
result.wasmSttModel = trimmed;
|
||||
}
|
||||
}
|
||||
if (typeof candidate.sttLanguage === 'string') {
|
||||
const trimmed = candidate.sttLanguage.trim();
|
||||
if (trimmed.length <= STT_LANGUAGE_MAX_LENGTH) {
|
||||
|
||||
Reference in New Issue
Block a user