{ "id": "332f7ac5-c30f-44aa-991a-aff51b05038a", "revision": 0, "last_node_id": 21, "last_link_id": 37, "nodes": [ { "id": 6, "type": "MarkdownNote", "pos": [ -1850, -870 ], "size": [ 376.88634999999977, 580.2930250000001 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {}, "widgets_values": [ "## šŸŽ¤ Achieving High-Quality Voice Clones\n\nTo achieve the best voice cloning results, providing an accurate `prompt_text` is **critical**. This text acts as a transcript that aligns the sound of the `prompt_audio` with the words being spoken, teaching the model the speaker's unique vocal characteristics.\n\n### How to Use `prompt_text` Effectively\n\n#### 1. **Provide a Verbatim Transcript**\nThe `prompt_text` must be a word-for-word transcript of the `prompt_audio`. Do not summarize or describe the audio.\n\nāœ… **Correct:** `The quick brown fox jumps over the lazy dog.`\n\nāŒ **Incorrect:** `A person saying a sentence about a fox.`\n\n#### 2. **Punctuation is Important**\nUse accurate punctuation to capture the speaker's intonation. The model learns how the speaker ends sentences, asks questions, or shows excitement.\n\n- **For a statement:** `This is a great example.`\n- **For a question:** `Is this a great example?`\n- **For excitement:** `This is a great example!`\n\n#### 3. **Match Audio and Text Length**\nThe audio clip should be long enough to capture the speaker's natural pacing and rhythm.\n\nšŸ‘ **Good:** A 5-15 second clip of continuous, clear speech.\n\nšŸ‘Œ **Okay:** A 3-5 second clip.\n\nāš ļø **Warning:** Very short clips (< 3 seconds) may result in a less stable or robotic-sounding clone.\n\n\n> **Note:**\n> For the best results, use a clean, high-quality `prompt_audio` with minimal background noise, reverb, or music. The model will try to clone the *entire* acoustic environment, not just the voice." ], "color": "#432", "bgcolor": "#653" }, { "id": 2, "type": "LoadAudio", "pos": [ -1850, -1060 ], "size": [ 380, 140 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 36, 37 ] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.3.52", "Node name for S&R": "LoadAudio", "ue_properties": { "widget_ue_connectable": { "audio": true, "audioUI": true, "upload": true }, "version": "7.0.1" } }, "widgets_values": [ "male_stewie.mp3", null, null ] }, { "id": 4, "type": "MarkdownNote", "pos": [ -990.7606826953638, -860.2656142766266 ], "size": [ 488.203125, 395.64375000000007 ], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [], "title": "Note", "properties": {}, "widgets_values": [ "# ComfyUI-VoxCPM\n\n**VoxCPM** a novel tokenizer-free TTS system for context-aware speech generation and true-to-life voice cloning.\n\n## Models\nThis node automatically downloads the required model files.\n\n| Model | Parameters | Sampling Rate | Languages | Description | Hugging Face Link |\n|:---|:---:|:---:|:---:|:---|:---|\n| **VoxCPM2** | 2B | 48kHz | 30+ | **New!** Voice design, reference cloning, multilingual | [openbmb/VoxCPM2](https://huggingface.co/openbmb/VoxCPM2) |\n| **VoxCPM1.5** | 800M | 44.1kHz | 2 | Recommended for v1. LoRA support, improved fidelity | [openbmb/VoxCPM1.5](https://huggingface.co/openbmb/VoxCPM1.5) |\n| VoxCPM-0.5B | 640M | 16kHz | 2 | Original version | [openbmb/VoxCPM-0.5B](https://huggingface.co/openbmb/VoxCPM-0.5B) |\n\n\n---\n\n### Check TG for more interesting stuff: [TokenDiffusion](https://t.me/TokenDiff)" ], "color": "#233", "bgcolor": "#355" }, { "id": 21, "type": "VoxCPM_TTS", "pos": [ -1430, -1060 ], "size": [ 390, 700 ], "flags": {}, "order": 3, "mode": 0, "inputs": [ { "name": "prompt_audio", "shape": 7, "type": "AUDIO", "link": 37 }, { "name": "reference_audio", "shape": 7, "type": "AUDIO", "link": 36 } ], "outputs": [ { "name": "Generated Audio", "type": "AUDIO", "links": [ 34 ] } ], "properties": { "cnr_id": "ComfyUI-VoxCPM", "ver": "c2d1bc512740edb0933113a550f8edb587656f14", "Node name for S&R": "VoxCPM_TTS" }, "widgets_values": [ "VoxCPM2", "None", "VoxCPM is an innovative TTS model designed to generate highly expressive speech.", 2, 10, 2, 2048, true, false, 1, 1, true, 3, 6, 42, "fixed", false, "cuda", "", "Hope I'm not bothering you. Just doing some stretching, maybe a few poses. You'll tell me if I'm bothering you, right? I've even been singled out a few times. Probably because it's mostly pregnant women in the group. Still Brody must see something. Although I certainly don't. But then again I'm not the instructor, am I? Oh yuck! What happened to my ear?\n" ], "color": "#232", "bgcolor": "#353" }, { "id": 1, "type": "SaveAudio", "pos": [ -991.1134658984888, -1058.9567763860016 ], "size": [ 270, 120 ], "flags": {}, "order": 4, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", "link": 34 } ], "outputs": [], "properties": { "cnr_id": "comfy-core", "ver": "0.3.52", "Node name for S&R": "SaveAudio", "ue_properties": { "widget_ue_connectable": { "filename_prefix": true, "audioUI": true }, "version": "7.0.1" } }, "widgets_values": [ "audio/VoxCPM" ] } ], "links": [ [ 34, 21, 0, 1, 0, "AUDIO" ], [ 36, 2, 0, 21, 1, "AUDIO" ], [ 37, 2, 0, 21, 0, "AUDIO" ] ], "groups": [], "config": {}, "extra": { "ds": { "scale": 0.9090909090909091, "offset": [ 2339.6000000000004, 1273 ] }, "workflowRendererVersion": "LG", "frontendVersion": "1.41.21", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, "VHS_KeepIntermediate": true }, "version": 0.4 }