summaryrefslogtreecommitdiff
path: root/internal/processor/processor.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-02 08:34:18 +0300
committerPaul Buetow <paul@buetow.org>2026-04-02 08:34:18 +0300
commitea0df3747579fc1411a0b9533c86ed23d4ffb641 (patch)
tree515ee66ec0a126e7587d8a4d17ec8356b83fccf8 /internal/processor/processor.go
parentfdee8dfa21f32b8981bd048b5620cb4772322990 (diff)
Fix processor Gemini/OpenAI voice wiring
Diffstat (limited to 'internal/processor/processor.go')
-rw-r--r--internal/processor/processor.go40
1 files changed, 23 insertions, 17 deletions
diff --git a/internal/processor/processor.go b/internal/processor/processor.go
index ecd4c1a..3c07806 100644
--- a/internal/processor/processor.go
+++ b/internal/processor/processor.go
@@ -291,6 +291,16 @@ func (p *Processor) geminiVoice() string {
return ""
}
+func (p *Processor) openAIVoice() string {
+ if voice := strings.TrimSpace(viper.GetString("audio.openai_voice")); voice != "" {
+ return voice
+ }
+ if p != nil && p.flags != nil {
+ return strings.TrimSpace(p.flags.OpenAIVoice)
+ }
+ return ""
+}
+
func (p *Processor) audioVoicesForProvider() []string {
switch p.audioProviderName() {
case "gemini":
@@ -303,17 +313,14 @@ func (p *Processor) audioVoicesForProvider() []string {
func (p *Processor) audioVoiceForProvider() string {
switch p.audioProviderName() {
case "gemini":
- if voice := p.geminiVoice(); voice != "" {
- return voice
- }
+ return p.geminiVoice()
default:
- if p.flags.OpenAIVoice != "" {
- return p.flags.OpenAIVoice
+ if voice := p.openAIVoice(); voice != "" {
+ return voice
}
+ voices := p.audioVoicesForProvider()
+ return voices[rand.Intn(len(voices))]
}
-
- voices := p.audioVoicesForProvider()
- return voices[rand.Intn(len(voices))]
}
// generateAudio generates audio files for a word
@@ -328,13 +335,13 @@ func (p *Processor) generateAudio(word string) error {
voice := p.audioVoiceForProvider()
switch provider {
case "gemini":
- if p.geminiVoice() != "" {
+ if voice != "" {
fmt.Printf(" Using specified Gemini voice: %s\n", voice)
} else {
- fmt.Printf(" Using random Gemini voice: %s\n", voice)
+ fmt.Printf(" Using Gemini model default voice\n")
}
default:
- if p.flags.OpenAIVoice != "" {
+ if p.openAIVoice() != "" {
fmt.Printf(" Using specified voice: %s\n", voice)
} else {
fmt.Printf(" Using random voice: %s\n", voice)
@@ -363,13 +370,13 @@ func (p *Processor) generateAudioBgBg(front, back string) error {
voice := p.audioVoiceForProvider()
switch provider {
case "gemini":
- if p.geminiVoice() != "" {
+ if voice != "" {
fmt.Printf(" Using specified Gemini voice: %s\n", voice)
} else {
- fmt.Printf(" Using random Gemini voice: %s\n", voice)
+ fmt.Printf(" Using Gemini model default voice\n")
}
default:
- if p.flags.OpenAIVoice != "" {
+ if p.openAIVoice() != "" {
fmt.Printf(" Using specified voice: %s\n", voice)
} else {
fmt.Printf(" Using random voice: %s\n", voice)
@@ -479,7 +486,7 @@ func (p *Processor) generateAudioWithVoiceAndFilenameInDir(word, voice, filename
}
// Save audio attribution
- if err := p.saveAudioAttribution(word, outputFile, providerConfig); err != nil {
+ if err := p.saveAudioAttribution(word, outputFile, providerConfig, word); err != nil {
fmt.Printf(" Warning: Failed to save audio attribution: %v\n", err)
}
@@ -980,8 +987,7 @@ func (p *Processor) isWordFullyProcessed(word string) bool {
}
return true // All required files exist
}
-func (p *Processor) saveAudioAttribution(word, audioFile string, config *audio.Config) error {
- processedText := audio.ProcessedTextForWord(word)
+func (p *Processor) saveAudioAttribution(word, audioFile string, config *audio.Config, processedText string) error {
var attribution string
switch strings.ToLower(strings.TrimSpace(config.Provider)) {
case "gemini":