From 00b10f17c1ababdcb284063f82a9507df33e0b28 Mon Sep 17 00:00:00 2001 From: Ahmad Alghooneh Date: Thu, 16 Jan 2025 00:41:09 -0500 Subject: [PATCH] eleven labs --- application/tts/elevenlabs.py | 80 ++++++++++++++++++------------- application/tts/output_audio.mp3 | Bin 0 -> 30511 bytes 2 files changed, 46 insertions(+), 34 deletions(-) create mode 100644 application/tts/output_audio.mp3 diff --git a/application/tts/elevenlabs.py b/application/tts/elevenlabs.py index 96fb1f43..0d982d31 100644 --- a/application/tts/elevenlabs.py +++ b/application/tts/elevenlabs.py @@ -8,41 +8,62 @@ from base import BaseTTS class ElevenlabsTTS(BaseTTS): def __init__(self): - self.api_key = 'sk_19b72c883e8bdfcec2705be2d048f3830a40d2faa4b76b26' - self.model = "eleven_multilingual_v2" - self.voice = "Brian" + self.api_key = 'ELEVENLABS_API_KEY'# here you should put your api key + self.model = "eleven_flash_v2_5" + self.voice = "VOICE_ID" # this is the hash code for the voice not the name! + self.write_audio = 1 def text_to_speech(self, text): - audio_bytes = asyncio.run(self._text_to_speech_websocket(text)) - audio_base64 = base64.b64encode(audio_bytes).decode("utf-8") - lang = "en" - return audio_base64, lang + asyncio.run(self._text_to_speech_websocket(text)) async def _text_to_speech_websocket(self, text): uri = f"wss://api.elevenlabs.io/v1/text-to-speech/{self.voice}/stream-input?model_id={self.model}" - + websocket = await websockets.connect(uri) payload = { - "text": text, - "model_id": self.model, + "text": " ", "voice_settings": { - "voice_id": self.voice + "stability": 0.5, + "similarity_boost": 0.8, }, - "xi-api-key": self.api_key, - "Accept": "audio/mpeg" + "xi_api_key": self.api_key, } - audio_data = BytesIO() - async with websockets.connect(uri) as websocket: - - await websocket.send(json.dumps(payload)) - - async for message in websocket: - if isinstance(message, bytes): - audio_data.write(message) - else: - print("Received a non-binary frame:", message) + await websocket.send(json.dumps(payload)) + + async def listen(): + while 1: + try: + msg = await websocket.recv() + data = json.loads(msg) - return audio_data.getvalue() + if data.get("audio"): + print("audio received") + yield base64.b64decode(data["audio"]) + elif data.get("isFinal"): + break + except websockets.exceptions.ConnectionClosed: + print("websocket closed") + break + listen_task = asyncio.create_task(self.stream(listen())) + + await websocket.send(json.dumps({"text": text})) + # this is to signal the end of the text, either use this or flush + await websocket.send(json.dumps({"text": ""})) + + await listen_task + + async def stream(self, audio_stream): + if self.write_audio: + audio_bytes = BytesIO() + async for chunk in audio_stream: + if chunk: + audio_bytes.write(chunk) + with open("output_audio.mp3", "wb") as f: + f.write(audio_bytes.getvalue()) + + else: + async for chunk in audio_stream: + pass # depends on the streamer! def test_elevenlabs_websocket(): @@ -54,16 +75,7 @@ def test_elevenlabs_websocket(): tts = ElevenlabsTTS() # Call the method with some sample text - audio_base64, lang = tts.text_to_speech("Hello from ElevenLabs WebSocket!") - - print(f"Received language: {lang}") - print(f"Base64 Audio (truncated): {audio_base64[:100]}...") - - # Optional: Save the audio to a local file for manual listening. - # We'll assume the audio is in MP3 format based on "Accept": "audio/mpeg". - audio_bytes = base64.b64decode(audio_base64) - with open("output_audio.mp3", "wb") as f: - f.write(audio_bytes) + tts.text_to_speech("Hello from ElevenLabs WebSocket!") print("Saved audio to output_audio.mp3.") diff --git a/application/tts/output_audio.mp3 b/application/tts/output_audio.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fd0bed293895a9cff3197d827b71c71c75e0368f GIT binary patch literal 30511 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 DsOI7j literal 0 HcmV?d00001