|
7 | 7 | "fyne.io/fyne/v2/layout" |
8 | 8 | "fyne.io/fyne/v2/widget" |
9 | 9 | "whispering-tiger-ui/CustomWidget" |
10 | | - "whispering-tiger-ui/SendMessageChannel" |
11 | 10 | ) |
12 | 11 |
|
13 | 12 | func BuildZonosSpecialSettings() fyne.CanvasObject { |
@@ -129,35 +128,59 @@ func BuildZonosSpecialSettings() fyne.CanvasObject { |
129 | 128 | 0, |
130 | 129 | ) |
131 | 130 |
|
132 | | - languageSelect.SetSelected("en-us") |
| 131 | + // Load language with safe fallback |
| 132 | + language := GetSpecialSettingFallback("tts_zonos", "language", "en-us").(string) |
| 133 | + languageSelect.SetSelected(language) |
133 | 134 |
|
134 | 135 | seedInput := widget.NewEntry() |
135 | 136 | seedInput.PlaceHolder = lang.L("Enter manual seed") |
| 137 | + // Load seed (optional) |
| 138 | + if seed := GetSpecialSettingFallback("tts_zonos", "seed", "").(string); seed != "" { |
| 139 | + seedInput.SetText(seed) |
| 140 | + } |
| 141 | + |
| 142 | + // Clamp helper to keep values in [0,1] |
| 143 | + clamp01 := func(v float64) float64 { |
| 144 | + if v < 0 { |
| 145 | + return 0 |
| 146 | + } |
| 147 | + if v > 1 { |
| 148 | + return 1 |
| 149 | + } |
| 150 | + return v |
| 151 | + } |
136 | 152 |
|
137 | 153 | happinessSlider := widget.NewSlider(0.0, 1.0) |
138 | 154 | happinessSlider.Step = 0.0001 |
139 | | - happinessSlider.SetValue(0.3077) |
| 155 | + happinessSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "happiness", 0.3077).(float64))) |
| 156 | + |
140 | 157 | sadnessSlider := widget.NewSlider(0.0, 1.0) |
141 | 158 | sadnessSlider.Step = 0.0001 |
142 | | - sadnessSlider.SetValue(0.0256) |
| 159 | + sadnessSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "sadness", 0.0256).(float64))) |
| 160 | + |
143 | 161 | disgustSlider := widget.NewSlider(0.0, 1.0) |
144 | 162 | disgustSlider.Step = 0.0001 |
145 | | - disgustSlider.SetValue(0.0256) |
| 163 | + disgustSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "disgust", 0.0256).(float64))) |
| 164 | + |
146 | 165 | fearSlider := widget.NewSlider(0.0, 1.0) |
147 | 166 | fearSlider.Step = 0.0001 |
148 | | - fearSlider.SetValue(0.0256) |
| 167 | + fearSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "fear", 0.0256).(float64))) |
| 168 | + |
149 | 169 | surpriseSlider := widget.NewSlider(0.0, 1.0) |
150 | 170 | surpriseSlider.Step = 0.0001 |
151 | | - surpriseSlider.SetValue(0.0256) |
| 171 | + surpriseSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "surprise", 0.0256).(float64))) |
| 172 | + |
152 | 173 | angerSlider := widget.NewSlider(0.0, 1.0) |
153 | 174 | angerSlider.Step = 0.0001 |
154 | | - angerSlider.SetValue(0.0256) |
| 175 | + angerSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "anger", 0.0256).(float64))) |
| 176 | + |
155 | 177 | otherSlider := widget.NewSlider(0.0, 1.0) |
156 | 178 | otherSlider.Step = 0.0001 |
157 | | - otherSlider.SetValue(0.2564) |
| 179 | + otherSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "other", 0.2564).(float64))) |
| 180 | + |
158 | 181 | neutralSlider := widget.NewSlider(0.0, 1.0) |
159 | 182 | neutralSlider.Step = 0.0001 |
160 | | - neutralSlider.SetValue(0.3077) |
| 183 | + neutralSlider.SetValue(clamp01(GetSpecialSettingFallback("tts_zonos", "neutral", 0.3077).(float64))) |
161 | 184 |
|
162 | 185 | // ignore list checkboxes |
163 | 186 | emotionCheck := widget.NewCheck("", func(b bool) {}) |
@@ -200,35 +223,48 @@ func BuildZonosSpecialSettings() fyne.CanvasObject { |
200 | 223 | ignoreList = []string{} |
201 | 224 | } |
202 | 225 |
|
203 | | - sendMessage := SendMessageChannel.SendMessageStruct{ |
204 | | - Type: "tts_setting_special", |
205 | | - Value: struct { |
206 | | - Language string `json:"language"` |
207 | | - Seed string `json:"seed"` |
208 | | - Happiness float64 `json:"happiness"` |
209 | | - Sadness float64 `json:"sadness"` |
210 | | - Disgust float64 `json:"disgust"` |
211 | | - Fear float64 `json:"fear"` |
212 | | - Surprise float64 `json:"surprise"` |
213 | | - Anger float64 `json:"anger"` |
214 | | - Other float64 `json:"other"` |
215 | | - Neutral float64 `json:"neutral"` |
216 | | - IgnoreList []string `json:"ignore_list"` |
217 | | - }{ |
218 | | - Language: languageSelect.GetSelected().Value, |
219 | | - Seed: seedInput.Text, |
220 | | - Happiness: happinessSlider.Value, |
221 | | - Sadness: sadnessSlider.Value, |
222 | | - Disgust: disgustSlider.Value, |
223 | | - Fear: fearSlider.Value, |
224 | | - Surprise: surpriseSlider.Value, |
225 | | - Anger: angerSlider.Value, |
226 | | - Other: otherSlider.Value, |
227 | | - Neutral: neutralSlider.Value, |
228 | | - IgnoreList: ignoreList, |
229 | | - }, |
230 | | - } |
231 | | - sendMessage.SendMessage() |
| 226 | + UpdateSpecialTTSSettings("tts_zonos", "language", languageSelect.GetSelected().Value) |
| 227 | + UpdateSpecialTTSSettings("tts_zonos", "seed", seedInput.Text) |
| 228 | + UpdateSpecialTTSSettings("tts_zonos", "happiness", happinessSlider.Value) |
| 229 | + UpdateSpecialTTSSettings("tts_zonos", "sadness", sadnessSlider.Value) |
| 230 | + UpdateSpecialTTSSettings("tts_zonos", "disgust", disgustSlider.Value) |
| 231 | + UpdateSpecialTTSSettings("tts_zonos", "fear", fearSlider.Value) |
| 232 | + UpdateSpecialTTSSettings("tts_zonos", "surprise", surpriseSlider.Value) |
| 233 | + UpdateSpecialTTSSettings("tts_zonos", "anger", angerSlider.Value) |
| 234 | + UpdateSpecialTTSSettings("tts_zonos", "other", otherSlider.Value) |
| 235 | + UpdateSpecialTTSSettings("tts_zonos", "neutral", neutralSlider.Value) |
| 236 | + UpdateSpecialTTSSettings("tts_zonos", "ignore_list", ignoreList) |
| 237 | + |
| 238 | + //sendMessage := SendMessageChannel.SendMessageStruct{ |
| 239 | + // Type: "special_settings", |
| 240 | + // Name: "tts_zonos", |
| 241 | + // Value: struct { |
| 242 | + // Language string `json:"language"` |
| 243 | + // Seed string `json:"seed"` |
| 244 | + // Happiness float64 `json:"happiness"` |
| 245 | + // Sadness float64 `json:"sadness"` |
| 246 | + // Disgust float64 `json:"disgust"` |
| 247 | + // Fear float64 `json:"fear"` |
| 248 | + // Surprise float64 `json:"surprise"` |
| 249 | + // Anger float64 `json:"anger"` |
| 250 | + // Other float64 `json:"other"` |
| 251 | + // Neutral float64 `json:"neutral"` |
| 252 | + // IgnoreList []string `json:"ignore_list"` |
| 253 | + // }{ |
| 254 | + // Language: languageSelect.GetSelected().Value, |
| 255 | + // Seed: seedInput.Text, |
| 256 | + // Happiness: happinessSlider.Value, |
| 257 | + // Sadness: sadnessSlider.Value, |
| 258 | + // Disgust: disgustSlider.Value, |
| 259 | + // Fear: fearSlider.Value, |
| 260 | + // Surprise: surpriseSlider.Value, |
| 261 | + // Anger: angerSlider.Value, |
| 262 | + // Other: otherSlider.Value, |
| 263 | + // Neutral: neutralSlider.Value, |
| 264 | + // IgnoreList: ignoreList, |
| 265 | + // }, |
| 266 | + //} |
| 267 | + //sendMessage.SendMessage() |
232 | 268 | } |
233 | 269 | languageSelect.OnChanged = func(option CustomWidget.TextValueOption) { |
234 | 270 | updateSpecialTTSSettings() |
|
0 commit comments