package tts import ( "context" texttospeech "cloud.google.com/go/texttospeech/apiv1" "gitlab.com/cinnamon/voiceagent/icserror" texttospeechpb "google.golang.org/genproto/googleapis/cloud/texttospeech/v1" ) func TTS(ssml string, SampleRate int32) ([]byte, *icserror.IcsError) { return tts(ssml, SampleRate) /* // Instantiates a client. ctx := context.Background() client, err := texttospeech.NewClient(ctx) if err != nil { icserror.ICSERRTTSFail.SetError(err) return nil, icserror.ICSERRTTSFail } defer client.Close() // Perform the text-to-speech request on the text input with the selected // voice parameters and audio file type. req := texttospeechpb.SynthesizeSpeechRequest{ // Set the text input to be synthesized. Input: &texttospeechpb.SynthesisInput{ InputSource: &texttospeechpb.SynthesisInput_Ssml{Ssml: ssml}, }, // Build the voice request, select the language code ("en-US") and the SSML // voice gender ("neutral"). Voice: &texttospeechpb.VoiceSelectionParams{ LanguageCode: "ko-KR", SsmlGender: texttospeechpb.SsmlVoiceGender_FEMALE, }, // Select the type of audio file you want returned. AudioConfig: &texttospeechpb.AudioConfig{ AudioEncoding: texttospeechpb.AudioEncoding_LINEAR16, SampleRateHertz: SampleRate, }, } resp, err := client.SynthesizeSpeech(ctx, &req) if err != nil { icserror.ICSERRTTSFail.SetError(err) return nil, icserror.ICSERRTTSFail } if len(resp.AudioContent) <= 0 { return nil, icserror.ICSERRTTSFailEmpty } return resp.AudioContent, nil */ } func tts(text string, SampleRate int32) ([]byte, *icserror.IcsError) { // Instantiates a client. ctx := context.Background() client, err := texttospeech.NewClient(ctx) if err != nil { icserror.ICSERRTTSFail.SetError(err) return nil, icserror.ICSERRTTSFail } defer client.Close() // Perform the text-to-speech request on the text input with the selected // voice parameters and audio file type. req := texttospeechpb.SynthesizeSpeechRequest{ // Set the text input to be synthesized. Input: &texttospeechpb.SynthesisInput{ InputSource: &texttospeechpb.SynthesisInput_Ssml{Ssml: text}, }, // Build the voice request, select the language code ("en-US") and the SSML // voice gender ("neutral"). Voice: &texttospeechpb.VoiceSelectionParams{ LanguageCode: "ko-KR", SsmlGender: texttospeechpb.SsmlVoiceGender_FEMALE, }, // Select the type of audio file you want returned. AudioConfig: &texttospeechpb.AudioConfig{ AudioEncoding: texttospeechpb.AudioEncoding_LINEAR16, SampleRateHertz: SampleRate, }, } resp, err := client.SynthesizeSpeech(ctx, &req) if err != nil { icserror.ICSERRTTSFail.SetError(err) return nil, icserror.ICSERRTTSFail } if len(resp.AudioContent) <= 0 { return nil, icserror.ICSERRTTSFailEmpty } /* // The resp's AudioContent is binary. filename := "output.mp3" err = ioutil.WriteFile(filename, resp.AudioContent, 0644) if err != nil { log.Fatal(err) } fmt.Printf("Audio content written to file: %v\n", filename) */ return resp.AudioContent, nil }