|
from elevenlabs import ElevenLabs,Voice,VoiceSettings,play |
|
import os |
|
|
|
class TextToSpeech: |
|
def __init__(self): |
|
self.client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY")) |
|
|
|
async def synthesize(self,text:str): |
|
if not text.strip(): |
|
raise ValueError("Input text cannot be empty") |
|
if len(text)>5000: |
|
raise ValueError("Input text cannot exceed 5000 characters") |
|
try: |
|
|
|
audio_generator =self.client.generate( |
|
text=text, |
|
voice=Voice( |
|
voice_id=os.getenv("ELEVENLABS_VOICE_ID"), |
|
settings=VoiceSettings(stability=0.5, similarity_boost=0.5), |
|
), |
|
model=os.getenv("TTS_MODEL_NAME"), |
|
|
|
) |
|
audio_bytes = b"".join(audio_generator) |
|
return audio_bytes |
|
except Exception as e: |
|
print(f"Error synthesizing text: {str(e)}") |
|
return None |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
import asyncio |
|
async def main(): |
|
tts = TextToSpeech() |
|
audio_bytes = await tts.synthesize('''इपिङ सफ्टवेयरले गुगलको ट्रान्सलिटरेसन सेवा प्रयोग गर्दछ। यसले छिटो र सही टाइपिङ प्रदान गर्दछ, जसले वेबमा नेपाली भाषा टाइप गर्न सजिलो बनाउँछ। तपाईंले अंग्रेजीमा शब्द टाइप गरी स्पेसबार थिचेपछि, उक्त शब्द नेपालीमा रूपान्तरण हुनेछ। तपाईंले ब्याकस्पेस थिचेर वा चयन गरिएको शब्दमा क्लिक गरेर थप विकल्पहरू पनि प्राप्त गर्न सक्नुहुन्छ। यो प्रक्रिया छिटो छ र असीमित क्यारेक्टरहरू र शब्दहरू रूपान्तरण गर्न सक्षम छ। अझै, स्पेसबार थिचेपछि, पाठ तपाईंको कम्प्युटरमा स्वचालित रूपमा सुरक्षित हुनेछ, जसले ब्राउजर क्र्यास भएमा वा पछि पुन: आगमन गर्दा पहिलेको रूपान्तरण गरिएको पाठ पुन: प्राप्त गर्न मद्दत गर्दछ। ''') |
|
play(audio_bytes) |
|
|
|
|
|
asyncio.run(main()) |
|
|
|
|