Ctrl K
ComunidadGuías…

tts_providers/providers_config.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "providers": {
    "pocket": {
      "name": "Pocket TTS",
      "provider_id": "pocket",
      "cost_per_minute": 0.0,
      "quality": "high",
      "latency": "very-fast",
      "voices": [],
      "features": [
        "voice-cloning",
        "local-processing",
        "no-api-key-required",
        "reusable-voice-state",
        "free"
      ],
      "requires_api_key": false,
      "status": "inactive",
      "description": "Pocket TTS (Kyutai) \u2014 $0 local voice cloning on the mac-node video/voice node. Clones a per-client brand voice from a ~10-20s reference clip into a reusable .safetensors state, then generates VO clips (~2-3s each). Client-facing via this Voice Cloning Studio canvas; jobs route to the mac agent over the Syncthing Dropzone bridge.",
      "documentation_url": "https://github.com/kyutai-labs/pocket-tts",
      "languages": [
        "en"
      ],
      "max_characters": 600,
      "notes": "Self-hosted on the mac-node node (handle_voice_clone). status=inactive until the OVU->mesh Dropzone bridge (POST /api/voice-clone/submit + result ingest) is wired; the studio card stays hidden while inactive, then auto-reveals like qwen3-local. Guardrail: dedicated deterministic handler, source-allowlisted the host agent, NOT the permissionless claude path.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only"
    },
    "hume": {
      "name": "Hume Octave",
      "provider_id": "hume",
      "cost_per_minute": 0.2,
      "quality": "very-high",
      "latency": "medium",
      "voices": [],
      "features": [
        "acting-direction",
        "voice-design",
        "emotion-control",
        "wav-output"
      ],
      "requires_api_key": true,
      "status": "active",
      "description": "Hume Octave \u2014 acting-direction TTS. Per-utterance description directs the performance; custom voices are designed (describe \u2192 generate \u2192 save). Also the performance-donor stage for Resemble STS character pipelines.",
      "documentation_url": "https://dev.hume.ai/docs/text-to-speech-tts/overview",
      "languages": [
        "en",
        "es",
        "fr",
        "de",
        "it",
        "pt",
        "ja",
        "ko",
        "zh"
      ],
      "max_characters": 5000,
      "notes": "REST /v0/tts (no websocket needed). HUME_API_KEY env + optional HUME_VOICE default. Cloudflare blocks non-browser User-Agents (403/1010) \u2014 provider sends a browser UA. save_voice(generation_id, name) keeps a take as a custom voice."
    },
    "supertonic": {
      "name": "Supertonic TTS",
      "provider_id": "supertonic",
      "cost_per_minute": 0.0,
      "quality": "high",
      "latency": "very-fast",
      "voices": [
        "M1",
        "M2",
        "M3",
        "M4",
        "M5",
        "F1",
        "F2",
        "F3",
        "F4",
        "F5"
      ],
      "features": [
        "multi-language",
        "local-processing",
        "open-source",
        "no-api-key-required",
        "onnx-based"
      ],
      "requires_api_key": false,
      "status": "active",
      "description": "Local ONNX-based TTS engine with multiple voice styles",
      "documentation_url": "https://github.com/playht/supertonic",
      "languages": [
        "en",
        "ko",
        "es",
        "pt",
        "fr"
      ],
      "max_characters": 10000,
      "notes": "Free, fast, local inference. Default provider.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only"
    },
    "qwen3": {
      "name": "Qwen3-TTS (fal.ai)",
      "provider_id": "qwen3",
      "cost_per_minute": 0.003,
      "quality": "very-high",
      "latency": "fast",
      "voices": [
        "Vivian",
        "Serena",
        "Dylan",
        "Eric",
        "Ryan",
        "Aiden",
        "Uncle_Fu",
        "Ono_Anna",
        "Sohee"
      ],
      "features": [
        "multilingual",
        "expressive",
        "voice-cloning",
        "emotion-control",
        "cloud",
        "mp3-output"
      ],
      "requires_api_key": true,
      "status": "active",
      "description": "Qwen3-TTS via fal.ai \u2014 voice cloning, emotion control, multilingual, 10 languages",
      "languages": [
        "en",
        "zh",
        "es",
        "fr",
        "de",
        "it",
        "ja",
        "ko",
        "pt",
        "ru"
      ],
      "max_characters": 5000,
      "notes": "Voice cloning: POST /api/tts/clone with audio sample. Use cloned voice_id in /api/tts/generate. FAL_KEY required.",
      "clone_endpoint": "/api/tts/clone",
      "clone_cost_per_minute": 0.0008,
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "mp3",
      "sample_rate": 24000
    },
    "qwen3-local": {
      "name": "Qwen3-TTS (local GPU)",
      "provider_id": "qwen3-local",
      "cost_per_minute": 0.0,
      "quality": "very-high",
      "latency": "fast",
      "voices": [],
      "features": [
        "voice-cloning",
        "multilingual",
        "local-gpu",
        "free",
        "mp3-output",
        "no-api-key"
      ],
      "requires_api_key": false,
      "status": "active",
      "description": "Qwen3-TTS-1.7B on residential RTX 3070 GPU \u2014 free, no API cost. Cloned voices only. Requires laptop + tunnel to be up.",
      "languages": [
        "en",
        "zh",
        "es",
        "fr",
        "de",
        "it",
        "ja",
        "ko",
        "pt",
        "ru"
      ],
      "max_characters": 5000,
      "notes": "Free local GPU inference via reverse SSH tunnel. Cloned voices only (.pt). Auto-disabled when laptop offline \u2014 falls back to qwen3 (fal.ai). OVUI_BRIDGE_AUTH_TOKEN required.",
      "clone_endpoint": "/api/tts/clone",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "mp3",
      "sample_rate": 24000
    },
    "qwen3-gpu": {
      "name": "Qwen3-TTS (GPU lane)",
      "provider_id": "qwen3-gpu",
      "cost_per_minute": 0.0,
      "quality": "very-high",
      "latency": "medium",
      "voices": [],
      "features": [
        "voice-cloning",
        "remote-gpu",
        "free",
        "wav-output"
      ],
      "requires_api_key": false,
      "status": "active",
      "description": "Qwen3-TTS-12Hz-1.7B-Base on the GPU lane (res-desktop-gpu) via the vcg endpoint over the tailnet. Tenant-scoped clones only.",
      "languages": [
        "en"
      ],
      "max_characters": 600,
      "notes": "OPT-IN PER TENANT, never a default: offered only when the tenant's voice-clones/_seam/policy.json lists qwen3-gpu AND the container holds a bearer at /app/runtime/secrets/vcg.token (read per request; missing = unavailable, no network call). Clones need a consent record and a reference transcript. Wire: mac-claude voice-clone-gpu-wire-v0 + vcg-build-v0.1.",
      "clone_endpoint": "/api/tts/clone",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "wav",
      "sample_rate": 24000
    },
    "qwen3-mlx": {
      "name": "Qwen3-TTS (MLX node)",
      "provider_id": "qwen3-mlx",
      "cost_per_minute": 0.0,
      "quality": "very-high",
      "latency": "fast",
      "voices": [],
      "features": [
        "voice-cloning",
        "self-hosted",
        "free",
        "wav-output",
        "no-api-key"
      ],
      "requires_api_key": false,
      "status": "active",
      "description": "Qwen3-TTS on a self-hosted Apple-silicon (mlx-audio) node over HTTP. One request per sentence, allow-listed reference voices only.",
      "languages": [
        "en"
      ],
      "max_characters": 5000,
      "notes": "QWEN_MLX_TTS_URL + QWEN_MLX_TTS_VOICES (allow-list, fail closed) required; QWEN_MLX_TTS_DENY_PREFIXES optional. Unset URL = inert. Server down = falls back via config/tts-fallback.json (qwen3-mlx -> groq -> supertonic).",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "wav",
      "sample_rate": 24000
    },
    "resemble": {
      "name": "Resemble AI (Chatterbox)",
      "provider_id": "resemble",
      "cost_per_minute": 0.1,
      "quality": "very-high",
      "latency": "very-fast",
      "voices": [],
      "features": [
        "streaming",
        "voice-cloning",
        "emotion-control",
        "ssml",
        "multilingual",
        "cloud",
        "wav-output",
        "paralinguistic-tags"
      ],
      "requires_api_key": true,
      "status": "active",
      "description": "Resemble AI Chatterbox \u2014 streaming TTS, voice cloning, emotion/exaggeration control, SSML, 90+ languages",
      "documentation_url": "https://docs.resemble.ai",
      "languages": [
        "en",
        "es",
        "fr",
        "de",
        "it",
        "pt",
        "ja",
        "ko",
        "zh",
        "ar",
        "ru",
        "hi",
        "nl",
        "pl",
        "sv",
        "da",
        "fi",
        "el",
        "cs",
        "hu",
        "ro",
        "tr",
        "uk",
        "vi",
        "th",
        "id"
      ],
      "max_characters": 2000,
      "notes": "Models: chatterbox-turbo (fastest, paralinguistic tags), chatterbox (emotion/exaggeration), chatterbox-multilingual (23 langs). Voice cloning via Resemble dashboard. RESEMBLE_API_KEY + RESEMBLE_VOICE_UUID required.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "wav",
      "sample_rate": 24000
    },
    "elevenlabs": {
      "name": "ElevenLabs",
      "provider_id": "elevenlabs",
      "cost_per_minute": 0.3,
      "quality": "premium",
      "latency": "fast",
      "voices": [],
      "features": [
        "voice-cloning",
        "multilingual",
        "streaming",
        "emotion-control",
        "cloud",
        "mp3-output"
      ],
      "requires_api_key": true,
      "status": "active",
      "description": "ElevenLabs \u2014 premium TTS with instant voice cloning, multilingual, emotion control",
      "languages": [
        "en",
        "es",
        "fr",
        "de",
        "it",
        "pt",
        "ja",
        "ko",
        "zh",
        "ar",
        "ru",
        "hi",
        "pl",
        "tr",
        "nl",
        "sv"
      ],
      "max_characters": 5000,
      "notes": "Premium quality. Models: eleven_multilingual_v2 (default), eleven_turbo_v2_5 (faster). ELEVENLABS_API_KEY required. Voices populated dynamically from API.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "mp3",
      "sample_rate": 44100
    },
    "groq": {
      "name": "Groq Orpheus",
      "provider_id": "groq",
      "cost_per_minute": 0.05,
      "quality": "high",
      "latency": "very-fast",
      "voices": [
        "autumn",
        "diana",
        "hannah",
        "austin",
        "daniel",
        "troy"
      ],
      "features": [
        "streaming",
        "natural",
        "empathetic",
        "cloud",
        "mp3-output"
      ],
      "requires_api_key": true,
      "status": "active",
      "description": "Orpheus TTS (canopylabs/orpheus-v1-english) via Groq LPU \u2014 ~130-200ms, very natural",
      "languages": [
        "en"
      ],
      "max_characters": 5000,
      "notes": "~130-200ms latency on Groq LPU. Natural human-like prosody. GROQ_API_KEY required.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only",
      "audio_format": "mp3",
      "sample_rate": 24000
    },
    "grok": {
      "name": "Grok / xAI TTS",
      "provider_id": "grok",
      "cost_per_minute": 0.0,
      "quality": "high",
      "latency": "fast",
      "voices": [
        "eve",
        "ara",
        "rex",
        "sal",
        "leo"
      ],
      "features": [
        "streaming",
        "websocket",
        "multilingual",
        "cloud"
      ],
      "requires_api_key": true,
      "status": "inactive",
      "description": "Grok / xAI text-to-speech (api.x.ai). Unary REST plus a websocket streaming path.",
      "documentation_url": "https://docs.x.ai/developers/model-capabilities/audio/text-to-speech",
      "languages": [
        "en"
      ],
      "max_characters": 5000,
      "notes": "XAI_API_KEY required; inactive and inert until it is set. Contributed via the Bartok9 fork. Pricing not pinned here \u2014 check xAI's current rates.",
      "requires_microphone": false,
      "requires_websocket": false,
      "mode": "tts-only"
    }
  },
  "default_provider": "supertonic",
  "version": "1.2.0",
  "last_updated": "2026-02-21"
}