Nodes/comfyui-timesaver/TS Silero TTS
ComfyUI Node

TS Silero TTS

Russian text-to-speech that lives inside your graph

By AlexYez·Created 2 years ago·Updated about 22 hours ago· 12
TS Silero TTS
    • audio
    text
    input_formattext
    speakerxenia
    run_devicegpu
    enable_chunkingtrue
    max_chunk_chars900
    chunk_pause_ms120
    put_accenttrue
    put_yotrue
    put_stress_homotrue
    put_yo_homotrue

    Want a Russian voiceover for a video you're generating, a draft audiobook, or narration for a clip - without leaving ComfyUI? TS Silero TTS runs Silero's Russian model (v5_3) locally and hands you a proper ComfyUI AUDIO output you can preview, save, or mux straight into a video. It's a niche tool in the most literal sense: it's a Russian TTS, so if you need English narration this isn't your node. But for Russian it's fast, offline, and free, and it plugs into the audio layer that the KB's audio doc describes as "bolted on once the silent clips needed to talk."

    How it works

    Silero v5_3 is a well-trodden Russian TTS. The node wraps it with the practical stuff: five speakers (aidar, baya, kseniya, xenia, eugene - xenia is the default), a choice of plain text or SSML input, and automatic chunking for long text so you don't hit Silero's length ceiling. The chunking is the input you'll actually touch: enable_chunking (on by default) splits long text into max_chunk_chars-sized pieces (900 default) with chunk_pause_ms (120) of silence between them - so a paragraph reads like a paragraph, not one breathless run-on.

    The accent settings are the Russian-specific magic: put_accent, put_yo, put_stress_homo, put_yo_homo add stress marks and restore ё so words are pronounced correctly. That's the same machinery as the pack's separate TS Silero Stress node - and it's why a Russian TTS needs more knobs than an English one: the pronunciation lives in the stress marks, and getting them wrong is how you get "zámok" (castle) instead of "zamók" (lock).

    The input you'll set

    • speaker - the voice. All five are real Silero speakers; audition a sentence across them.
    • input_format - text or ssml. SSML if you want pauses and emphasis, text for everything else.
    • run_device - gpu by default; cpu works and is plenty for short lines.
    • The put_* toggles - leave them on; turning them off is how you get mispronounced Russian.

    The single output is audio (the synthesized speech as a ComfyUI AUDIO waveform). Feed it into TS Audio Preview to audition, or wire it alongside video frames into TS Video Saver for a spoken clip.

    Install

    Here's the one real setup cost: Silero is optional, not core. The node needs silero installed, which the pack deliberately keeps out of the core requirements because the Silero packages pin specific torch versions that can clash with your ComfyUI install.

    cd ComfyUI/custom_nodes
    git clone https://github.com/AlexYez/comfyui-timesaver
    cd comfyui-timesaver
    python -m pip install -r requirements.txt
    python -m pip install silero        # the audio-silero extra
    

    Weights land in models/silerotts/ on first use. If you skipped the silero install, the node fails gracefully and tells you exactly what to install - check the startup log's "Optional missing imports" line.

    Common issues

    • "It's reading my long text in a weird rhythm." Lower max_chunk_chars and/or raise chunk_pause_ms - the chunk boundary is where the rhythm breaks.
    • "Russian words sound wrong." One of the put_* toggles is off, or you fed it text without stress marks and the automatic ones couldn't run. Turn them back on; for genuinely ambiguous homographs, run the text through TS Silero Stress first and paste the marked result in.
    • "Module not found: silero." Install it (command above). On Windows portable, use python_embeded\python.exe.

    The honest limit, straight from the KB's audio doc: local TTS closes the gap on quality, but a top-tier multilingual voice is still an API job - ElevenLabs wins there. This node owns the specific job of Russian, on your machine, for free.

    CategoryTS/Audio

    Inputs (11)

    NameTypeDefaultDescription
    textSTRINGText or SSML content for speech synthesis.
    input_formatCOMBOtextInput mode: plain text or SSML.
    speakerCOMBOxeniaSilero speaker voice.
    run_deviceCOMBOgpuExecution device for Silero model.
    enable_chunkingBOOLEANtrueAutomatically split long text into chunks to avoid Silero length limits.
    max_chunk_charsINT900200–4000Approximate maximum characters per chunk.
    chunk_pause_msINT1200–3000Silence between generated chunks in milliseconds.
    put_accentBOOLEANtrueAdd stress marks to common words where user did not provide them.
    put_yoBOOLEANtrueReplace e with yo where needed.
    put_stress_homoBOOLEANtrueAdd stress marks for homographs without yo.
    put_yo_homoBOOLEANtrueAdd stress marks for homographs with yo.

    Outputs (1)

    NameTypeDescription
    audioAUDIOSynthesized speech audio.