func geminiSynthesis()

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
}