From 62f9a3b1e84455c32971272c03163ca543e2f68f Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 14:44:26 +0800
Subject: [PATCH] Implement Round 4 Parakeet model selection
---
privatevoice.src/internal/modelselection/selection.go | 35 ++++++++++++++++++++++++++++-------
1 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/privatevoice.src/internal/modelselection/selection.go b/privatevoice.src/internal/modelselection/selection.go
index 0347f37..48f1a9a 100644
--- a/privatevoice.src/internal/modelselection/selection.go
+++ b/privatevoice.src/internal/modelselection/selection.go
@@ -27,15 +27,20 @@
if selectionMode == config.ModelSelectionModeManual {
if profile, err := model.GetModelProfile(cfg.SelectedModelID); err == nil {
- return CurrentModel{
- ModelID: profile.ID,
- Profile: profile,
- SelectionMode: selectionMode,
- LanguageSettings: settings,
+ if isModelAvailableForLanguage(profile.ID, settings.EffectiveLanguageID) {
+ return CurrentModel{
+ ModelID: profile.ID,
+ Profile: profile,
+ SelectionMode: selectionMode,
+ LanguageSettings: settings,
+ }
}
+ fallbackReason = "manual model not available for language"
+ logger.Info("Manual SelectedModelID %q is not available for language %q, falling back to language default %q", cfg.SelectedModelID, settings.EffectiveLanguageID, modelID)
+ } else {
+ fallbackReason = "invalid manual model selection"
+ logger.Info("Invalid manual SelectedModelID %q, falling back to language default %q", cfg.SelectedModelID, modelID)
}
- fallbackReason = "invalid manual model selection"
- logger.Info("Invalid manual SelectedModelID %q, falling back to language default %q", cfg.SelectedModelID, modelID)
}
profile, err := model.GetModelProfile(modelID)
@@ -54,3 +59,19 @@
FallbackReason: fallbackReason,
}
}
+
+func isModelAvailableForLanguage(modelID, languageID string) bool {
+ profile, err := model.GetLanguageProfile(languageID)
+ if err != nil {
+ return false
+ }
+ if profile.DefaultModelID == modelID {
+ return true
+ }
+ for _, upgradeModelID := range profile.UpgradeModelIDs {
+ if upgradeModelID == modelID {
+ return true
+ }
+ }
+ return false
+}
--
Gitblit v1.9.3