Nodes/ComfyUI_Spark_TTS/Spark_TTS_Creation
ComfyUI Node

Spark_TTS_Creation

Text-to-speech inside ComfyUI

By KERRY-YUAN·Created about a year ago·Updated about a year ago· 4
Spark_TTS_Creation
    • Audio
    • Node Status
    textHello, Spark Text to Speech is working!
    genderfemale
    pitchmoderate
    speedmoderate
    temperature0.70
    top_k30
    top_p0.70
    max_new_tokens2020
    keep_model_loadedtrue
    use_cpufalse

    You've got the images, you've got the video - the part that always stalls is the voiceover. Spark_TTS_Creation is the node that fixes that, by dropping a real text-to-speech model into your ComfyUI graph. Type a line, pick a gender, pitch and speed, and out comes a 16 kHz waveform you can save, play, or feed straight into a video render. No API key, no account, no phoning home to a cloud service - it runs entirely on your machine.

    It's one half of the ComfyUI_Spark_TTS pack, the "voice from nothing" half. The sibling node, Spark_TTS_Clone, handles cloning a specific voice; this one generates a clean, controllable speaker. Under the hood it's Spark-TTS 0.5B from the SparkAudio team, an LLM-based TTS model. The "0.5B" is the part that matters for you: it's the small, fast end of the TTS spectrum, the kind of model that loads quickly, runs on modest GPUs, and still sounds a world better than the robot voices you grew up with.

    How it works

    Mechanically, Spark-TTS is an autoregressive LLM that turns text into semantic speech tokens, then a biCodec vocoder converts those tokens into an actual waveform. The node vendors the official Spark-TTS library - there's a bundled sparktts folder - and drives it through a thin core wrapper. On the first run it loads weights from ComfyUI/models/TTS/Spark-TTS/Spark-TTS-0.5B/; if that folder is empty, it tries to auto-download the model before you even queue up. The output is a standard ComfyUI AUDIO dict (waveform plus sample rate), so it plugs into the same audio save/preview nodes you already use for any other AUDIO.

    The inputs that matter

    Only a few of these are worth touching on day one:

    • text - the thing the voice actually says.
    • gender (female/male) plus pitch and speed, each from very_low to very_high. This is the real control this node sells: dialing in a voice instead of rolling the dice.
    • max_new_tokens (default 2020) - raise it if a clip gets cut off mid-sentence.
    • keep_model_loaded (True) - right call for most people. The 0.5B model is small, so keeping it warm costs little VRAM and makes every rerun faster.
    • use_cpu (False) - the escape hatch for GPUs ComfyUI can't schedule (some AMD cards); it also routes to MPS on Macs.

    The sampling quartet (temperature 0.7, top_k 30, top_p 0.7) behaves like samplers-as-usual - leave them alone unless output starts sounding flat or chaotic.

    Outputs

    Two outputs: Audio, the thing you actually keep, and Node Status - a string that mostly exists because this pack would rather hand you a readable error in the graph than silently die. If the audio comes back as silence, that string is the first place to look.

    Installing it

    Easiest route:

    # ComfyUI Manager: search "Spark-TTS" → Install → restart
    

    Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/KERRY-YUAN/ComfyUI_Spark_TTS
    cd ComfyUI_Spark_TTS
    # use your ComfyUI Python (e.g. python_embeded/python.exe on Windows):
    pip install -r requirements.txt
    

    The requirements are mostly light (transformers, soundfile, einops, omegaconf), but the list also demands torch and torchaudio - which you already have. The README's warning about keeping those compatible with your existing PyTorch install is the one to respect. The model auto-downloads on first use; the manual fallback is running Model_Download.bat in the node folder.

    Where people get burned

    The failure you'll actually hit: the model folder isn't where the node expects it, and Node Status fills with "Please run Model_Download.bat or check paths." The auto-downloader is one-shot per session and needs internet plus Git on your PATH (the companion preset repo is a git clone), so when it silently fails, running Model_Download.bat is the fix. A "no semantic tokens found" error usually means max_new_tokens is too low for your text. And on CPU, expect slow - that's not a bug, that's an autoregressive model grinding token by token.

    Honest take: this is a fast, capable-enough narrator, not an emotional ElevenLabs impersonator. If you need clone-perfect voices, the other node in this pack - or the rival TTS packs the community argues over - will take you further.

    CategoryComfyUI_Spark_TTS

    Inputs (10)

    NameTypeDefaultDescription
    textSTRINGHello, Spark Text to Speech is working!Text to be synthesized / 待合成的文本
    genderCOMBOfemaleGender of the synthesized voice / 合成语音的性别
    pitchCOMBOmoderatePitch level (e.g., very_low, moderate, very_high) / 音高水平(例如:非常低、中等、非常高)
    speedCOMBOmoderateSpeed level (e.g., very_low, moderate, very_high) / 语速水平(例如:非常慢、中等、非常快)
    temperatureFLOAT0.700–1Sampling temperature for generation / 生成的采样温度
    top_kINT300–100Top-K sampling parameter / Top-K 采样参数
    top_pFLOAT0.700–1Top-P (nucleus) sampling parameter / Top-P (核) 采样参数
    max_new_tokensINT2020100–90000Maximum number of new tokens to generate / 要生成的最大新 token 数
    keep_model_loadedBOOLEANtrueKeep model in VRAM after use for faster subsequent runs / 使用后将模型保留在显存中以便后续运行更快
    use_cpuBOOLEANfalseForce node execution on CPU instead of GPU / 强制节点在 CPU 而非 GPU 上执行

    Outputs (2)

    NameTypeDescription
    AudioAUDIO
    Node StatusSTRING