Nodes/ComfyUI-Vsgan/TTS Capcut
ComfyUI Node

TTS Capcut

CapCut's TTS voices, free, no account — until ByteDance notices

By yuvraj108c·Created 3 years ago·Updated 2 years ago· 3
TTS Capcut
    • audio
    • audio_path
    text
    speaker

    TTS Capcut is the odd one out in its own pack. ComfyUI-Vsgan is a video pack - TensorRT engines, VapourSynth, Dockerfiles, the works - and then this node shows up and does none of that. You type text, it makes a WebSocket call, and CapCut's voice server talks back. No API key, no account, no GPU, no model download. The credentials are hardcoded into the node's source, which should tell you everything about how legitimate this is.

    What it is

    It's text-to-speech using CapCut's internal voice backend - the same one the CapCut editor's "text to speech" feature talks to. That's why the display name says Capcut: these aren't public voices, they're the ones ByteDance keeps behind its app. You get exactly two speakers to pick from:

    • en_us_006 - a standard US English voice, the safe default
    • en_female_jennifer_clone2 - a cloned female voice (the "clone2" is a hint that this isn't one of the catalog voices)

    Use it for narration, voiceover on AI-generated video, or rough dubbing. If you're already on the ComfyUI video train and want a voice to go with your clips without leaving the graph, it's genuinely convenient.

    How it works

    The mechanism is small enough to read in one sitting. The node opens a websocket to wss://sami-maliva.byteintlapi.com/internal/api/v1/ws - byteintlapi is ByteDance's international API domain, and sami-maliva is the service name. It sends a StartTask with a hardcoded appkey and a very long token, asking for the audio as OGG Opus at 24kHz, 64kbps. The server responds with a message id and payload, then sends the raw audio bytes. The node saves those bytes to ComfyUI/output/tts/<message_id>.wav and hands you the file path.

    The audio output is typed VHS_AUDIO, so it plugs straight into VideoHelperSuite's audio inputs - VHS_VideoCombine being the obvious destination if you want the voice muxed into a video. The audio_path output is a plain string with the saved file's location, which is handy even if you never touch VHS.

    Installing it

    ComfyUI Manager can find it by searching the pack title, ComfyUI-Vsgan. Or do it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/yuvraj108c/ComfyUI-Vsgan
    

    Then restart ComfyUI and let Manager (or pip) pull the requirements. The TTS node itself only really needs websockets. The rest of the pack - the Real-ESRGAN upscaler and Depth Anything nodes - wants a TensorRT/VapourSynth rig that you do not need for this node. If the pack refuses to import because of missing deps, pip install websockets imageio[ffmpeg] av usually sorts it. One quirk: the requirements file also lists asyncio, which is a Python stdlib module - pip will install a pointless placeholder package with that name. Harmless, just ignore it.

    The honest caveats

    • The .wav is a lie. The payload asks for ogg_opus, and the node saves those bytes with a .wav extension. Strict players and editors may refuse it or play static. Renaming to .ogg usually fixes it; to convert properly, ffmpeg -f ogg -i file.wav out.mp3 is the safe invocation.
    • It can die at any time. The token is baked into the source. The day ByteDance rotates it - or changes the endpoint - the node just fails with a websocket error, and there's nothing to fix except waiting for the author to push a new token. This is a single-commit hobby node from a pack with no README. There's essentially zero community track record, so treat it as experimental.
    • Your text goes to ByteDance's servers. Don't feed it secrets. And as fun as free CapCut voices are, this is reverse-engineered access to an internal endpoint - fine for personal tinkering, not something to build a product on.

    Reach for it if you want CapCut-quality narration without the CapCut editor and without paying for a TTS API. Just know the free lunch is served on borrowed plates.

    CategoryVsgan

    Inputs (2)

    NameTypeDefaultDescription
    textSTRING
    speakerCOMBO2 options: en_us_006, en_female_jennifer_clone2

    Outputs (2)

    NameTypeDescription
    audioVHS_AUDIO
    audio_pathSTRING