Feat: natürlichere EL-Stimme — multilingual_v2 + voice_settings (niedrige Stability/Style)
Flash v2.5 (Tempo-Modell) + fehlende voice_settings klangen roboterhaft. Jetzt eleven_multilingual_v2 + stability 0.4 / similarity 0.8 / style 0.35 / speaker_boost → ausdrucksstärker. Alles env-überschreibbar. Hinweis: multilingual_v2 = 1 Credit/Zeichen (Flash war 0.5). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+16
-2
@@ -71,8 +71,13 @@ def active_ref() -> str:
|
||||
# ElevenLabs (Premium-Cloud-TTS): saubere, native deutsche Stimmen (Voice Library). Key wird zur
|
||||
# Laufzeit gelesen (env ODER ~/.hermes/.env), damit Nachtragen ohne Code-Deploy reicht. Default-
|
||||
# Modell = Flash v2.5 (multilingual, 0,5 Credit/Zeichen → schont das Free-Tier-Kontingent).
|
||||
ELEVEN_MODEL = os.environ.get("VOICE_ELEVENLABS_MODEL", "eleven_flash_v2_5")
|
||||
# multilingual_v2 = natürlichstes Modell (statt Flash, das auf Tempo optimiert/flacher ist).
|
||||
ELEVEN_MODEL = os.environ.get("VOICE_ELEVENLABS_MODEL", "eleven_multilingual_v2")
|
||||
ELEVEN_DEFAULT_VOICE = os.environ.get("VOICE_ELEVENLABS_VOICE", "21m00Tcm4TlvDq8ikWAM")
|
||||
# Stimm-Settings: niedrige Stability = ausdrucksstärker/lebendiger (hohe = monoton/roboterhaft).
|
||||
ELEVEN_STABILITY = float(os.environ.get("VOICE_ELEVENLABS_STABILITY", "0.4"))
|
||||
ELEVEN_SIMILARITY = float(os.environ.get("VOICE_ELEVENLABS_SIMILARITY", "0.8"))
|
||||
ELEVEN_STYLE = float(os.environ.get("VOICE_ELEVENLABS_STYLE", "0.35"))
|
||||
HERMES_ENV = Path.home() / ".hermes" / ".env"
|
||||
# Edge-TTS: native deutsche Azure-Neural-Stimmen, gratis & ohne Key (kein Cloning → kein Akzent).
|
||||
EDGE_DEFAULT = os.environ.get("VOICE_EDGE_VOICE", "de-DE-KatjaNeural")
|
||||
@@ -227,7 +232,16 @@ def elevenlabs_tts(text: str, voice: str) -> bytes:
|
||||
if not key:
|
||||
raise HTTPException(503, "ELEVENLABS_API_KEY nicht gesetzt (in ~/.hermes/.env eintragen).")
|
||||
vid = voice or ELEVEN_DEFAULT_VOICE
|
||||
body = json.dumps({"text": text, "model_id": ELEVEN_MODEL}).encode("utf-8")
|
||||
body = json.dumps({
|
||||
"text": text,
|
||||
"model_id": ELEVEN_MODEL,
|
||||
"voice_settings": {
|
||||
"stability": ELEVEN_STABILITY,
|
||||
"similarity_boost": ELEVEN_SIMILARITY,
|
||||
"style": ELEVEN_STYLE,
|
||||
"use_speaker_boost": True,
|
||||
},
|
||||
}).encode("utf-8")
|
||||
req = urllib.request.Request(
|
||||
f"https://api.elevenlabs.io/v1/text-to-speech/{vid}",
|
||||
data=body,
|
||||
|
||||
Reference in New Issue
Block a user