Generated reference · ComfyUI workflow · Audio & music

Voice Performance (Chatterbox)

Expressive open-voice narration with Chatterbox (Resemble AI, MIT) — emotion/pacing control (exaggeration, cfg_weight, temperature) and optional reference-audio voice cloning.

Audio & music4nodesGPU A5000out audio~60sv1.0.0

On this page
4Graph nodes
4Node classes
5Inputs
5Models

Tags: audiovoicespeechttsnarrationchatterboxexpressive

Inputs (5)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

scriptstringrequired
Dialogue or narration script
exaggerationfloatdefault 0.4min 0.0max 1.0
Emotion intensity (lower = calmer; meditation leans low)
cfg_weightfloatdefault 0.5min 0.0max 1.0
Guidance weight (pacing/adherence)
temperaturefloatdefault 0.8min 0.1max 1.5
Sampling temperature
seedintegerdefault -1
Random seed

ComfyUI node graph (4)#

The executable ComfyUI prompt graph: 4 nodes across 4 distinct node classes, wired by 3 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: ChatterboxTextToSpeech"] n1["2: AudioDeesser"] n2["3: AudioLoudnessNormalize"] n3["4: SaveAudio"] n0 -->|audio| n1 n1 -->|audio| n2 n2 -->|audio| n3 classDef custom fill:#12b886,stroke:#0b6b4f,color:#04110c; class n0,n1,n2 custom;
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (4)#

1ChatterboxTextToSpeechcustom pack
text = {{script}} tmplexaggeration = {{exaggeration}} tmplcfg_weight = {{cfg_weight}} tmpltemperature = {{temperature}} tmpl
outputs: AUDIO
2AudioDeessercustom pack
audio = ◂ node 1 · out[0]strength = 0.3
outputs: AUDIO
3AudioLoudnessNormalizecustom pack
audio = ◂ node 2 · out[0]target_lufs = -16.0
outputs: AUDIO
4SaveAudiocore
audio = ◂ node 3 · out[0]filename_prefix = voice_chatterbox

Prompt construction#

template
{script} | exaggeration: {exaggeration}, cfg: {cfg_weight}, temperature: {temperature}

Variables (4)#

script
{{script}} tmpl
exaggeration
{{exaggeration}} tmpl
cfg_weight
{{cfg_weight}} tmpl
temperature
{{temperature}} tmpl

Models & dependencies#

Custom node packs (3)#

The non-core ComfyUI node classes this graph requires; the RunPod worker image the workflow runs on must bake or install a pack that provides every one of them.

AudioDeesserAudioLoudnessNormalizeChatterboxTextToSpeech

Models required (5)#

chatterbox/conds.pt
chatterbox/s3gen.pt
chatterbox/t3_cfg.pt
chatterbox/ve.pt
chatterbox/tokenizer.json

Output contract#

What a successful run of this workflow returns.

type
audio
format
flac
codec
pcm_s16le
channels
1
description
Narration/voice performance master
audio_package
{"mixdown": {"artifact_id": "audio_mixdown", "path_template": "audio/{{job_id}}/mixdown/voice-master.wav", "format": "wav", "sample_rate_hz": 48000, "bit_depth": 24, "channels": 1, "codec": "pcm_s24le"}, "stems": {"format": "wav", "sample_rate_hz": 48000, "bit_depth": 24, "channels": 1, "artifacts": [{"stem": "dialogue", "artifact_id": "stem_dialogue", "path_template": "audio/{{job_id}}/stems/dialogue.wav", "required": true}, {"stem": "ambience", "artifact_id": "stem_room_tone", "path_template": "audio/{{job_id}}/stems/room-tone.wav", "required": false}], "archive": {"artifact_id": "stems_archive", "path_template": "audio/{{job_id}}/stems/stems.zip", "format": "zip"}}, "multi_track": {"format": "wav", "sample_rate_hz": 48000, "bit_depth": 24, "channels": 2, "artifacts": [{"track": "dialogue", "artifact_id": "multitrack_dialogue", "path_template": "audio/{{job_id}}/multitrack/dialogue.wav", "required": true}, {"track": "sfx", "artifact_id": "multitrack_sfx", "path_template": "audio/{{job_id}}/multitrack/sfx.wav", "required": false}, {"track": "music", "artifact_id": "multitrack_music", "path_template": "audio/{{job_id}}/multitrack/music.wav", "required": false}], "archive": {"artifact_id": "multitrack_archive", "path_template": "audio/{{job_id}}/multitrack/multitrack.zip", "format": "zip"}}, "loudness": {"artifact_id": "loudness_report", "path_template": "audio/{{job_id}}/analysis/loudness-report.json", "format": "json", "standard": "broadcast", "target_integrated_lufs": -18, "max_true_peak_dbtp": -2}, "compliance": {"artifact_id": "audio_compliance_report", "path_template": "audio/{{job_id}}/analysis/audio-compliance-report.json", "format": "json", "loudness_tolerance_lufs": 1.0, "true_peak_tolerance_dbtp": 0.3, "max_clipping_percent": 0.1, "enforce_format_normalization": true}, "cue_sheet": {"artifact_id": "cue_sheet", "path_template": "audio/{{job_id}}/metadata/cue-sheet.csv", "format": "csv", "include_timecode": true, "include_beat_markers": false, "include_sections": true}}

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
anim-lipsync-viseme-sheet
outputPackageProfile
audio-master-profile
controlModalities
camera-lockcolor-script-lockdepth-constraintidentity-adapteridentity-locklatent-reusemodel-lockpalette-lockpose-constraintprompt-template-lockreference-ensemblesampler-scheduler-lockscene-lockseed-lockstyle-anchorstyle-lock +2 more
consistencyDimensions
identitymotioncolor-script
notes
Auto-mapped from audio defaults