43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import os
|
|
import requests
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
# HIER IST DER FIX: Die Funktion nimmt jetzt das 3. Argument (voice_id) an!
|
|
def elevenlabs_gen(text: str, output_wav_pth: str, voice_id: str):
|
|
# Hol dir den API-Key aus deiner .env Datei
|
|
api_key = os.getenv("ELEVENLABS_API_KEY")
|
|
|
|
# URL nutzt jetzt die dynamische voice_id!
|
|
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
|
|
|
|
headers = {
|
|
"Accept": "audio/mpeg",
|
|
"Content-Type": "application/json",
|
|
"xi-api-key": api_key
|
|
}
|
|
|
|
data = {
|
|
"text": text,
|
|
"model_id": "eleven_v3", # Oder "eleven_turbo_v2_5" für weniger Latenz
|
|
"voice_settings": {
|
|
"stability": 0.5,
|
|
"similarity_boost": 0.75
|
|
}
|
|
}
|
|
|
|
try:
|
|
response = requests.post(url, json=data, headers=headers)
|
|
|
|
if response.status_code == 200:
|
|
# ElevenLabs schickt Audio, wir speichern es direkt auf die Platte
|
|
with open(output_wav_pth, 'wb') as f:
|
|
f.write(response.content)
|
|
print(f"[ElevenLabs] Audio erfolgreich generiert -> {output_wav_pth}")
|
|
else:
|
|
print(f"\n[ElevenLabs] API FEHLER {response.status_code}: {response.text}\n")
|
|
|
|
except Exception as e:
|
|
print(f"\n[ElevenLabs] INTERNER FEHLER: {e}\n")
|