diff options
Diffstat (limited to 'internal/gui/generator.go')
| -rw-r--r-- | internal/gui/generator.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/internal/gui/generator.go b/internal/gui/generator.go index ca9d854..92ead40 100644 --- a/internal/gui/generator.go +++ b/internal/gui/generator.go @@ -91,8 +91,12 @@ func (a *Application) generateAudio(word string) (string, error) { rand.Seed(time.Now().UnixNano()) voice := allVoices[rand.Intn(len(allVoices))] - // Update audio config with random voice + // Generate random speed between 0.90 and 1.00 + speed := 0.90 + rand.Float64()*0.10 + + // Update audio config with random voice and speed a.audioConfig.OpenAIVoice = voice + a.audioConfig.OpenAISpeed = speed // Create audio provider provider, err := audio.NewProvider(a.audioConfig) @@ -127,11 +131,18 @@ func (a *Application) generateAudio(word string) (string, error) { } // Save audio attribution - if err := a.saveAudioAttribution(word, outputFile, voice); err != nil { + if err := a.saveAudioAttribution(word, outputFile, voice, speed); err != nil { // Non-fatal error, just log it fmt.Printf("Warning: Failed to save audio attribution: %v\n", err) } + // Save voice metadata for GUI display + metadataFile := filepath.Join(wordDir, "audio_metadata.txt") + metadata := fmt.Sprintf("voice=%s\nspeed=%.2f\n", voice, speed) + if err := os.WriteFile(metadataFile, []byte(metadata), 0644); err != nil { + fmt.Printf("Warning: Failed to save audio metadata: %v\n", err) + } + return outputFile, nil } @@ -154,8 +165,6 @@ func (a *Application) generateImagesWithPrompt(word string, customPrompt string, Size: "512x512", // Half of 1024x1024 Quality: "standard", Style: "natural", - CacheDir: "./.image_cache", - EnableCache: a.config.EnableCache, } searcher = image.NewOpenAIClient(openaiConfig) @@ -216,7 +225,7 @@ func (a *Application) generateImagesWithPrompt(word string, customPrompt string, usedPrompt := openaiClient.GetLastPrompt() if usedPrompt != "" { // Save the prompt to disk immediately for this word - promptFile := filepath.Join(wordDir, "prompt.txt") + promptFile := filepath.Join(wordDir, "image_prompt.txt") os.WriteFile(promptFile, []byte(usedPrompt), 0644) // Only update UI if this word is still the current word @@ -237,12 +246,12 @@ func (a *Application) generateImagesWithPrompt(word string, customPrompt string, } // saveAudioAttribution saves attribution info for generated audio -func (a *Application) saveAudioAttribution(word, audioFile, voice string) error { +func (a *Application) saveAudioAttribution(word, audioFile, voice string, speed float64) error { attribution := fmt.Sprintf("Audio generated by OpenAI TTS\n\n") attribution += fmt.Sprintf("Bulgarian word: %s\n", word) attribution += fmt.Sprintf("Model: %s\n", a.audioConfig.OpenAIModel) attribution += fmt.Sprintf("Voice: %s\n", voice) - attribution += fmt.Sprintf("Speed: %.2f\n", a.audioConfig.OpenAISpeed) + attribution += fmt.Sprintf("Speed: %.2f\n", speed) if a.audioConfig.OpenAIInstruction != "" { attribution += fmt.Sprintf("\nVoice instructions:\n%s\n", a.audioConfig.OpenAIInstruction) |
