File size: 1,057 Bytes
d60934b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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()
|