| 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 | |