# How I built a Google I/O keynote demo in 30 minutes

Source: https://www.youtube.com/watch?v=tErMAB5FKNw
Recap page: https://rapidrecap.app/video/tErMAB5FKNw
Generated: 2025-11-12T21:06:19.231+00:00

---
## Quick Overview

The presenter successfully built and demonstrated a plant identifier app in 30 minutes using Flutter, Firebase AI Logic, and the Gemini Live API, showcasing real-time multimodal interaction capabilities that enabled the AI to identify objects from video input and provide conversational responses.

**Key Points:**
- The entire Google I/O keynote demo application, a plant identifier, was built in approximately 30 minutes using Flutter and Firebase AI Logic.
- The application leverages the Gemini Live API for real-time bidirectional streaming of voice and video input/output to enable natural, human-like conversations.
- Key technical components included the 'record' package for 16-bit PCM audio input at 16kHz and the 'flutter_soloud' package for 24kHz audio output streaming.
- The system instruction for the Gemini model was crafted to have it act as an enthusiastic game show host, facilitating an 'I Spy' game where it identifies objects from the user's camera feed.
- The demonstration confirmed that the setup works across target platforms including iOS, Android, and Web, with image capture at 1 FPS using `ResolutionPreset.veryHigh` (though lower resolution was suggested for optimization).
- The presenter used the Firebase AI Playground to quickly deploy the sample app, emphasizing that no native audio API code was required, simplifying cross-platform development.

![Screenshot at 00:15: The video displays the Google I/O 'What's new in Flutter' keynote video playing, which the presenter references as the inspiration for this rapid demonstration build.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-00-15.png)

**Context:** The video documents the process undertaken by Khanh Nguyen, a Developer Relations Engineer, to rapidly create a functional demonstration application for the Google I/O keynote. This application was designed to showcase the capabilities of the Gemini Live API integrated with Flutter and Firebase AI Logic, specifically focusing on handling real-time multimodal input (audio and video) for object identification and conversational feedback.

## Detailed Analysis

The presenter details how she constructed a functional, real-time multimodal application—a plant identifier—in only 30 minutes, leveraging modern Google AI tools. The core architecture relies on the Gemini Live API, accessed via the Firebase AI Logic SDK, which supports real-time bidirectional streaming of audio and video. For audio input, the 'record' package was configured for 16-bit PCM audio at 16kHz with echo/noise suppression enabled. For audio output, the 'flutter_soloud' package was chosen for its low-latency streaming capability, supporting 24kHz raw 16-bit PCM audio. Video input was handled by capturing a 1 FPS stream of images using the 'camera' package, though the presenter noted that lower resolutions could be used depending on requirements. The system instruction provided to the Gemini model configured it to act as an enthusiastic game show host for an 'I Spy' game, guiding the user to turn on their camera and provide visual input. The demonstration confirmed that the setup successfully identified a plant and even modified an image to place a jacket on the presenter, all while running cross-platform on iOS, Android, and Web, highlighting the rapid development speed achievable with these tools.

### Key Components Overview

- Audio Input (record package, 16-bit PCM @ 16kHz)
- Audio Output (flutter_soloud, 16-bit PCM @ 24kHz)
- Camera (1 FPS image stream)
- Gemini Live API (real-time bidirectional streaming)

### Audio Setup and Configuration

- Input audio is Raw 16-bit PCM @ 16kHz with echo/noise suppression enabled
- Output audio requires Raw 16-bit PCM @ 24kHz, making 'flutter_soloud' a suitable choice for low-latency playback

### Video Input Configuration

- Camera plugin captures a stream of images at 1 FPS, configured initially for 'ResolutionPreset.veryHigh' but suggested optimization to lower resolution
- Images are streamed as 'image/jpeg' data parts via the Live Session

### Gemini Live Model Setup

- The model used was 'gemini-live-2.5-flash', configured for audio responses with the 'fenrir' voice
- The system instruction defined the AI's persona as an 'enthusiastic and fun gameshow host' for an 'I Spy' game

### Live Session & Data Streaming

- Streams of audio (audio/pcm) and images (image/jpeg) are sent to Gemini via `liveSession.sendMediaStream`
- Audio responses are received via `liveSession.receive()` and played back using Soloud

### Deployment and Testing

- The final demo ran successfully on iOS, Android, and Web by leveraging Flutter's cross-platform capabilities, requiring only prompt updates rather than extensive native audio API coding.

![Screenshot at 00:06: Title card for 'Flutter Flight Plans: Chart your course for the future of app development'.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-00-06.png)
![Screenshot at 00:12: Presenter Khanh Nguyen introduces the session, with her title card showing 'Developer Relations Engineer'.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-00-12.png)
![Screenshot at 00:15: A screenshot of the YouTube video 'What's new in Flutter' from Google I/O, which inspired the demo.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-00-15.png)
![Screenshot at 01:17: Diagram illustrating the architecture for natural, human-like realtime voice conversations using Microphone/Camera, Speaker, App, Gemini Live API Provider, and the Gemini Live model.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-01-17.png)
![Screenshot at 01:53: Code snippet showing the configuration of the 'record' package, highlighting the 16-bit PCM audio format and 16000 sample rate.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-01-53.png)
![Screenshot at 02:24: Slide detailing the 'flutter\_soloud' package, which supports 24kHz audio output and real-time audio wave data.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-02-24.png)
![Screenshot at 04:31: Code snippet showing the construction of the Live Generative Model using 'gemini-live-2.5-flash' and specifying audio as the response modality.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-04-31.png)
![Screenshot at 04:52: Code showing how audio chunks \('audio/pcm'\) and images \('image/jpeg'\) are sent as inline data parts to Gemini via the Live Session.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-04-52.png)
![Screenshot at 09:11: Side-by-side comparison showing the app interface 'Before plant identifier prompt' \(showing a conference room\) and 'After plant identifier prompt' \(showing the plant identification scenario\).](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-09-11.png)
![Screenshot at 11:08: Updated system instruction prompt defining the AI's role as an enthusiastic game show host for an 'I Spy' game.](https://ss.rapidrecap.app/screens/tErMAB5FKNw/00-11-08.png)
