| | |
| | | ) |
| | | |
| | | const ( |
| | | HotkeyModeTap = "tap" |
| | | HotkeyModeHold = "hold" |
| | | HotkeyModeTap = "tap" |
| | | HotkeyModeHold = "hold" |
| | | LanguageModeAuto = "auto" |
| | | LanguageModeManual = "manual" |
| | | ) |
| | | |
| | | // Config holds the application configuration, compatible with the WPF version's config.json. |
| | |
| | | IndicatorX int `json:"IndicatorX,omitempty"` |
| | | IndicatorY int `json:"IndicatorY,omitempty"` |
| | | SelectedModelID string `json:"SelectedModelID,omitempty"` |
| | | LanguageMode string `json:"LanguageMode,omitempty"` |
| | | LanguageID string `json:"LanguageID,omitempty"` |
| | | ModelDownloadUrl string `json:"ModelDownloadUrl"` |
| | | FallbackModelDownloadUrl string `json:"FallbackModelDownloadUrl"` |
| | | } |
| | |
| | | HideDockIcon: true, |
| | | CopyToClipboard: true, |
| | | SelectedModelID: model.DefaultModelID, |
| | | 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", |
| | | } |
| | |
| | | return nil, err |
| | | } |
| | | cfg.HotkeyMode = NormalizeHotkeyMode(cfg.HotkeyMode) |
| | | cfg.LanguageMode = NormalizeLanguageMode(cfg.LanguageMode) |
| | | 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 { |
| | |
| | | return cfg, nil |
| | | } |
| | | |
| | | func NormalizeLanguageMode(mode string) string { |
| | | switch mode { |
| | | case LanguageModeAuto, LanguageModeManual: |
| | | return mode |
| | | default: |
| | | return LanguageModeAuto |
| | | } |
| | | } |
| | | |
| | | func NormalizeHotkeyMode(mode string) string { |
| | | switch mode { |
| | | case HotkeyModeTap, HotkeyModeHold: |