!7 set flag NoLib1400401. lib 1400452 // google tts lib 1400453 // google api java client import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.cloud.texttospeech.v1.AudioConfig; import com.google.cloud.texttospeech.v1.AudioEncoding; import com.google.cloud.texttospeech.v1.SsmlVoiceGender; import com.google.cloud.texttospeech.v1.SynthesisInput; import com.google.cloud.texttospeech.v1.SynthesizeSpeechResponse; import com.google.cloud.texttospeech.v1.TextToSpeechClient; import com.google.cloud.texttospeech.v1.VoiceSelectionParams; import com.google.protobuf.ByteString; import com.google.cloud.texttospeech.v1.TextToSpeechSettings; import com.google.auth.Credentials; import com.google.api.gax.core.FixedCredentialsProvider; import com.google.auth.oauth2.GoogleCredentials; cmodule2 TestGoogleTTS > DynPrintLog { /* female voices: en-US-Wavenet-C en-US-Wavenet-E en-US-Wavenet-F en-US-Wavenet-G en-US-Wavenet-H F and H sound nice */ switchable S voiceName = "en-US-Wavenet-C"; switchable S text = "Hello darling"; start-thread { //dm_reloadOnFieldChange('voiceName, 'text); } void render ctex { temp InputStream in = newFileInputStream(javaxSecretDir("google-botcompany-credentials.json")); GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new InputStreamReader(in)); Credentials credentials = GoogleCredentials.fromStream( fileInputStream(assertFileExists(javaxSecretDir("google-tts-key.json"))); TextToSpeechSettings textToSpeechSettings = TextToSpeechSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) .build(); temp TextToSpeechClient textToSpeechClient = TextToSpeechClient.create(textToSpeechSettings); // Set the text input to be synthesized SynthesisInput input = SynthesisInput.newBuilder().setText(text).build(); // Build the voice request, select the language code ("en-US") and the ssml voice gender // ("neutral") VoiceSelectionParams voice = VoiceSelectionParams.newBuilder() .setLanguageCode("en-US") .setName(voiceName) .build(); // Select the type of audio file you want returned AudioConfig audioConfig = AudioConfig.newBuilder().setAudioEncoding(AudioEncoding.MP3).build(); // Perform the text-to-speech request on the text input with the selected voice parameters and // audio file type SynthesizeSpeechResponse response = textToSpeechClient.synthesizeSpeech(input, voice, audioConfig); // Get the audio contents from the response ByteString audioContents = response.getAudioContent(); // Write the response to the output file. File audioFile = javaxCachesDir("Speech Output/Google TTS/" + sanitizeFileName(voiceName) + "/" + uniqueFileNameUsingMD5_80_v2(text) + ".mp3"); { temp OutputStream out = fileOutputStream(audioFile); out.write(audioContents.toByteArray()); } printFileInfo(audioFile); playMp3(audioFile); } visual jhsplit(super, withCenteredButtons(northAndCenter( dm_inputFieldWithLabel voiceName(), dm_wordWrapTextAreaWithTitle text()), "Render", rThreadEnter render)); }