mcpField
C
comfyui-voice-pipeline

comfyui-voice-pipeline

github.com/mckruz创意与媒体92402 次安装32 周前更新
代码仓库

关于 comfyui-voice-pipeline

comfyui-voice-pipeline 用于通过 TTS 或声音克隆创建角色语音,并与生成的视频同步,涵盖工具选择、脚本准备、音频处理和口型同步流程。

主要功能

  1. 01指导选择语音生成工具
  2. 02提供声音克隆与 TTS 选项
  3. 03准备语音生成脚本
  4. 04提供音频处理与格式建议
  5. 05介绍口型同步方法和流程

适用场景

  1. 01为角色视频制作对白
  2. 02根据参考音频选择语音工具
  3. 03准备 TTS 多说话人脚本
  4. 04将生成语音与角色视频同步

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mckruz/comfyui-expert --skill comfyui-voice-pipeline

安装后在 Claude Code 中输入/comfyui-voice-pipeline确认已加载。

详细介绍

ComfyUI 语音流水线

通过 TTS/语音克隆生成角色语音,并与生成的视频同步。

语音生成决策树

VOICE REQUEST
    |
    |-- Have reference audio of target voice?
    |   |-- Yes (5+ seconds) → Chatterbox (MIT, paralinguistic tags)
    |   |-- Yes (10-15 seconds) → F5-TTS (fastest zero-shot)
    |   |-- Yes (10+ minutes) → RVC training (highest fidelity)
    |   |-- Yes (any length, budget) → ElevenLabs (production quality)
    |
    |-- No reference audio?
    |   |-- Need emotion control → IndexTTS-2 (8-emotion vectors)
    |   |-- Need multi-language → TTS Audio Suite (23 languages)
    |   |-- Need voice design → ElevenLabs Voice Design (describe voice)
    |   |-- Quick prototype → Any TTS with default voice
    |
    |-- Need multi-speaker dialog?
    |   |-- Chatterbox (4 voices) or TTS Audio Suite (character switching)
    |
    |-- Need lip-sync?
    |   |-- Best accuracy → Wav2Lip + CodeFormer
    |   |-- Need head movement → SadTalker
    |   |-- Full expression control → LivePortrait
    |   |-- Unlimited length → InfiniteTalk

工具参考

Chatterbox(推荐的开源工具)

优势:MIT 许可证,盲测表现比 ElevenLabs 高 63.8%,只需 5 秒样本,支持情绪控制,延迟低于 200 毫秒。

韵律标签:

[laugh] [chuckle] [sigh] [gasp] [cough] [clear throat]
[whisper] [excited] [sad] [angry] [surprised]

关键参数:exaggeration(0.25-2.0)用于控制表现力。

限制:生成时长上限为 40 秒。更长的内容需要拆分。

F5-TTS

优势:零样本克隆速度最快,所需样本时长低于 15 秒,MIT 许可证,支持多语言。

要求:参考音频必须与 .wav + .txt 文件配对(转录文本必须匹配)。

语言:英语、德语、西班牙语、法语、日语、印地语、泰语、葡萄牙语。

TTS Audio Suite

优势:统一的多引擎平台,支持 23 种语言,支持切换角色。

特色功能:

  • 角色切换:[CharacterName] 标签
  • 语言切换:[de:Alice]、[fr:Bob]
  • 暂停控制:[pause:1s]
  • SRT 时间同步

集成:F5-TTS、Chatterbox、Higgs Audio 2、VibeVoice、IndexTTS-2、RVC。

IndexTTS-2

优势:支持 8 种情绪向量控制,可按片段设置参数。

情绪:开心、愤怒、悲伤、惊讶、害怕、厌恶、平静、忧郁。

RVC(语音转换)

适用场景:使用目标语音训练模型(至少 10 分钟音频),然后转换任意 TTS 输出。

流水线:Text → Any TTS → Base Audio → RVC Model → Character Voice

训练:300-500 轮,使用 RMVPE 进行特征提取。

ElevenLabs(商业工具)

级别:

  • 即时克隆:1 分钟样本,质量良好
  • 专业克隆:30 分钟以上(理想时长为 3 小时),效果几乎无法分辨
  • 语音设计:用文本描述语音(无需样本)

语音配置文件设置

为每个角色在 projects/{project}/characters/{name}/profile.yaml 中建立语音配置文件:

voice:
  cloned: true
  model: "chatterbox"
  sample_file: "references/voice_sample.wav"
  settings:
    exaggeration: 1.2
    default_emotion: "neutral"
  notes: "Warm, confident tone. Slight Italian-American undertones."

脚本准备

TTS 文本格式
  1. 标点很重要:逗号会产生停顿,句号会产生停顿收尾
  2. 发音提示:如果生僻词发音错误,请按发音拼写
  3. 情绪提示:使用 Chatterbox 标签,或按情绪拆分内容以用于 IndexTTS-2
  4. 长度:按 30-40 秒拆分片段,以满足 Chatterbox 的限制
多说话人脚本
[Sage] Hello! *laughs* I've been looking forward to this.
[pause:0.5s]
[Alex] [excited] Same here! Let's dive right in.
[Sage] [whisper] But first, I need to tell you something...

音频后期处理

口型同步输入要求
  • 采样率:16-24kHz(取决于模型)
  • 格式:WAV(未压缩)
  • 单声道
  • 裁掉开头的静音
  • 在结尾添加 0.2 秒静音
  • 将峰值归一化至 -3dB
FFmpeg 处理
# Convert to mono 24kHz WAV, normalized
ffmpeg -i input.wav -ac 1 -ar 24000 -af "loudnorm=I=-16:TP=-3" output.wav

# Trim silence from start/end
ffmpeg -i input.wav -af "silenceremove=start_periods=1:start_threshold=-50dB,areverse,silenceremove=start_periods=1:start_threshold=-50dB,areverse" trimmed.wav

# Concatenate segments
ffmpeg -f concat -safe 0 -i filelist.txt -c copy combined.wav

口型同步方法

Wav2Lip(精度最高)

设置:

wav2lip_model: "wav2lip_gan.pth"  # Better than wav2lip.pth
face_detect_batch: 16
nosmooth: false
pad_bottom: 10

必须进行后期处理:在 Wav2Lip 输出后使用 CodeFormer(保真度 0.7)。

SadTalker(头部动作)

设置:

preprocess: "full"     # Better for novel faces
enhancer: "gfpgan"
pose_style: 10-20      # Natural conversation range
LivePortrait(表情控制)

设置:

lip_zero: 0.03         # Reduces unnatural lip movement
stitching: true        # Seamless face blending

最适合:创建高级虚拟形象、从驱动视频迁移表情。

LatentSync 1.6(最新,质量最高)

ByteDance 模型,使用 TREPA 模块在 512x512 分辨率下训练,以保证时间一致性。

InfiniteTalk(时长不限)

适用于时长超过常规口型同步限制的视频。可与 Wan 集成,实现联合生成。

完整的说话头像工作流

流水线 A:快速(图像 → 说话)
1. [Text] → Chatterbox/F5-TTS → audio.wav
2. [Character Image] + audio.wav → SadTalker → video.mp4
3. video.mp4 → GFPGAN/CodeFormer → final.mp4

耗时:约 2 分钟。质量:良好。

流水线 B:高质量(图像 → 视频 → 口型同步)
1. [Text] → Chatterbox → audio.wav
2. [Character Image] → Wan I2V → base_video.mp4
   Prompt: "person talking, slight head movement, indoor"
3. base_video.mp4 + audio.wav → Wav2Lip → lipsync.mp4
4. lipsync.mp4 → FaceDetailer batch → enhanced.mp4
5. enhanced.mp4 → Color correct + Deflicker → final.mp4

耗时:约 10 分钟。质量:可用于制作。

流水线 C:高级(表情迁移)
1. Record driving video (actor performing lines)
2. [Text] → Voice Clone TTS → audio.wav
3. [Character Image] + driving.mp4 → LivePortrait → expression_video.mp4
4. expression_video.mp4 + audio.wav → Wav2Lip → lipsync.mp4
5. lipsync.mp4 → CodeFormer → final.mp4

耗时:约 15 分钟。质量:高级。

故障排除

问题解决方案
音频不同步使用 ffmpeg 调整偏移:ffmpeg -itsoffset 0.1 -i audio.wav ...
嘴部动作不明显使用 wav2lip_gan.pth,提高音量
面部瑕疵使用 CodeFormer 进行后期处理(保真度 0.6-0.8)
克隆语音听起来机械使用更长、更干净的参考音频,提高 exaggeration
头部动作不自然将 SadTalker 的 pose_style 调低至 0-10

参考

  • references/voice-synthesis.md - 完整的语音工具文档
  • references/models.md - 语音模型下载链接
  • projects/{project}/characters/ 中的角色语音配置文件

评论

支持 Markdown