From 7999e66c9c78ada3666eb7cea7c22a352bb4cbf0 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 24 Jun 2026 02:30:51 +0800
Subject: [PATCH] Add cancellable model downloads
---
privatevoice.src/internal/config/config.go | 39 +++++++++++++++++++++++++++++++++++++--
1 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/privatevoice.src/internal/config/config.go b/privatevoice.src/internal/config/config.go
index 62b4673..e3e15c8 100755
--- a/privatevoice.src/internal/config/config.go
+++ b/privatevoice.src/internal/config/config.go
@@ -9,8 +9,12 @@
)
const (
- HotkeyModeTap = "tap"
- HotkeyModeHold = "hold"
+ HotkeyModeTap = "tap"
+ HotkeyModeHold = "hold"
+ LanguageModeAuto = "auto"
+ LanguageModeManual = "manual"
+ ModelSelectionModeAuto = "auto"
+ ModelSelectionModeManual = "manual"
)
// Config holds the application configuration, compatible with the WPF version's config.json.
@@ -25,6 +29,9 @@
IndicatorX int `json:"IndicatorX,omitempty"`
IndicatorY int `json:"IndicatorY,omitempty"`
SelectedModelID string `json:"SelectedModelID,omitempty"`
+ ModelSelectionMode string `json:"ModelSelectionMode,omitempty"`
+ LanguageMode string `json:"LanguageMode,omitempty"`
+ LanguageID string `json:"LanguageID,omitempty"`
ModelDownloadUrl string `json:"ModelDownloadUrl"`
FallbackModelDownloadUrl string `json:"FallbackModelDownloadUrl"`
}
@@ -39,6 +46,9 @@
HideDockIcon: true,
CopyToClipboard: true,
SelectedModelID: model.DefaultModelID,
+ ModelSelectionMode: ModelSelectionModeAuto,
+ LanguageMode: LanguageModeAuto,
+ LanguageID: model.DefaultLanguageID,
ModelDownloadUrl: "http://www.maikami.com/voicesnap/sensevoice.zip",
FallbackModelDownloadUrl: "https://modelscope.cn/models/sherpa-onnx/sherpa-onnx-sense-voice-zh-en-ja-ko-yue/resolve/master/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-int8-2024-07-17.tar.bz2",
}
@@ -66,6 +76,13 @@
return nil, err
}
cfg.HotkeyMode = NormalizeHotkeyMode(cfg.HotkeyMode)
+ cfg.LanguageMode = NormalizeLanguageMode(cfg.LanguageMode)
+ cfg.ModelSelectionMode = NormalizeModelSelectionMode(cfg.ModelSelectionMode)
+ languageID := cfg.LanguageID
+ cfg.LanguageID = model.NormalizeLanguageID(cfg.LanguageID)
+ if languageID != "" && languageID != cfg.LanguageID {
+ logger.Info("Unknown LanguageID %q, falling back to %q", languageID, cfg.LanguageID)
+ }
selectedModelID := cfg.SelectedModelID
cfg.SelectedModelID = model.NormalizeModelID(cfg.SelectedModelID)
if selectedModelID != "" && selectedModelID != cfg.SelectedModelID {
@@ -74,6 +91,24 @@
return cfg, nil
}
+func NormalizeLanguageMode(mode string) string {
+ switch mode {
+ case LanguageModeAuto, LanguageModeManual:
+ return mode
+ default:
+ return LanguageModeAuto
+ }
+}
+
+func NormalizeModelSelectionMode(mode string) string {
+ switch mode {
+ case ModelSelectionModeAuto, ModelSelectionModeManual:
+ return mode
+ default:
+ return ModelSelectionModeAuto
+ }
+}
+
func NormalizeHotkeyMode(mode string) string {
switch mode {
case HotkeyModeTap, HotkeyModeHold:
--
Gitblit v1.9.3