import os | |
import requests | |
class VoiceoverAgent: | |
def __init__(self): | |
self.api_key = os.getenv("ELEVENLABS_API_KEY") | |
self.voice_id = "21m00Tcm4TlvDq8ikWAM" # Rachel (default female voice) | |
self.model = "eleven_monolingual_v1" | |
def generate_voiceover(self, text): | |
if not self.api_key: | |
print("Error: ELEVENLABS_API_KEY not found in environment variables.") | |
return None | |
url = f"https://api.elevenlabs.io/v1/text-to-speech/{self.voice_id}" | |
headers = { | |
"xi-api-key": self.api_key, | |
"Accept": "audio/mpeg", | |
"Content-Type": "application/json" | |
} | |
payload = { | |
"text": text, | |
"model_id": self.model, | |
"voice_settings": { | |
"stability": 0.7, | |
"similarity_boost": 0.8 | |
} | |
} | |
try: | |
response = requests.post(url, headers=headers, json=payload) | |
if response.status_code == 200: | |
return response.content # audio bytes | |
else: | |
print(f"[Voiceover Error] HTTP {response.status_code}: {response.text}") | |
return None | |
except requests.exceptions.RequestException as e: | |
print(f"[Voiceover Exception] {e}") | |
return None | |