Skip to content

Commit

Permalink
fix bug and optimize keepalive
Browse files Browse the repository at this point in the history
  • Loading branch information
lauridsdev committed Sep 21, 2024
1 parent 26a64af commit c6ece61
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/pipecat/services/elevenlabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import asyncio
import base64
import json
import time

from typing import Any, AsyncGenerator, List, Literal, Mapping, Tuple
from pydantic import BaseModel
Expand Down Expand Up @@ -117,6 +118,7 @@ def __init__(
# there's an interruption or TTSStoppedFrame.
self._started = False
self._cumulative_time = 0
self._last_message_time = 0

def can_generate_metrics(self) -> bool:
return True
Expand All @@ -134,8 +136,9 @@ async def set_voice(self, voice: str):
await self._connect()

async def start(self, frame: StartFrame):
await super().start(frame)
await self._connect()
if not (self._websocket and self._websocket.open):
await super().start(frame)
await self._connect()

async def stop(self, frame: EndFrame):
await super().stop(frame)
Expand Down Expand Up @@ -225,7 +228,9 @@ async def _keepalive_task_handler(self):
while True:
try:
await asyncio.sleep(10)
await self._send_text("")
current_time = time.time()
if current_time - self._last_message_time >= 10:
await self._send_text("")
except asyncio.CancelledError:
break
except Exception as e:
Expand All @@ -235,6 +240,7 @@ async def _send_text(self, text: str):
if self._websocket:
msg = {"text": text + " "}
await self._websocket.send(json.dumps(msg))
self._last_message_time = time.time()

async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
logger.debug(f"Generating TTS: [{text}]")
Expand Down

0 comments on commit c6ece61

Please sign in to comment.