Co-authored-by: Freddy Boulton <freddyboulton@hf-freddy.local>
This commit is contained in:
Freddy Boulton
2025-02-03 15:16:16 -05:00
committed by GitHub
parent b6d8e6a57f
commit 36190066ec
2 changed files with 14 additions and 7 deletions

View File

@@ -75,14 +75,16 @@ with gr.Blocks(css=css) as demo:
with gr.Column(elem_classes=["my-column"]): with gr.Column(elem_classes=["my-column"]):
with gr.Group(elem_classes=["my-group"]): with gr.Group(elem_classes=["my-group"]):
image = WebRTC( image = WebRTC(
label="Stream", rtc_configuration=rtc_configuration, label="Stream",
rtc_configuration=rtc_configuration,
mode="send-receive", mode="send-receive",
modality="video", modality="video",
track_constraints={"width": {"exact": 800}, track_constraints={
"height": {"exact": 600}, "width": {"exact": 800},
"aspectRatio": {"exact": 1.33333} "height": {"exact": 600},
}, "aspectRatio": {"exact": 1.33333},
rtp_params={"degradationPreference": "maintain-resolution"} },
rtp_params={"degradationPreference": "maintain-resolution"},
) )
conf_threshold = gr.Slider( conf_threshold = gr.Slider(
label="Confidence Threshold", label="Confidence Threshold",

View File

@@ -200,6 +200,7 @@ Here is a complete example of using `AsyncStreamHandler` for using the Google Ge
self.input_queue = asyncio.Queue() self.input_queue = asyncio.Queue()
self.output_queue = asyncio.Queue() self.output_queue = asyncio.Queue()
self.quit = asyncio.Event() self.quit = asyncio.Event()
self.connected = asyncio.Event()
def copy(self) -> "GeminiHandler": def copy(self) -> "GeminiHandler":
return GeminiHandler( return GeminiHandler(
@@ -219,6 +220,7 @@ Here is a complete example of using `AsyncStreamHandler` for using the Google Ge
async with client.aio.live.connect( async with client.aio.live.connect(
model="gemini-2.0-flash-exp", config=config model="gemini-2.0-flash-exp", config=config
) as session: ) as session:
self.connected.set()
async for audio in session.start_stream( async for audio in session.start_stream(
stream=self.stream(), mime_type="audio/pcm" stream=self.stream(), mime_type="audio/pcm"
): ):
@@ -240,7 +242,10 @@ Here is a complete example of using `AsyncStreamHandler` for using the Google Ge
async def emit(self): async def emit(self):
if not self.args_set.is_set(): if not self.args_set.is_set():
await self.wait_for_args() await self.wait_for_args()
asyncio.create_task(self.generator())
if not self.connected.is_set():
asyncio.create_task(self.generator())
await self.connected.wait()
array = await self.output_queue.get() array = await self.output_queue.get()
return (self.output_sample_rate, array) return (self.output_sample_rate, array)