mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-05 18:09:23 +08:00
code (#56)
Co-authored-by: Freddy Boulton <freddyboulton@hf-freddy.local>
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user