google-gemini-tts-safe

An n8n community node for Gemini 3.1 Flash TTS with robust Google service-account PEM handling.

Package Information

Released: 1 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.0
Author: huynhthien22

Documentation

n8n Google Gemini TTS Safe

An independent n8n community node for gemini-3.1-flash-tts-preview. It uses
an existing built-in Google Service Account API (googleApi) credential,
normalizes escaped PEM private keys in memory, requests a short-lived OAuth
token, and returns a validated MP3 in binary.data.

This is a separate package and node type. It does not replace or modify
n8n-nodes-google-cloud-tts-safe or its googleCloudTtsSafe node.

n8n configuration

  • Credential: Google Service Account account jaden220794
  • Text: ={{ $json.voiceover_request_text }}
  • Style Prompt: Vietnamese natural product-review direction
  • Language Code: vi-VN
  • Voice Mode: Fixed or Random From List
  • Fixed voice example: Kore
  • Random voice example: Kore, Aoede, Callirrhoe, Charon
  • Binary Property: data
  • File ID: ={{ $json.safe_id || $json.content_id || 'voiceover' }}

Gemini voice names are short names such as Kore and Aoede; do not enter a
Cloud TTS Chirp name such as vi-VN-Chirp3-HD-Despina.

What the node sends

The node calls https://texttospeech.googleapis.com/v1/text:synthesize with:

{
  "input": {
    "prompt": "Natural-language performance direction",
    "text": "Transcript"
  },
  "voice": {
    "languageCode": "vi-VN",
    "name": "Kore",
    "modelName": "gemini-3.1-flash-tts-preview"
  },
  "audioConfig": {
    "audioEncoding": "MP3"
  }
}

Local checks

npm run check
npm test
npm pack --dry-run

Tests are offline. They generate temporary RSA keys in memory and do not call
Google, n8n, or any credential store.

Safe installation

Install this package alongside the existing Cloud TTS Safe package. Test it in
an inactive workflow copy first. If it fails to load, uninstall only this new
package and restart n8n; the old node package remains installed and unchanged.

Discussion