in experiments/babel/speak.go [142:180]
func geminiSynthesis(ctx context.Context, prompt string, voiceName string, projectID string) []BabelOutput {
// Create a Gemini client.
client := createGeminiClient(ctx, projectID)
voiceList := []string{}
outputmetadata := []BabelOutput{}
// use the single voice if provided
if voiceName != "" {
log.Printf("Single voice: %s", voiceName)
voiceList = []string{voiceName}
} else {
voiceList = geminiVoices
log.Printf("Voicing multiple: %d", len(voiceList))
}
for _, voiceName := range voiceList {
log.Printf("Voicing (%s): %s", voiceName, prompt)
// Generate and save audio.
fn, err := generateAudio(ctx, client, voiceName, prompt, true)
if err != nil {
log.Printf("unable to generate audio: %v", err)
}
metadata := BabelOutput{
VoiceName: voiceName,
//LanguageCode: "",
Text: prompt,
AudioPath: fn,
//Gender: "",
//Error: "",
}
if err != nil {
metadata.Error = fmt.Sprintf("unable to generate audio: %v", err)
}
outputmetadata = append(outputmetadata, metadata)
}
return outputmetadata
}