modelbeast/server/operators/voice_clone_local/manifest.json
type-two 110b2298b7 audio/video/text operator suite: stt_local, lipsync_local, voice_clone_local, wan_video, llm_local
- stt_local: Whisper large-v3-turbo MLX, transcript + timestamped json
- lipsync_local: Rhubarb visemes (CPU lane), dialog-guided
- voice_clone_local: Chatterbox on MPS (needs setuptools<81 for perth/pkg_resources)
- wan_video: Wan 2.2 TI2V-5B t2v/i2v via resident ComfyUI, frames->mp4
- llm_local: Qwen3-30B-A3B-4bit dialogue writer (primary-only)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:26:51 +10:00

20 lines
1.1 KiB
JSON

{
"id": "voice_clone_local",
"name": "Voice Clone (local, Chatterbox)",
"category": "audio",
"description": "Reference voice WAV (~10s of clean speech) + text → that voice speaking the line. Chatterbox (Resemble AI, MIT) on MPS, with an emotion 'exaggeration' knob (0.3 flat … 0.7 dramatic). Record one growl per monster, save it in character_kit/voices/, and every line that character ever speaks comes out in-voice. Output is watermarked as AI audio (Perth, inaudible) by the model vendor. Slower than tts_local — use Kokoro for stock voices.",
"accepts": ["audio"],
"produces": ["audio"],
"resources": "gpu",
"entry": "run.py",
"python": "venvs/chatterbox/bin/python",
"params_schema": {
"type": "object",
"properties": {
"text": {"type": "string", "default": "", "description": "The line to speak"},
"exaggeration": {"type": "number", "default": 0.5, "minimum": 0.25, "maximum": 1.0, "description": "Emotion intensity (0.5 = neutral-ish)"},
"cfg_weight": {"type": "number", "default": 0.5, "minimum": 0.2, "maximum": 1.0, "description": "Lower = slower, more deliberate delivery"}
}
}
}