$ cat node-template.py

T

Text to Speech

// Converts text to speech with support for 23 languages and optional voice cloning. Produces natural, expressive speech from text input.

Process
Audio
template.py
1import os2import sys3import json4import traceback56from gais import Gais78INPUT_DIR = "/data/input"9OUTPUT_DIR = "/data/output"101112def main():13    try:14        input_json = sys.stdin.read()15        execution_input = json.loads(input_json)16        inputs = execution_input.get("inputs", {})1718        prompt = inputs.get("prompt", "")19        voice_reference = inputs.get("voice_reference", "")20        language = inputs.get("language", "Italian")21        seed = int(inputs.get("seed", 0))2223        if not prompt:24            raise ValueError("Prompt input is required")2526        os.makedirs(OUTPUT_DIR, exist_ok=True)2728        # Resolve optional voice reference path29        voice_path = None30        if voice_reference:31            voice_path = os.path.join(INPUT_DIR, voice_reference)32            if not os.path.exists(voice_path):33                raise FileNotFoundError(f"Voice reference not found: {voice_path}")3435        print(36            f"Requesting speech generation: language={language}, seed={seed}, "37            f"voice_cloning={bool(voice_reference)}",38            file=sys.stderr,39        )4041        result = Gais.speech.create(42            text=prompt,43            language=language,44            seed=seed,45            voice_reference=voice_path,46        )4748        # Save result49        out_filename = "generated_speech.mp3"50        out_path = os.path.join(OUTPUT_DIR, out_filename)51        with open(out_path, "wb") as f:52            f.write(result.content)5354        inference_time = result.metadata.get("inference_time_ms", "unknown")55        print(56            f"Speech generated: time={inference_time}ms, language={language}, "57            f"seed={seed}, voice_cloning={bool(voice_reference)}",58            file=sys.stderr,59        )6061        # Flat output -- keys match OUTPUT_SCHEMA62        output = {63            "audio": out_filename,64        }65        print(json.dumps(output, indent=2))6667    except Exception as e:68        error_output = {69            "error": str(e),70            "errorType": type(e).__name__,71            "traceback": traceback.format_exc(),72        }73        print(json.dumps(error_output), file=sys.stderr)74        sys.exit(1)757677if __name__ == "__main__":78    main()

$ git log --oneline

v1.6.0
HEAD
2026-05-07
v1.3.02026-03-29
v1.2.02026-03-20