app.py Gemini/Twilio w/ robust error handling, faster image encoding, and UI status updates #88
+299
−105
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note, while this code worked with gradio_webrtc==0.0.28 (modulo the bugs previously discussed googleapis/python-genai#380 and aiortc/aiortc#1258 ), it currently crashes with fastrtc==0.0.6 when run locally on an m3 mac.

with this version info, while running on an m3 mac:
And the output doesn't betray any major errors:
However, the current app.py also fails similarly on fastrtc==0.0.6 when run locally, as did this suggested huggingface spaces version b88286b.
Continuing from this discussion:
https://huggingface.co/spaces/freddyaboulton/gemini-audio-video-chat/discussions/1
See also the bugs previously discussed:
googleapis/python-genai#380 and aiortc/aiortc#1258
This commit improves the Gemini and Twilio integration with a focus on better error handling, UI feedback, connection stability, and faster image encoding.
encode_image
with comprehensive input validation (NaN/Inf, shape), normalization, and faster JPEG encoding error handling using OpenCV.GeminiHandler.shutdown
method is more robust to ensure proper cleanup and prevent lingering issues.