Extensions/ComfyUI_RH_SoulX-Singer
ComfyUI Extension

ComfyUI_RH_SoulX-Singer

ComfyUI node for zero-shot singing voice synthesis supporting melody and score conditioning with timbre cloning across multiple languages.

By HM-RunningHub·Created 6 months ago·Updated 6 months ago· 18
HM-RunningHub/ComfyUI_RH_SoulX-Singer
Nodes
On cloudLocal install
Stars18
Updated6 months ago
Readme

ComfyUI_RH_SoulX-Singer

License

A ComfyUI custom node for SoulX-Singer — a high-fidelity, zero-shot singing voice synthesis (SVS) model. This node enables users to generate realistic singing voices for unseen singers directly within ComfyUI, supporting both melody-conditioned (F0 contour) and score-conditioned (MIDI notes) control.

<p align="center"> <a href="https://github.com/Soul-AILab/SoulX-Singer">Original Project</a> | <a href="https://huggingface.co/spaces/Soul-AILab/SoulX-Singer">HF Demo</a> | <a href="https://arxiv.org/abs/2602.07803">Paper</a> </p>

✨ Features

  • Zero-Shot Singing Voice Synthesis — Generate high-fidelity singing voices for unseen singers without fine-tuning
  • Flexible Control Modes — Melody (F0 contour) and Score (MIDI notes) conditioning
  • Multi-Language Support — Mandarin, English, and Cantonese
  • Full Pipeline — Includes audio preprocessing (vocal separation, F0 extraction, lyric/note transcription) and SVS inference
  • Timbre Cloning — Preserve singer identity across languages and styles

🛠️ Installation

Method 1: ComfyUI Manager (Recommended)

Search for ComfyUI_RH_SoulX-Singer in ComfyUI Manager and install.

Method 2: Manual Installation

cd ComfyUI/custom_nodes
git clone https://github.com/HM-RunningHub/ComfyUI_RH_SoulX-Singer.git
cd ComfyUI_RH_SoulX-Singer
pip install -r preprocess/requirements.txt

📦 Model Download & Installation

All models must be placed in ComfyUI/models/Soul-AILab/ with the following structure:

ComfyUI/
└── models/
    └── Soul-AILab/
        ├── SoulX-Singer/                        # SVS model
        │   └── model.pt
        └── SoulX-Singer-Preprocess/             # Preprocessing models
            ├── mel-band-roformer-karaoke/        # Vocal separation
            ├── dereverb_mel_band_roformer/       # Dereverberation
            ├── rmvpe/                            # F0 extraction
            ├── speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/  # Chinese ASR
            ├── parakeet-tdt-0.6b-v2/             # English ASR
            └── rosvot/                           # Note transcription
                ├── rosvot/model.pt
                └── rwbd/model.pt

Download Methods

Method 1: Download from HuggingFace (Recommended)

pip install -U huggingface_hub

# Download the SoulX-Singer SVS model
huggingface-cli download Soul-AILab/SoulX-Singer --local-dir ComfyUI/models/Soul-AILab/SoulX-Singer

# Download preprocessing models
huggingface-cli download Soul-AILab/SoulX-Singer-Preprocess --local-dir ComfyUI/models/Soul-AILab/SoulX-Singer-Preprocess

Method 2: Download from ModelScope (For China users)

pip install modelscope

# Download the SoulX-Singer SVS model
modelscope download --model Soul-AILab/SoulX-Singer --local_dir ComfyUI/models/Soul-AILab/SoulX-Singer

# Download preprocessing models
modelscope download --model Soul-AILab/SoulX-Singer-Preprocess --local_dir ComfyUI/models/Soul-AILab/SoulX-Singer-Preprocess

🚀 Usage

Workflow

The typical workflow consists of 4 nodes:

  1. Load Preprocess Pipeline → Loads the audio preprocessing models
  2. Preprocess Audio → Extracts vocal, F0, lyrics, and notes from audio
  3. Load SVS Model → Loads the SoulX-Singer synthesis model
  4. Generate Singing Voice → Synthesizes singing voice with timbre cloning

Basic Steps

  1. Connect a prompt audio (reference singer voice for timbre) and a target audio (the song to be synthesized)
  2. Preprocess both audios to extract metadata
  3. Load the SVS model
  4. Generate the singing voice with melody or score control

📝 Node Reference

RunningHub SoulX-Singer Preprocess Pipeline

Loads all preprocessing models (vocal separation, F0 extraction, ASR, note transcription).

| Output | Type | Description | |--------|------|-------------| | pipeline | SoulXSinger_Preprocess_Pipeline | Loaded preprocessing pipeline |

RunningHub SoulX-Singer Preprocessor

Processes audio to extract singing metadata.

| Input | Type | Description | |-------|------|-------------| | pipeline | SoulXSinger_Preprocess_Pipeline | Preprocessing pipeline | | audio | AUDIO | Input audio | | max_merge_duration | INT | Max segment duration in ms (10000–60000, default: 30000) | | language | STRING | Language: Mandarin / English / Cantonese |

| Output | Type | Description | |--------|------|-------------| | audio metadata | SoulXSinger_Audio_Metadata | Extracted singing metadata (JSON) |

RunningHub SoulX-Singer SVS Loader

Loads the SoulX-Singer SVS model and data processor.

| Output | Type | Description | |--------|------|-------------| | pipeline | SoulXSinger_SVS_Pipeline | Loaded SVS model and processor |

RunningHub SoulX-Singer SVS Processor

Generates singing voice from metadata.

| Input | Type | Description | |-------|------|-------------| | pipeline | SoulXSinger_SVS_Pipeline | Loaded SVS pipeline | | control | STRING | Control mode: melody / score | | prompt_wav | AUDIO | Reference singer audio (timbre source) | | prompt_metadata | SoulXSinger_Audio_Metadata | Prompt audio metadata | | target_metadata | SoulXSinger_Audio_Metadata | Target audio metadata | | seed | INT | Random seed (default: 12306) |

| Output | Type | Description | |--------|------|-------------| | audio | AUDIO | Generated singing voice audio |

📄 License

This project is licensed under the Apache License 2.0.

🔗 Links

🙏 Acknowledgements

This project is based on SoulX-Singer, developed by Soul-AILab.

We also thank the following open-source projects: