Generated reference · ComfyUI workflow · Audio & music

Voice Performance Synthesis

Synthesize expressive dialogue and narration with controllable performance style

Audio & music4nodesGPU A5000out audio~60sv1.0.0

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

Tags: audiovoicespeechttsnarration

Inputs (4)#

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
voice_profileenumdefault af_bella
Kokoro-82M voice id
options: af_bellaaf_nicoleaf_saraham_adamam_michaelbf_emmabf_isabellabm_georgebm_lewis
speaking_ratefloatdefault 1.0min 0.7max 1.3
Speech rate multiplier
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: KokoroTextToSpeech"] 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)#

1KokoroTextToSpeechcustom pack
text = {{script}} tmplvoice = {{voice_profile}} tmplspeed = {{speaking_rate}} 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_performance_synthesis

Prompt construction#

template
{script} | voice profile: {voice_profile}, speech rate: {speaking_rate}

Variables (3)#

script
{{script}} tmpl
voice_profile
{{voice_profile}} tmpl
speaking_rate
{{speaking_rate}} 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.

AudioDeesserAudioLoudnessNormalizeKokoroTextToSpeech

Models required (2)#

kokoro-v1.0.onnx
kokoro-voices-v1.0.bin

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