Cleanup: nur noch ElevenLabs + Edge (Chatterbox/Piper/Referenz-Upload raus); EL-Library-Voices gefiltert
Ursache des Dauerfehlers: "Standardstimme" = Rachel = Library-Voice → Free-Tier verbietet die per API (402). Fix: /voices liefert bei ElevenLabs NUR eigene Stimmen (category!=premade); Picker wählt automatisch die erste echte Stimme (nie leer/Standardstimme). UI auf 2 Engines reduziert (EL premium + Edge gratis), Default-Engine = elevenlabs. Chatterbox/Piper aus /voices+/health entfernt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -265,9 +265,12 @@ def elevenlabs_list() -> list[dict]:
|
||||
req = urllib.request.Request("https://api.elevenlabs.io/v1/voices", headers={"xi-api-key": key})
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
data = json.loads(r.read())
|
||||
# NUR eigene Stimmen (generated/cloned/professional) — Library-/premade-Stimmen sperrt das
|
||||
# Free-Tier per API (402). So landet im Picker nie eine unbrauchbare Stimme.
|
||||
return [
|
||||
{"engine": "elevenlabs", "id": v["voice_id"], "label": v.get("name", v["voice_id"]), "clonable": False}
|
||||
{"engine": "elevenlabs", "id": v["voice_id"], "label": v.get("name", v["voice_id"])}
|
||||
for v in data.get("voices", [])
|
||||
if v.get("category") != "premade"
|
||||
]
|
||||
except Exception: # noqa: BLE001
|
||||
log.warning("ElevenLabs-Stimmenliste fehlgeschlagen", exc_info=True)
|
||||
@@ -356,15 +359,15 @@ class TTSIn(BaseModel):
|
||||
@app.get("/health")
|
||||
def health() -> dict:
|
||||
return {"ok": True, "stt_model": STT_MODEL,
|
||||
"engines": ["edge", "piper", "chatterbox", "elevenlabs"],
|
||||
"elevenlabs_key": bool(_eleven_key()),
|
||||
"piper_voices": [v["id"] for v in piper_list()]}
|
||||
"engines": ["elevenlabs", "edge"],
|
||||
"elevenlabs_key": bool(_eleven_key())}
|
||||
|
||||
|
||||
@app.get("/voices")
|
||||
def voices() -> dict:
|
||||
return {"voices": edge_list() + piper_list() + chatterbox_list() + elevenlabs_list(),
|
||||
"default": {"engine": "piper", "voice": PIPER_DEFAULT}}
|
||||
# Nur die genutzten Engines: ElevenLabs (eigene Stimme) + Edge (gratis, nativ-deutsch).
|
||||
return {"voices": elevenlabs_list() + edge_list(),
|
||||
"default": {"engine": "edge", "voice": EDGE_DEFAULT}}
|
||||
|
||||
|
||||
@app.post("/stt")
|
||||
|
||||
Reference in New Issue
Block a user