...
This commit is contained in:
@@ -187,7 +187,7 @@ class TTSService(AIService):
|
|||||||
|
|
||||||
# Convenience function to send the audio for a sentence to the given queue
|
# Convenience function to send the audio for a sentence to the given queue
|
||||||
async def say(self, sentence, queue: asyncio.Queue|None=None):
|
async def say(self, sentence, queue: asyncio.Queue|None=None):
|
||||||
queue = queue or self.output_queue
|
queue = queue or self.sink
|
||||||
if not queue:
|
if not queue:
|
||||||
raise Exception("No queue to send audio to")
|
raise Exception("No queue to send audio to")
|
||||||
await self.run_to_queue(queue, [TextQueueFrame(sentence)])
|
await self.run_to_queue(queue, [TextQueueFrame(sentence)])
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ class BaseTransportService():
|
|||||||
|
|
||||||
self._stop_threads.set()
|
self._stop_threads.set()
|
||||||
|
|
||||||
#await self.send_queue.put(EndStreamQueueFrame())
|
|
||||||
await async_output_queue_marshal_task
|
await async_output_queue_marshal_task
|
||||||
await self.send_queue.join()
|
await self.send_queue.join()
|
||||||
self._frame_consumer_thread.join()
|
self._frame_consumer_thread.join()
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ class DailyTransportService(BaseTransportService, EventHandler):
|
|||||||
def _post_run(self):
|
def _post_run(self):
|
||||||
self.client.leave()
|
self.client.leave()
|
||||||
|
|
||||||
def on_first_other_participant_joined(self):
|
def on_first_other_participant_joined(self, participant):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def call_joined(self, join_data, client_error):
|
def call_joined(self, join_data, client_error):
|
||||||
@@ -226,7 +226,7 @@ class DailyTransportService(BaseTransportService, EventHandler):
|
|||||||
def on_participant_joined(self, participant):
|
def on_participant_joined(self, participant):
|
||||||
if not self._other_participant_has_joined and participant["id"] != self._my_participant_id:
|
if not self._other_participant_has_joined and participant["id"] != self._my_participant_id:
|
||||||
self._other_participant_has_joined = True
|
self._other_participant_has_joined = True
|
||||||
self.on_first_other_participant_joined()
|
self.on_first_other_participant_joined(participant)
|
||||||
|
|
||||||
def on_participant_left(self, participant, reason):
|
def on_participant_left(self, participant, reason):
|
||||||
if len(self.client.participants()) < self._min_others_count + 1:
|
if len(self.client.participants()) < self._min_others_count + 1:
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import os
|
import os
|
||||||
|
from dailyai.queue_frame import EndStreamQueueFrame
|
||||||
|
|
||||||
from dailyai.services.daily_transport_service import DailyTransportService
|
from dailyai.services.daily_transport_service import DailyTransportService
|
||||||
from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService
|
from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService
|
||||||
@@ -42,15 +43,14 @@ async def main(room_url):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Register an event handler so we can play the audio when the participant joins.
|
# Register an event handler so we can play the audio when the participant joins.
|
||||||
@transport.event_handler("on_participant_joined")
|
@transport.event_handler("on_first_other_participant_joined")
|
||||||
async def on_participant_joined(transport, participant):
|
async def on_first_other_participant_joined(transport, participant):
|
||||||
nonlocal tts
|
nonlocal tts
|
||||||
if participant["info"]["isLocal"]:
|
|
||||||
return
|
|
||||||
|
|
||||||
await tts.say(
|
await tts.say(
|
||||||
"Hello there, " + participant["info"]["userName"] + "!"
|
"Hello there, " + participant["info"]["userName"] + "!"
|
||||||
)
|
)
|
||||||
|
await tts.sink.put(EndStreamQueueFrame())
|
||||||
|
|
||||||
# wait for the output queue to be empty, then leave the meeting
|
# wait for the output queue to be empty, then leave the meeting
|
||||||
await transport.stop_when_done()
|
await transport.stop_when_done()
|
||||||
|
|||||||
Reference in New Issue
Block a user