• Stefy Lanza (nextime / spora )'s avatar
    tts: run coqui XTTS from a venv of its own · ef38f017
    Stefy Lanza (nextime / spora ) authored
    coqui-tts imports a transformers 4.x symbol that 5.x removed. Unlike parler and
    the OCR engines it had never been isolated locally: _CoquiBackend did a plain
    'from TTS.api import TTS' and gave up when it was missing. On a pod that meant
    an image with a verified, working TTS venv answered 'pip install coqui-tts' —
    the venv was there and nothing knew to use it.
    
    xtts_worker finds the venv the way the others do (explicit env var, the baked
    /opt/coderai/venvs/TTS, then per-user) and drives tools/xtts_service.py in it
    over stdin/stdout. XttsSubprocess wears the TTS object's shape — speakers,
    tts(**kwargs), synthesizer.output_sample_rate, and the TypeError the backend
    relies on to retry without speed — so synthesize() runs unchanged whether the
    library is in this process or next door.
    
    Verified inside the pushed image: the venv is found and the service answers
    from it. The fall-through is unit-tested with a fake worker, and the error when
    no venv exists names the places it looked.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0182DhR1eFNPQyGmDrpHbedY
    ef38f017
tts_backends.py 22 KB