Skip to content

Commit

Permalink
Merge pull request #28 from daily-co/update-playht-service
Browse files Browse the repository at this point in the history
Update playht service
  • Loading branch information
Moishe authored Feb 14, 2024
2 parents cc7877f + dcbd793 commit 53e97bd
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
28 changes: 16 additions & 12 deletions src/dailyai/services/playht_ai_service.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
import io
import os
import struct
from pyht import Client
from dotenv import load_dotenv
from pyht.client import TTSOptions
from pyht.protos.api_pb2 import Format

from services.ai_service import AIService
from dailyai.services.ai_services import TTSService


class PlayHTAIService(AIService):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class PlayHTAIService(TTSService):

self.speech_key = os.getenv("PLAY_HT_KEY") or ''
self.user_id = os.getenv("PLAY_HT_USER_ID") or ''
def __init__(
self,
*,
api_key,
user_id,
voice_url
):
super().__init__()

self.speech_key = api_key
self.user_id = user_id

self.client = Client(
user_id=self.user_id,
api_key=self.speech_key,
)
self.options = TTSOptions(
voice="s3://voice-cloning-zero-shot/820da3d2-3a3b-42e7-844d-e68db835a206/sarah/manifest.json",
voice=voice_url,
sample_rate=16000,
quality="higher",
format=Format.FORMAT_WAV)

def close(self):
super().close()
def __del__(self):
self.client.close()

def run_tts(self, sentence):
async def run_tts(self, sentence):
b = bytearray()
in_header = True
for chunk in self.client.tts(sentence, self.options):
Expand Down
11 changes: 11 additions & 0 deletions src/examples/foundational/01-say-one-thing.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from dailyai.services.daily_transport_service import DailyTransportService
from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService
from dailyai.services.playht_ai_service import PlayHTAIService

from examples.foundational.support.runner import configure

Expand All @@ -26,14 +27,23 @@ async def main(room_url):
meeting_duration_minutes,
mic_enabled=True
)

"""
tts = ElevenLabsTTSService(
aiohttp_session=session,
api_key=os.getenv("ELEVENLABS_API_KEY"),
voice_id=os.getenv("ELEVENLABS_VOICE_ID"))
"""
tts = PlayHTAIService(
api_key=os.getenv("PLAY_HT_API_KEY"),
user_id=os.getenv("PLAY_HT_USER_ID"),
voice_url=os.getenv("PLAY_HT_VOICE_URL"),
)

# Register an event handler so we can play the audio when the participant joins.
@transport.event_handler("on_participant_joined")
async def on_participant_joined(transport, participant):
nonlocal tts
if participant["info"]["isLocal"]:
return

Expand All @@ -46,6 +56,7 @@ async def on_participant_joined(transport, participant):
await transport.stop_when_done()

await transport.run()
del(tts)


if __name__ == "__main__":
Expand Down

0 comments on commit 53e97bd

Please sign in to comment.