{"id": "b3f1c9e2-5a7d-4c8b-9e2f-gmanski-voicespeak", "revision": 0, "last_node_id": 4, "last_link_id": 2, "nodes": [{"id": 1, "type": "MarkdownNote", "pos": [-900, -300], "size": [460, 760], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {"Node name for S&R": "MarkdownNote"}, "widgets_values": ["## Gmanski Voice Clone (Speak)\n\n**Type anything, hear it in your voice.** Chatterbox (MIT) clones a voice from 5-20 seconds of clear speech and\nspeaks your text in it, in 23 languages.\n\n### Run it\n1. **Voice sample**: upload 5-20 s of one person talking, no music or background noise (phone voice memos work).\n   The first 10 s are used.\n2. Type the **text**. Long text is split into sentences and joined, so a paragraph is fine.\n3. Pick the **language** of the text and queue. Result: `output/audio/Gmanski/voice_speak_*.flac`.\n\n### Tips\n- `expressiveness` 0.5 is natural; 0.7-1.0 for an excited read (lower `pacing` a little with it).\n- Set `pacing` to 0 when the sample's language differs from the text's (an English sample reading French).\n- `turbo` is faster but English only. `keep_model_loaded` speeds up repeat runs; leave it off in long pipelines.\n- Same seed + same settings = the same take; change the seed for a different read.\n\n### Setup\n- Needs **ComfyUI-Gmanski 1.4.0+**. The voice engines run in their own Python environments under `/opt/voice`;\n  the Gmanski pod image (Nov 2026 or newer) has them. Anywhere else, run\n  `bash custom_nodes/ComfyUI-Gmanski/voice_workers/install.sh` once.\n- No model pack: the first run downloads the voice models (about 3 GB) into `models/voice`.\n\n### Consent\nOnly clone a voice you have permission to use: your own, or someone who agreed to it. Do not use a cloned voice to\nimpersonate a real person, deceive anyone or get around a voice check. Chatterbox stamps an inaudible watermark\n(Perth) into every clip it speaks.\n"], "title": "Read me: Voice Clone (Speak)", "color": "#432", "bgcolor": "#653"}, {"id": 2, "type": "LoadAudio", "pos": [-400, -300], "size": [360, 160], "flags": {}, "order": 1, "mode": 0, "inputs": [{"name": "audio", "type": "COMBO", "link": null, "widget": {"name": "audio"}}], "outputs": [{"name": "AUDIO", "type": "AUDIO", "links": [1]}], "properties": {"Node name for S&R": "LoadAudio"}, "widgets_values": ["voice_sample.wav", null, null], "title": "Voice sample (5-20 s of clear speech)"}, {"id": 3, "type": "VoiceCloneSpeak", "pos": [20, -300], "size": [420, 420], "flags": {}, "order": 2, "mode": 0, "inputs": [{"name": "voice_sample", "type": "AUDIO", "link": 1}, {"name": "text", "type": "STRING", "link": null, "widget": {"name": "text"}}, {"name": "language", "type": "COMBO", "link": null, "widget": {"name": "language"}}, {"name": "engine", "type": "COMBO", "link": null, "widget": {"name": "engine"}}, {"name": "expressiveness", "type": "FLOAT", "link": null, "widget": {"name": "expressiveness"}}, {"name": "pacing", "type": "FLOAT", "link": null, "widget": {"name": "pacing"}}, {"name": "temperature", "type": "FLOAT", "link": null, "widget": {"name": "temperature"}}, {"name": "seed", "type": "INT", "link": null, "widget": {"name": "seed"}}, {"name": "keep_model_loaded", "type": "BOOLEAN", "link": null, "widget": {"name": "keep_model_loaded"}}], "outputs": [{"name": "speech", "type": "AUDIO", "links": [2]}], "properties": {"Node name for S&R": "VoiceCloneSpeak"}, "widgets_values": ["Hi! This is my voice, cloned from a ten second sample. Pretty wild, right?", "English", "standard", 0.5, 0.5, 0.8, 0, "randomize", false], "title": "Voice Clone: Speak (Chatterbox)"}, {"id": 4, "type": "SaveAudioAdvanced", "pos": [500, -300], "size": [360, 150], "flags": {}, "order": 3, "mode": 0, "inputs": [{"name": "audio", "type": "AUDIO", "link": 2}, {"name": "filename_prefix", "type": "STRING", "link": null, "widget": {"name": "filename_prefix"}}, {"name": "format", "type": "COMFY_DYNAMICCOMBO_V3", "link": null, "widget": {"name": "format"}}, {"name": "audioUI", "type": "AUDIO_UI", "link": null, "widget": {"name": "audioUI"}}], "outputs": [{"name": "audio", "type": "AUDIO", "links": []}], "properties": {"Node name for S&R": "SaveAudioAdvanced"}, "widgets_values": ["audio/Gmanski/voice_speak", "flac"], "title": "Save speech (flac)"}], "links": [[1, 2, 0, 3, 0, "AUDIO"], [2, 3, 0, 4, 0, "AUDIO"]], "groups": [], "config": {}, "extra": {"ds": {"scale": 0.62, "offset": [1480, 420]}, "gmanski_template": "voice-clone-speak", "generator": "scripts/build_gmanski_voice_clone_workflows.py", "source": "https://gmanski.com/workflows/voice-clone-speak"}, "version": 0.4}