Build the companion as two parts joined by a small, stable interface: a speech-and-AI pipeline handles the conversation, while a Rive character reacts to the device’s activity and voice. The core loop is microphone input → speech recognition → AI response → text-to-speech → application state and audio data → Rive runtime → display. The Pi does not need an AI accelerator just to render the animated face.
How the companion fits together
Keep the assistant’s conversation logic separate from the character’s animation. The application reports events such as listening, thinking, speaking, connecting, and error; the Rive state machine turns those events into expressions and motion. This lets the face acknowledge a request while the assistant is still waiting for recognition or a response, rather than appearing frozen.
As an Amazon Associate I earn from qualifying purchases.
As Rive animator and interactive character specialist Praneeth Kawya Thathsara of Mascot Engine puts it, “A convincing AI companion needs more than a voice.” Read the article describing the architecture and animation controls.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Choose the speech and AI pipeline
Decide first which work runs on the Pi and which depends on an online service. The available examples illustrate different architectures; they are not controlled performance comparisons.
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
| Approach | Documented example | What to plan for |
|---|---|---|
| Local pipeline | A community Raspberry Pi project uses openWakeWord, energy-based voice activity detection, whisper.cpp, Ollama with gemma3:1b for the assistant and moondream for optional vision, Piper TTS, and a pygame face. |
The repository is a software example, not an independently validated benchmark. Its pygame face is not a Rive integration; use it only as a reference for the voice pipeline. |
| Cloud agent | ElevenLabs documents a Raspberry Pi agent approach requiring a Pi 5 or similar, microphone, speaker, Python 3.9 or later, an account, and an API key. | This approach depends on an account and service. Check the service’s current requirements and policies before building around it. |
Compare candidates by on-device versus service processing, internet and account requirements, speech and model capabilities, maintenance effort, measured latency on your own hardware, and ongoing cost. The documented examples do not establish comparative latency, accuracy, privacy, or cost, so those should be evaluated for the configuration you choose.
Plan the hardware
Minimum for a voice-enabled display
- Raspberry Pi 5.
- A display connected through an interface supported by your chosen operating system and application framework.
- A microphone and speaker for voice input and output.
A documented reference build uses a Pi 5 with 8 GB or 16 GB of memory, a 5-inch DSI display, a USB microphone, and a USB or amplified speaker. These are example components, not universal compatibility requirements. HDMI can also serve as the display output, and a headless setup is useful while debugging the speech pipeline.
Optional components
- A camera for visual questions or camera-based gaze tracking.
- Buttons for push-to-talk, stopping speech, or volume control.
- Touch input for interaction or gaze without a camera.
- An enclosure, extra storage, or a battery/UPS if the intended installation calls for them.
These additions are not prerequisites for a display-based animation prototype. A face-only prototype can also omit microphone and speaker hardware until voice interaction is added.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsRank #2
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (4GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- CanaKit Mega Heat Sink - Black Anodized
When a local AI accelerator makes sense
Raspberry Pi’s current Hailo documentation requires a Raspberry Pi 5 and 64-bit Raspberry Pi OS for its AI accelerator setup. Raspberry Pi describes AI HAT+ for vision and moderate neural workloads, and AI HAT+ 2 for supported local LLM and VLM workloads. The company says the earlier AI Kit is no longer in production and recommends AI HAT+ or AI HAT+ 2 for new designs. None of these accelerators is required to run Rive animation.
Raspberry Pi lists AI HAT+ variants at 13 TOPS or 26 TOPS. Its AI HAT+ 2 specification is 40 TOPS, with 8 GB onboard memory and documented support for LLM/VLM workloads up to approximately 6 billion parameters. These are vendor specifications, not throughput measurements for this companion.
If you add a HAT, follow the current assembly and software instructions and verify the supported package versions. Power down the Pi before installing hardware. Raspberry Pi recommends an Active Cooler; for AI HAT+ 2, it recommends both the Pi Active Cooler and the HAT’s supplied heatsink. Confirm current prerequisites in the Raspberry Pi AI documentation before setup.
Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
Can Rive run on Raspberry Pi?
Rive provides runtime options including Web and C++, but that does not mean there is one universal, one-click Raspberry Pi setup. The workable choice depends on the Pi’s operating system, graphics stack, display backend, and the framework used to build the application. Check Rive’s runtime documentation, then validate the selected runtime against the exact Linux display environment before committing to it.
Recommended Free Tools
Keep the Rive asset and the assistant application loosely coupled. The Rive file should own visual states and transitions; the application should send clearly named inputs and handle microphone, network, AI, and audio playback behavior. This makes it easier to refine the character without rewriting the conversation pipeline.
Define the character’s state contract
Choose a small set of typed, stable inputs before wiring up the Rive state machine. One proposed mode mapping is 0 for idle, 1 for listening, 2 for thinking, 3 for speaking, 4 for connecting, 5 for error, and 6 for sleeping. These values are examples, not required Rive input names.
Rank #4
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Keep activity and emotion independent. For example, the character can be speaking while expressing concern. Suggested emotion values include neutral, happy, empathetic, concerned, and surprised; use names or numeric values that suit your own project.
| Application event | Possible character response | Transition to handle |
|---|---|---|
| Listening | Focused eyes or a clear listening indicator. | Capture stops, is cancelled, or yields recognized speech. |
| Thinking | Subtle eye movement or a gentle pulse instead of a frozen pose. | Response arrives, request fails, or the connection is lost. |
| Speaking | Mouth motion driven by audio data while emotion remains independently controlled. | Playback ends or is interrupted. |
| Connecting or error | A visible status that communicates the interruption or problem. | Connection recovers, request is retried, or the application returns to idle. |
| Idle or sleeping | Restrained blinking or small pupil motion; sleeping can use a distinct resting pose. | New input wakes the character or resumes listening. |
Handle cancellation and failure explicitly. If a request is interrupted, do not leave the character in speaking or thinking mode; send the corresponding new state when the application changes activity.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Connect speech to mouth motion
Amplitude-driven opening
For a lightweight starting point, measure the current text-to-speech audio amplitude, normalize it to a 0–1 value, and update a Rive input that controls mouth opening. This produces a simple visible response to changes in loudness; it is not a claim of phoneme-accurate lip synchronization.
Best Value
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 32GB EVO+ Micro SD Card pre-loaded with 64-bit Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit 45W PD Power Supply for the Raspberry Pi 5
- Display Cable - 6 foot (Supports up to 4K 60p)
Viseme-driven shapes
For more expressive articulation, send viseme or phoneme-derived mouth-shape values when the chosen TTS system makes them available. A design can combine the shape selection with amplitude for additional movement. The availability and quality of this data depend on the selected speech stack.
Add gaze and expression carefully
Gaze can be driven by camera tracking, touch, a cursor, device orientation, another sensor, or deliberately randomized idle behavior. A camera is therefore optional. Keep idle animation subtle: continuous motion can compete with the conversation rather than make the character feel more responsive.
Rive’s interactive model lets the application update inputs while the character is running, rather than merely play a prerecorded clip. Use that separation to keep emotion, gaze, mouth motion, and activity state independently adjustable where the design needs it.
Quick Recap
Build and validate in stages
- Confirm the display path. Connect the chosen LCD, touchscreen, or HDMI display and verify it works with the Pi operating system and framework you plan to use.
- Prove the Rive runtime. Build a minimal character with a state machine and test it on the actual Linux graphics and display stack. Do this before investing in detailed animation.
- Define application inputs. Establish names and types for activity, emotion, and any gaze or mouth controls. Keep those inputs stable even as the character design changes.
- Test transitions with simulated events. Drive listening, thinking, speaking, connecting, error, idle, and interruption states from the application before integrating a live AI pipeline.
- Add audio capture and playback. Connect the microphone, recognition, assistant, and TTS stages; verify that the application reports each lifecycle change to the character.
- Wire audio data to the mouth. Start with normalized amplitude, then add viseme data if the selected TTS stack supplies it and the extra complexity is worthwhile.
- Add optional capabilities last. Introduce a camera, buttons, touch-driven gaze, or an AI HAT only when the intended interaction requires them.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




