from dotenv import load_dotenv from elevenlabs.client import ElevenLabs from elevenlabs import play from app.core.logging import LoggerMixin import os import io load_dotenv() class TTSService(LoggerMixin): def __init__(self): self.api_key = os.getenv("ELEVEN_LABS_API_KEY") if not self.api_key: self.logger.error("ELEVEN_LABS_API_KEY not found in environment variables") raise ValueError("ELEVEN_LABS_API_KEY is required") self.client = ElevenLabs(api_key=self.api_key) def convert_text_to_speech(self, text: str) -> bytes: """Convert text to speech using ElevenLabs""" audio_stream = self.client.text_to_speech.convert( text=text, voice_id="JBFqnCBsd6RMkjVDRZzb", model_id="eleven_multilingual_v2", output_format="mp3_44100_128", ) # Convert the generator to bytes buffer = io.BytesIO() for chunk in audio_stream: buffer.write(chunk) return buffer.getvalue()