工作流 /
音频 /
Eleven v4:文本转对话

Eleven v4:文本转对话
Eleven v4: Text to Dialogue
使用 Eleven v4 从文本生成多说话人对话:为每个条目分配独立的一行和独立的声音,通过 [quietly] 或 [laughs] 等音频标签指导表达方式,或从样本中克隆声音并让它参与对话。输出为一个音频文件。非常适合播客、游戏对话和角色对话。
音频
9 个节点 1 个输入 25 次使用 ComfyUI ≥ 0.39.0 ComfyUI 14 KB
节点构成
ElevenLabsVoiceSelector
× 2
LoadAudio
× 1
ElevenLabsInstantVoiceClone
× 1
Note
× 1
ElevenLabsTextToDialogue
× 1
RecordAudio
× 1
SaveAudioAdvanced
× 1
MarkdownNote
× 1
官方标注的模型
ElevenLabs
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb",
3 "revision": 0,
4 "last_node_id": 221,
5 "last_link_id": 306,
6 "nodes": [
7 {
8 "id": 210,
9 "type": "LoadAudio",
10 "pos": [
11 1820,
12 1090
13 ],
14 "size": [
15 240,
16 170
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 4,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "AUDIO",
25 "type": "AUDIO",
26 "links": [
27 296
28 ]
29 }
30 ],
31 "properties": {
32 "Node name for S&R": "LoadAudio",
33 "cnr_id": "comfy-core",
34 "ver": "0.14.1"
35 },
36 "widgets_values": [
37 "long_demo.mp3",
38 null
39 ],
40 "widgets_values_named": {
41 "audio": "long_demo.mp3",
42 "upload": null
43 }
44 },
45 {
46 "id": 212,
47 "type": "ElevenLabsInstantVoiceClone",
48 "pos": [
49 2110,
50 1090
51 ],
52 "size": [
53 270,
54 110
55 ],
56 "flags": [],
57 "order": 6,
58 "mode": 4,
59 "inputs": [
60 {
61 "label": "audio0",
62 "name": "files.audio0",
63 "type": "AUDIO",
64 "link": 296
65 },
66 {
67 "name": "files.audio1",
68 "shape": 7,
69 "type": "AUDIO",
70 "link": null
71 }
72 ],
73 "outputs": [
74 {
75 "name": "voice",
76 "type": "ELEVENLABS_VOICE",
77 "links": null
78 }
79 ],
80 "properties": {
81 "Node name for S&R": "ElevenLabsInstantVoiceClone",
82 "cnr_id": "comfy-core",
83 "ver": "0.14.1"
84 },
85 "widgets_values": [
86 true
87 ],
88 "widgets_values_named": {
89 "remove_background_noise": true
90 },
91 "color": "#432",
92 "bgcolor": "#653"
93 },
94 {
95 "id": 217,
96 "type": "Note",
97 "pos": [
98 2120,
99 1260
100 ],
101 "size": [
102 260,
103 110
104 ],
105 "flags": [],
106 "order": 1,
107 "mode": 0,
108 "inputs": [],
109 "outputs": [],
110 "title": "How to enable bypassed nodes",
111 "properties": [],
112 "widgets_values": [
113 "Please select and use Ctrl-B to enable the bypassed nodes."
114 ],
115 "widgets_values_named": {
116 "text": "Please select and use Ctrl-B to enable the bypassed nodes."
117 },
118 "color": "#222",
119 "bgcolor": "#000"
120 },
121 {
122 "id": 211,
123 "type": "ElevenLabsVoiceSelector",
124 "pos": [
125 1940,
126 740
127 ],
128 "size": [
129 320,
130 90
131 ],
132 "flags": [],
133 "order": 2,
134 "mode": 0,
135 "inputs": [],
136 "outputs": [
137 {
138 "name": "voice",
139 "type": "ELEVENLABS_VOICE",
140 "links": [
141 299,
142 305
143 ]
144 }
145 ],
146 "properties": {
147 "Node name for S&R": "ElevenLabsVoiceSelector",
148 "cnr_id": "comfy-core",
149 "ver": "0.14.1"
150 },
151 "widgets_values": [
152 "Roger (male, american)"
153 ],
154 "widgets_values_named": {
155 "voice": "Roger (male, american)"
156 }
157 },
158 {
159 "id": 219,
160 "type": "ElevenLabsVoiceSelector",
161 "pos": [
162 1940,
163 880
164 ],
165 "size": [
166 320,
167 90
168 ],
169 "flags": [],
170 "order": 3,
171 "mode": 0,
172 "inputs": [],
173 "outputs": [
174 {
175 "name": "voice",
176 "type": "ELEVENLABS_VOICE",
177 "links": [
178 304,
179 306
180 ]
181 }
182 ],
183 "properties": {
184 "Node name for S&R": "ElevenLabsVoiceSelector",
185 "cnr_id": "comfy-core",
186 "ver": "0.14.1"
187 },
188 "widgets_values": [
189 "Laura (female, american)"
190 ],
191 "widgets_values_named": {
192 "voice": "Laura (female, american)"
193 }
194 },
195 {
196 "id": 218,
197 "type": "ElevenLabsTextToDialogue",
198 "pos": [
199 2450,
200 690
201 ],
202 "size": [
203 340,
204 354
205 ],
206 "flags": [],
207 "order": 7,
208 "mode": 0,
209 "inputs": [
210 {
211 "name": "inputs.voice1",
212 "type": "ELEVENLABS_VOICE",
213 "link": 299
214 },
215 {
216 "name": "inputs.voice2",
217 "type": "ELEVENLABS_VOICE",
218 "link": 304
219 },
220 {
221 "name": "inputs.voice3",
222 "type": "ELEVENLABS_VOICE",
223 "link": 305
224 },
225 {
226 "name": "inputs.voice4",
227 "type": "ELEVENLABS_VOICE",
228 "link": 306
229 }
230 ],
231 "outputs": [
232 {
233 "name": "AUDIO",
234 "type": "AUDIO",
235 "links": [
236 302
237 ]
238 }
239 ],
240 "properties": {
241 "Node name for S&R": "ElevenLabsTextToDialogue",
242 "cnr_id": "comfy-core",
243 "ver": "0.14.1"
244 },
245 "widgets_values": [
246 0.5,
247 "auto",
248 "eleven_v4",
249 "4",
250 "[quietly, close to the mic] I ran the numbers twice... the engine is holding steady. Wait, why is the alarm light-",
251 "[jumping in] -because I already started it. [laughs] You were taking too long. [deadpan] We have forty seconds.",
252 "[sighs, then firmly] Then stop smiling and seal the hatch. [urgent] I need the console live before the countdown hits twenty.",
253 "[amused] Already sealed. [quickly] The console is yours... and there goes the countdown.",
254 "",
255 2061518140,
256 "randomize",
257 "mp3_44100_192"
258 ],
259 "widgets_values_named": {
260 "stability": 0.5,
261 "apply_text_normalization": "auto",
262 "model": "eleven_v4",
263 "inputs": "4",
264 "inputs.text1": "[quietly, close to the mic] I ran the numbers twice... the engine is holding steady. Wait, why is the alarm light-",
265 "inputs.text2": "[jumping in] -because I already started it. [laughs] You were taking too long. [deadpan] We have forty seconds.",
266 "inputs.text3": "[sighs, then firmly] Then stop smiling and seal the hatch. [urgent] I need the console live before the countdown hits twenty.",
267 "inputs.text4": "[amused] Already sealed. [quickly] The console is yours... and there goes the countdown.",
268 "language_code": "",
269 "seed": 2061518140,
270 "control_after_generate": "randomize",
271 "output_format": "mp3_44100_192"
272 },
273 "color": "#432",
274 "bgcolor": "#653"
275 },
276 {
277 "id": 214,
278 "type": "RecordAudio",
279 "pos": [
280 1820,
281 1320
282 ],
283 "size": [
284 240,
285 150
286 ],
287 "flags": [],
288 "order": 4,
289 "mode": 4,
290 "inputs": [],
291 "outputs": [
292 {
293 "name": "AUDIO",
294 "type": "AUDIO",
295 "links": null
296 }
297 ],
298 "properties": {
299 "Node name for S&R": "RecordAudio",
300 "cnr_id": "comfy-core",
301 "ver": "0.14.1"
302 },
303 "widgets_values": [
304 "",
305 ""
306 ],
307 "widgets_values_named": {
308 "audio": "",
309 "audio#1": ""
310 }
311 },
312 {
313 "id": 220,
314 "type": "SaveAudioAdvanced",
315 "pos": [
316 2820,
317 690
318 ],
319 "size": [
320 680,
321 180
322 ],
323 "flags": [],
324 "order": 8,
325 "mode": 0,
326 "inputs": [
327 {
328 "name": "audio",
329 "type": "AUDIO",
330 "link": 302
331 }
332 ],
333 "outputs": [
334 {
335 "name": "audio",
336 "type": "AUDIO",
337 "links": null
338 }
339 ],
340 "properties": [],
341 "widgets_values": [
342 "audio/ComfyUI",
343 "mp3",
344 "V0"
345 ],
346 "widgets_values_named": {
347 "filename_prefix": "audio/ComfyUI",
348 "format": "mp3",
349 "format.quality": "V0"
350 }
351 },
352 {
353 "id": 221,
354 "type": "MarkdownNote",
355 "pos": [
356 1280,
357 690
358 ],
359 "size": [
360 480,
361 230
362 ],
363 "flags": [],
364 "order": 5,
365 "mode": 0,
366 "inputs": [],
367 "outputs": [],
368 "properties": [],
369 "widgets_values": [
370 "## How to use this template\n\n- `inputs` sets how many turns the dialogue has, 1 to 10: every entry is one turn with its own line and its own voice, and the turns are generated in order as a single audio file. This template ships 4 turns that alternate between the two voices.\n- Connect a voice to every entry. One Voice Selector can feed several entries, so two selectors (Roger and Laura) already drive a conversation of any length: raise `inputs` and alternate A, B, A, B.\n- Option 1, preset voice, is the active path. Option 2, voice clone, is bypassed: select the **Load Audio** (or **Record Audio**) and **ElevenLabs Instant Voice Clone** nodes, press Ctrl+B, then replace that entry's Voice Selector link with the clone's voice output. Use 1 to 2 minutes of clean single-speaker audio for a usable clone: it copies the voice, not the words.\n\n## How to write the lines\n\n- Audio tags inside an entry affect only that turn: `[quietly]`, `[laughs]`, `[deadpan]`. Describe the voice quality rather than a sound cue.\n- Punctuation does the timing: `...` trails off, a dash cuts a line short. An interruption is a dash at the end of one entry and at the start of the next. SSML break tags are not supported.\n- Keep each entry to one breath, and keep all entries together under 2,000 characters per request.\n\nPrompting guide: [ElevenLabs best practices](https://elevenlabs.io/docs/overview/capabilities/text-to-speech/best-practices#prompting-eleven-v4)\n\n\n## Input Asset\n\n- [long_demo.mp3](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/long_demo.mp3)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
371 ],
372 "widgets_values_named": {
373 "text": "## How to use this template\n\n- `inputs` sets how many turns the dialogue has, 1 to 10: every entry is one turn with its own line and its own voice, and the turns are generated in order as a single audio file. This template ships 4 turns that alternate between the two voices.\n- Connect a voice to every entry. One Voice Selector can feed several entries, so two selectors (Roger and Laura) already drive a conversation of any length: raise `inputs` and alternate A, B, A, B.\n- Option 1, preset voice, is the active path. Option 2, voice clone, is bypassed: select the **Load Audio** (or **Record Audio**) and **ElevenLabs Instant Voice Clone** nodes, press Ctrl+B, then replace that entry's Voice Selector link with the clone's voice output. Use 1 to 2 minutes of clean single-speaker audio for a usable clone: it copies the voice, not the words.\n\n## How to write the lines\n\n- Audio tags inside an entry affect only that turn: `[quietly]`, `[laughs]`, `[deadpan]`. Describe the voice quality rather than a sound cue.\n- Punctuation does the timing: `...` trails off, a dash cuts a line short. An interruption is a dash at the end of one entry and at the start of the next. SSML break tags are not supported.\n- Keep each entry to one breath, and keep all entries together under 2,000 characters per request.\n\nPrompting guide: [ElevenLabs best practices](https://elevenlabs.io/docs/overview/capabilities/text-to-speech/best-practices#prompting-eleven-v4)\n\n\n## Input Asset\n\n- [long_demo.mp3](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/long_demo.mp3)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
374 },
375 "color": "#222",
376 "bgcolor": "#000"
377 }
378 ],
379 "links": [
380 [
381 296,
382 210,
383 0,
384 212,
385 0,
386 "AUDIO"
387 ],
388 [
389 302,
390 218,
391 0,
392 220,
393 0,
394 "AUDIO"
395 ],
396 [
397 299,
398 211,
399 0,
400 218,
401 0,
402 "ELEVENLABS_VOICE"
403 ],
404 [
405 304,
406 219,
407 0,
408 218,
409 1,
410 "ELEVENLABS_VOICE"
411 ],
412 [
413 305,
414 211,
415 0,
416 218,
417 2,
418 "ELEVENLABS_VOICE"
419 ],
420 [
421 306,
422 219,
423 0,
424 218,
425 3,
426 "ELEVENLABS_VOICE"
427 ]
428 ],
429 "groups": [
430 {
431 "id": 1,
432 "title": "Option 2: Create a Voice Clone",
433 "bounding": [
434 1790,
435 1020,
436 610,
437 470
438 ],
439 "color": "#3f789e",
440 "flags": []
441 },
442 {
443 "id": 2,
444 "title": "Option 1: Use Preset Voice",
445 "bounding": [
446 1790,
447 660,
448 608.3333333333334,
449 325
450 ],
451 "color": "#3f789e",
452 "flags": []
453 }
454 ],
455 "config": [],
456 "extra": {
457 "ds": {
458 "scale": 0.5280674722668658,
459 "offset": [
460 -452.1043391112039,
461 -282.13320167339305
462 ]
463 },
464 "frontendVersion": "1.56.0",
465 "workflowRendererVersion": "LG",
466 "ue_links": [],
467 "links_added_by_ue": [],
468 "VHS_latentpreview": false,
469 "VHS_latentpreviewrate": 0,
470 "VHS_MetadataImage": true,
471 "VHS_KeepIntermediate": true
472 },
473 "version": 0.4
474}