Monja Character Voice • Load
Monja Character Voice Load
- audio
- ref_text
- voice_pack
The voice-cloning part nobody talks about
Once you've got F5-TTS or TTS Audio Suite generating speech in ComfyUI, the annoying part isn't the model - it's that every workflow wants you to drag in the same reference clip and retype the same transcript. Monja Character Voice • Load is the cure for exactly that. Pick a character, pick a voice, and out the other side comes the audio, its transcription, and a ready-made voice_pack dict that F5-TTS-style engines consume directly. Zero inference, zero GPU, zero API keys. It's a library drawer for your voices, and the drawer lives on disk.
It's the read half of a two-node pack; its sibling SaveCharacterVoice writes the entries. If you've never saved anything, the first launch seeds the library with two example characters, Alice and Daniel, so you have something to poke at immediately.
How it works
Everything lives as plain files in Documents/MonjaCharacterVoice/characters/<Character>/. Each voice is a .wav plus a .txt sidecar holding the transcription. On load the node walks the character's folder recursively - subfolders like Voz or Referencia count - to find the matching wav, flattens stereo down to mono (the mono conversion is there to stop a whole class of cloning errors), and reads the text file.
The output you should actually care about is voice_pack (type VOICE): a dict built with the keys F5-TTS and tts_audio_suite expect - samples, sample_rate, text, ref_text - plus the audio, path, and character name thrown in for good measure. The README calls it "F5-TTS optimized," and that's the honest version of the claim: this pack does the bookkeeping, the engine downstream does the talking.
Inputs and outputs that matter
Only two inputs, both dropdowns, and neither should surprise you:
- character - the folders in your library. Picking one instantly filters the voice list (that's the JavaScript doing the filtering, via a small
/monja/get_voicesAPI endpoint). - voice_name - the specific voice for that character.
And three outputs:
- audio (AUDIO) - the reference clip in ComfyUI's native audio format.
- ref_text (STRING) - the transcription, for anything that wants the text.
- voice_pack (VOICE) - the dict to feed the F5-TTS / tts_audio_suite side of your workflow.
If you only wire one thing up, wire voice_pack.
Installing
Via ComfyUI Manager (search "Monja Character Voice"), or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/andremonjardim/ComfyUI-Monja-CharacterVoice.git
Then restart ComfyUI. That's the whole install: requirements.txt is just torch and torchaudio, both of which ComfyUI already ships. No model downloads, no runtime isolation headaches - this pack never touches a model, which is exactly why it won't break your transformers install.
Where people get burned
- Where do the files actually go? The default path resolves through the Windows shell API for the Documents folder, so on Windows it's
Documents/MonjaCharacterVoice/characters. On Linux and macOS that lookup falls back to your home directory - you're looking at~/MonjaCharacterVoice/charactersinstead. Don't go hunting in Documents on Linux. If you want it somewhere specific, setMONJA_CHARACTER_PATHto any directory you like. - The dropdowns are baked when the node loads. Save a new character, and the character list on an already-open Load node won't show it until you reload the graph or re-add the node. The voice list updates live when you switch characters, but the character list itself is captured at node creation.
- "Nenhum" is not a character. It's the Portuguese fallback value that appears when the library is empty (the author is Brazilian, and a couple of error strings stayed in Portuguese - a missing voice raises a
FileNotFoundErrorthat reads "Voz … não encontrada"). If you see it, you've either got an empty library or a path problem.
For a voice library manager, this thing is refreshingly boring - and boring is what you want from the part of the pipeline that just has to not lose your work.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| character | COMBO | 2 options: Alice, Daniel | |
| voice_name | COMBO | 4 options: Voice_Happy_Alice, Voice_Happy_Daniel, Voice_Principal_Alice, Voice_Principal_Daniel |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| ref_text | STRING | — |
| voice_pack | VOICE | — |