Nodes/IF_ParlerTTSNode/IF Parler TTS🎤
ComfyUI Node

IF Parler TTS🎤

IF Parler TTS

By if-ai·Created 2 years ago·Updated about a year ago· 17
IF Parler TTS🎤
    • audios
    • wav_16k_path
    promptHey, how are you doing today?
    descriptionA female speaker with a slightly low-pitched voice delivers her words quite expressively, in a very confined sounding environment with clear audio quality. She speaks very fast.
    file_nameIF_ParlerTTS
    cpufalse

    Parler TTS is one of the few text-to-speech models where the voice itself is a prompt. You don't record samples of anyone talking - you just type "a female speaker with a low-pitched voice, very fast, in a confined sounding room" and that is the voice. This node is ImpactFrames' way of running that inside ComfyUI: local, no API, no key, model and all. It's a quiet little utility, but if you've ever needed a narrator you can't audition, it's surprisingly fun.

    What it actually is

    IF_ParlerTTS wraps Hugging Face's parler-tts/parler_tts_mini_v0.1 - the "mini" model from the Parler family, which is a zero-shot TTS: it generates a new voice from a plain-English description of the voice you want, no reference audio required. It ships under the ImpactFrames💥🎞️ category and comes from if-ai, the account behind the well-known IF_AI_tools collection and IF_PromptMKr - a ComfyUI content creator whose name you'll recognize if you've watched any node roundup videos.

    The important framing: this is not voice cloning. If you came here to make a specific person speak your script, that's XTTS or an RVC pipeline, not this node. Parler's whole trick is generating a voice from a description - a different paradigm, and genuinely handy for characters, narration, and placeholder VO.

    How it works

    Two text inputs drive everything. The description conditions the voice characteristics; the prompt is the text it speaks. The node sentence-splits your prompt with NLTK, merges sentences into chunks under 300 characters (because the model generates audio of roughly bounded length), runs generate() per chunk, concatenates the raw output, then resamples the whole thing to 16 kHz with librosa and writes it to disk.

    One thing that will surprise you: it calls from_pretrained every single run. The weights aren't cached in memory between calls, so each generation reloads the model. First run after a fresh ComfyUI launch is especially slow because it also downloads the weights from Hugging Face into your HF cache (roughly a gigabyte) - not into your models folder, so don't go looking for it there.

    The inputs that matter

    • prompt - what it says. Multi-line, and it's chunked internally, so long scripts work but give you concatenated audio.
    • description - the voice. This is 80% of the result. The default is a genuinely good template: gender, pitch, expressiveness, environment, audio quality, pace. Vague descriptions give you flat, robotic audio; Parler understands a vocabulary like "confined sounding environment" and "clear audio quality," so lean on it.
    • cpu - a boolean, default off. Off means it tries cuda:0 and falls back to CPU if there's no GPU; flip it on if you're on a box without a GPU or are out of VRAM.

    It outputs two things: audios as an AUDIO type (wire it into a preview/audio-save node, or into a video node's audio track) and wav_16k_path, a string path to the resampled WAV on disk - handy when the next tool in your pipeline wants a file, not a buffer. It saves to ComfyUI/output/<file_name>_<timestamp>/, creating a folder per generation.

    Installing it

    ComfyUI Manager can find it (search IF_ParlerTTSNode), or clone it:

    cd ComfyUI/custom_nodes
    git clone https://github.com/if-ai/ComfyUI-IF_AI_ParlerTTSNode
    

    Here's the catch, and it's the classic dependency-hell move: this pack ships no requirements.txt, so Manager won't install its Python deps for you - the README makes you do it by hand. Into your ComfyUI Python environment:

    pip install git+https://github.com/huggingface/parler-tts.git
    pip install librosa nltk
    

    (Windows portable? run those with python_embeded\python.exe -m pip install ....) torch, numpy, scipy, and torchaudio are usually already in a working ComfyUI install. Then restart ComfyUI.

    Where people get burned

    The most common failure is skipping the manual pip step - you'll get ModuleNotFoundError: No module named 'parler_tts' at startup or on first run. Second is expecting cloning and being disappointed; set your expectations by description, not by reference audio. Third is impatiently blaming the model for metallic audio when the real problem is a thin description.

    And ignore the long ffmpy manual-install ritual in the README - the shipped code never imports ffmpy (it's a leftover from a sibling IF_AI node), so you can skip it unless a runtime error specifically mentions it. That's the kind of README rot worth knowing about before you waste an hour compiling setup scripts.

    CategoryImpactFrames💥🎞️

    Inputs (4)

    NameTypeDefaultDescription
    promptSTRINGHey, how are you doing today?
    descriptionSTRINGA female speaker with a slightly low-pitched voice delivers her words quite expressively, in a very confined sounding environment with clear audio quality. She speaks very fast.
    file_nameSTRINGIF_ParlerTTS
    cpuBOOLEANfalse

    Outputs (2)

    NameTypeDescription
    audiosAUDIO
    wav_16k_pathSTRING