Nodes/Breeze TTS 2 · T8star-Aix/Breeze TTS 2 · T8 桌面音色包
ComfyUI Node

Breeze TTS 2 · T8 桌面音色包

Reading .t8voice Bundles

By T8mars·Created 14 days ago·Updated 2 days ago· 14
Breeze TTS 2 · T8 桌面音色包
    • request
    • reference_audio
    • voice_info
    bundle_pathvoice.t8voice.zip
    text[咳嗽] 欢迎使用桌面版与 ComfyUI 共用的音色。
    line_direction_modeinherit
    line_direction
    cfg_scale0.0

    If you've tuned voices in T8star-Aix's desktop Voice Studio app, you've probably exported a .t8voice.zip - a self-contained voice pack carrying the speaker's reference audio, a saved delivery instruction, and a default CFG. This node ("T8 桌面音色包", desktop voice bundle) is the bridge that gets those voices into ComfyUI. Point it at a bundle file, type a line, and out comes the same request the Design and Clone nodes produce - meaning the voice you already auditioned in the desktop app works in a node workflow with zero re-tuning.

    What it actually does

    Give it a local path and it reads the bundle offline and without ever extracting to disk - every member is parsed in memory. That "offline, no extraction" framing isn't paranoia fluff: the source treats a .t8voice.zip as untrusted input and runs a real gauntlet of checks before decoding anything. Rejected outright: absolute or path-traversal member names, symlink bundle paths, Windows-unsafe duplicate casing, encrypted members, undeclared members, and absurd compression ratios. Everything is capped - member count, archive and decompressed size, reference-audio duration (60 seconds max, same as the rest of the pack) - and declared sizes are verified against SHA-256 hashes. If you're in the habit of downloading random voice packs, this is the good kind of gatekeeping.

    Once the bundle passes, the embedded profile provides the voice's id/name, language, stored instruction, default cfg_scale, and the reference transcript, and the reference audio is decoded straight to standard ComfyUI AUDIO format ([batch, channels, samples] float32). No round-trip through your disk or a temp file.

    The inputs that matter

    • bundle_path - absolute path to the local .t8voice.zip. The default "voice.t8voice.zip" is a placeholder; the shipped voice_bundle_workflow.json example needs you to swap in a real path too.
    • text - the line to synthesize. Inline vocal events go right in here, unmarked and unstripped: Chinese [笑] [咳嗽] [清嗓子] [叹气], English (laugh) (cough) (clears throat) (sigh).
    • line_direction_mode - inherit uses the bundle's saved voice instruction; override replaces it with your line_direction for this line; neutral applies a clean, natural delivery. As with the pack's per-line node, override requires line_direction or it errors out.
    • cfg_scale - 0 (default) inherits the bundle's stored CFG; anything else overrides it for this line.

    The three outputs

    This is where the node earns its keep, because it returns three things:

    • request - a BREEZE_T8_REQUEST; wire it into T8_BreezeTTS_Generate.
    • reference_audio - the standard ComfyUI AUDIO. Preview it with PreviewAudio or SaveAudio to hear the voice you're about to use, no synthesis required. You can also feed it to other audio nodes.
    • voice_info - a JSON string describing the voice profile and the effective mode the bundle resolved to.

    That middle output is quietly brilliant for voice-library browsing: audition the actual reference before spending a generation on a take.

    Installing it

    Search "Breeze TTS 2 · T8star-Aix" in ComfyUI Manager and install, then restart. Manually, the same thing looks like:

    cd ComfyUI/custom_nodes
    git clone https://github.com/T8mars/Comfyui-breeze-tts.git comfyui-breeze-tts-T8
    python -m pip install -r comfyui-breeze-tts-T8/requirements.txt
    

    The pack only pulls lightweight deps (soundfile, safetensors, huggingface_hub, …) - torch/transformers belong to your ComfyUI host and are never touched. It does demand transformers >=4.57,<6 and Python 3.10–3.12, and reports at registration if your host falls outside that. First run of the Model Loader downloads the actual BreezeBlue/Breeze-TTS-2 weights (pinned revision) into ComfyUI/models/breeze_tts/, gated behind the accept_model_license checkbox - Breeze TTS 2 is research/non-commercial, not open source.

    Troubleshooting

    Three things bite people. Wrong path: the node wants an absolute path to a real .t8voice.zip, not a symlink - "please choose a desktop-exported .t8voice.zip" means it didn't find one. Decode failures: if the bundled reference won't decode, re-export it from the desktop app as WAV or FLAC, which the README calls out as the most stable cross-platform choice. Schema mismatch: the node tracks the desktop app's release cadence, so if it rejects a freshly exported bundle, update the desktop app first. And remember - the bundle is read in memory, so keep the file where you pointed it; the node re-fingerprints the file each run and picks up changes without a restart.

    CategoryT8star-Aix/Audio/Breeze TTS

    Inputs (5)

    NameTypeDefaultDescription
    bundle_pathSTRINGvoice.t8voice.zip桌面版音色库导出的本地 .t8voice.zip;节点只离线读取,不会联网或解压到磁盘。
    textSTRING[咳嗽] 欢迎使用桌面版与 ComfyUI 共用的音色。本次要合成的台词。支持行内声音事件:中文 [笑] [咳嗽] [清嗓子] [叹气];英文 (laugh) (cough) (clears throat) (sigh)。标记应直接写入台词。
    line_direction_modeCOMBOinheritinherit 继承音色;override 使用本句指令;neutral 使用自然、清晰的中性表达。
    line_directionoptSTRING逐句自然语言情感/语速/表达指令;override 时必填。
    cfg_scaleoptFLOAT0.00–100 表示沿用音色包默认值;其他值覆盖本句 CFG。

    Outputs (3)

    NameTypeDescription
    requestBREEZE_T8_REQUEST
    reference_audioAUDIO
    voice_infoSTRING