Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

90
LINES

< > BotCompany Repo | #1030591 // Test Google TTS [needs API key]

JavaX source code (Dynamic Module) [tags: use-pretranspiled] - run with: Stefan's OS

Uses 30908K of libraries. Click here for Pure Java version (8530L/44K).

!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));
}

download  show line numbers  debug dex  old transpilations   

Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt

No comments. add comment

Snippet ID: #1030591
Snippet name: Test Google TTS [needs API key]
Eternal ID of this version: #1030591/29
Text MD5: c269a7eb419a8811dbef63ff14e0f984
Transpilation MD5: 8fda67d2bc407eaa0592881d2aacd52f
Author: stefan
Category: javax / networking
Type: JavaX source code (Dynamic Module)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2021-01-14 17:22:40
Source code size: 3467 bytes / 90 lines
Pitched / IR pitched: No / No
Views / Downloads: 254 / 1016
Version history: 28 change(s)
Referenced in: [show references]