40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
|
|
import os
|
||
|
|
import requests
|
||
|
|
from dotenv import load_dotenv
|
||
|
|
|
||
|
|
load_dotenv()
|
||
|
|
|
||
|
|
def elevenlabs_gen(text: str, output_wav_pth: str):
|
||
|
|
# Hol dir den API-Key aus deiner .env Datei
|
||
|
|
api_key = os.getenv("ELEVENLABS_API_KEY")
|
||
|
|
|
||
|
|
# TRAGE HIER DEINE GEWÜNSCHTE STIMMEN-ID EIN!
|
||
|
|
voice_id = "aFueGIISJUmscc05ZNfD"
|
||
|
|
|
||
|
|
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",
|
||
|
|
"voice_settings": {
|
||
|
|
"stability": 0.5,
|
||
|
|
"similarity_boost": 0.75
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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"[ElevenLabs] FEHLER: {response.text}")
|