--- title: Pocket Pikachu — A Pokémon You Talk To, On-Device emoji: ⚡ colorFrom: yellow colorTo: red sdk: gradio sdk_version: 6.17.3 app_file: app.py pinned: true license: apache-2.0 short_description: On-device talking Pikachu — MiniCPM5 + VoxCPM voice on GPU models: - openbmb/MiniCPM5-1B-GGUF - openbmb/VoxCPM-0.5B - Systran/faster-whisper-small.en tags: - track:wood - sponsor:openbmb - achievement:offbrand - achievement:offgrid - gradio - hackathon - build-small-hackathon - minicpm - voxcpm - on-device - local-llm --- # ⚡ Pocket Pikachu — a Pokémon you actually talk to (VoxCPM on ZeroGPU) A clickable, talking digital pet that runs in-process on a single GPU. Click the mic (or type), and your pocket Pikachu **hears you, thinks, and talks back** — no cloud APIs. Built for the **Build Small** hackathon: every model is ≤ 4B params. **Stack — in-process on ZeroGPU:** | Role | Model | Where it runs | |-------|-------|---------------| | 🧠 Brain | `openbmb/MiniCPM5-1B-GGUF` (Q4_K_M) | OpenBMB, via `llama-cpp-python` — CPU | | 🗣️ Voice | `openbmb/VoxCPM-0.5B` | OpenBMB, cute female ref + pitch↑/tempo↓ styling — **GPU** | | 👂 Ears | `Systran/faster-whisper-small.en` | CTranslate2 int8 — CPU | > **Why no NeMo/Nemotron here:** `nemo_toolkit[asr]` cannot build on a ZeroGPU > Gradio Space — its multi-GB dependency tree plus a CUDA `torch` OOM-kill the > CPU build container (`exit 137`), and the streaming model has no `transformers` > path. Nemotron runs in the **native macOS PocketDM app** instead. This Space's > upgrade over its free-CPU sibling is **VoxCPM** (OpenBMB's neural voice) on GPU. ## How it works `app.py` is a single Gradio Blocks app. Per-turn inference runs inside one **`@spaces.GPU`-decorated** function (`run_turn_gpu`) so the GPU is attached for the turn; models lazy-load on first use. A turn flows: 1. **Mic / text in** — `gr.Audio(sources=["microphone"])` or a textbox. 2. **Transcribe** — **faster-whisper `small.en`** turns speech into text (CPU). 3. **Reply** — **MiniCPM5-1B** generates Pikachu's response with the same system prompt + keyless tool-fact grounding (time / weather / web lookup) as the desktop companion (CPU via llama.cpp). 4. **Speak** — **VoxCPM-0.5B** synthesizes the reply on the **GPU** in a consistent cute female voice (bundled reference clip + pitch-up/tempo-down ffmpeg styling), played via `gr.Audio(autoplay=True)`. Custom (non-stock-Gradio) UI: sunny gradient, bobbing sprite, chat bubbles, daily check-in, hero + "what can it do" sections. ## Why it qualifies - **Best MiniCPM Build (`sponsor:openbmb`)** — built on **OpenBMB's MiniCPM5-1B** (brain) and **VoxCPM-0.5B** (voice). - **Off the Grid (`achievement:offgrid`)** — no cloud APIs; every model runs locally in the Space process. - **Off-Brand (`achievement:offbrand`)** — fully custom UI beyond stock Gradio. - **Thousand Token Wood (`track:wood`)** — a whimsical talking desktop pet. - **Tiny / ≤4B** — MiniCPM5-1B, VoxCPM-0.5B, faster-whisper-small all well under 4B. (The native app adds NVIDIA Nemotron-0.6B for streaming ASR.) ## Hardware Runs on **ZeroGPU** (`zero-a10g`) — the free, quota-based GPU available to members of the `build-small-hackathon` Team-plan org (org-billed, no personal cost). The voice (VoxCPM) runs on the GPU; the brain (llama.cpp) and Nemotron ears on mac or (faster-whisper) run on CPU.