| --- |
| title: Small Cuts |
| emoji: π¬ |
| colorFrom: indigo |
| colorTo: purple |
| sdk: gradio |
| sdk_version: 6.18.0 |
| app_file: app.py |
| hf_oauth: true |
| pinned: true |
| license: mit |
| short_description: A deadpan narrator for your life, from small open models. |
| models: |
| - Qwen/Qwen3-VL-8B-Instruct |
| tags: |
| - track:wood |
| - sponsor:modal |
| - achievement:offgrid |
| - achievement:offbrand |
| - achievement:llama |
| - achievement:fieldnotes |
| --- |
| |
| # Small Cuts π¬ |
|
|
| > *"And that was the moment Carlos realized the coffee had been decaf all along."* |
|
|
| **Small Cuts** turns first-person moments into grounded, cinematic, **spoken** narration β |
| an omniscient, slightly-too-honest narrator in the spirit of *The Invention of Lying* β |
| using only **small (β€32B) open models**. No script, no cloud LLM: a small vision-language |
| model watches your moment and a small text-to-speech voice speaks the line, the way a film |
| narrator would if your life were the film. |
|
|
| There is exactly **one narrator**: a single deadpan, unnamed voice. No menus, no director to |
| pick. You point at what's happening; it tells you what it means. |
|
|
| This is a submission to the **Build Small Hackathon** ("Small Models, Big Adventures" β |
| Gradio Γ Hugging Face). |
|
|
| --- |
|
|
| ## Two paths, one finished cut |
|
|
| Small Cuts is a deliberate comparison of two techniques that both land as the **same** finished |
| artifact in this Space β a clip with a generated title, narration, Kokoro voice, synced |
| captions, a library tile, and a source badge. |
|
|
| | Path | Who | Channel | What it proves | Badge | |
| |---|---|---|---|---| |
| | **Whole video, one pass** | A judge, in this Space | Past events, any recording | It is **real and running** β verify it yourself, no access to the maker's hardware needed | `source="upload"` | |
| | **Pieces + hints** | The wearer (Ray-Ban Meta glasses / iOS) | Clips from ~3s ago | The **soul** β embodied, off-grid, narrated in-ear *while the moment is still recent past* | `source="glasses"` | |
|
|
| The public Space never reaches the maker's local hardware; the private home engine never exposes |
| inference hardware to the public. Same output shape, two very different journeys. |
|
|
| --- |
|
|
| ## How judges can try it |
|
|
| The Space is the **view platform + library** half of the loop: |
|
|
| - **A live stage** with the current moment and movie-style subtitles over a constant dark bar, |
| advancing with the voice-over. |
| - **Voice-over replay** in a compact custom player whose video, sound, captions, and progress all |
| share one audio clock. |
| - **A public library** of real Ray-Ban Meta glasses moments, generated through the same local |
| engine path so the channel is never empty. Source clips and mark points are curated; the visible |
| titles, narration, voice, thumbnails, and clips are **produced by Small Cuts**. |
| - **"Try it"** β a tucked-away, HF-login upload drawer. Sign in, drop a short video, and a private |
| **Modal** GPU service runs the real Qwen + Kokoro pipeline and replays your generated cut in the |
| same theater. This is the judge-verifiable path: no glasses or iOS required. **Privacy-first:** |
| your upload is narrated *only for your session* β it's never added to the public library or shown |
| to anyone else, and a refresh clears it. The library you browse is separate, curated, persistent |
| content (real glasses moments); your private try-it never mixes into it. |
|
|
| --- |
|
|
| ## Architecture in one glance |
|
|
| ``` |
| Ray-Ban Meta glasses ββimage framesβββΆ home engine (small VLM + TTS) βββΆ narration in your ear |
| β |
| βββββ finished cuts βββββΆ the Space (watch Β· library) |
| |
| judge's browser ββshort videoβββΆ Modal GPU (Qwen3-VL-8B + Kokoro) βββΆ finished cut in the Space |
| ``` |
|
|
| You walk through a moment, tap **Action!**, then tap **Cut!** when the scene has a readable beat. |
| The narrator watches a selected first-person frame and speaks one grounded, deadpan line back in |
| your ear while the moment is still recent past. The finished cut lands in the Space as a short POV |
| clip with synced captions, title, voice, and library thumbnail. |
|
|
| --- |
|
|
| ## How it was built |
|
|
| | Piece | Choice | Why | |
| |---|---|---| |
| | Narrator (VLM) | `Qwen/Qwen3-VL-8B-Instruct` | Strong grounded captioning at **8B β well under 32B** | |
| | Voice (TTS) | **Kokoro** (24 kHz) | Tiny, expressive, open; one signature deadpan delivery | |
| | Space runtime | Gradio 6 on CPU | Public theater + library; uploads call Modal instead of warming models | |
| | Judge upload service | **Modal** GPU app (`small-cuts-postcut`) | Finished-video verification path with real Qwen + Kokoro output | |
| | Local live engine | FastAPI WS home node, **llama.cpp** | The in-ear loop + demo video; no cloud LLM/TTS API | |
| | Capture | iOS app for Ray-Ban Meta glasses (`ios/SmallCuts/`) | First-person moments, the way it's meant to be lived | |
|
|
| Built by **Carlos Crespo Macaya** as architect and lead. Development was accelerated with an |
| AI toolchain β Claude (Opus) for design critique, Codex (GPT-5.x) for paired implementation, |
| GLM for review, and Gemini for eval β all directed by Carlos. |
|
|
| --- |
|
|
| ## β€32B compliance |
|
|
| Every model is small and open-weight: |
|
|
| - **Narrator:** `Qwen/Qwen3-VL-8B-Instruct` β **8B parameters**, comfortably under the 32B cap. |
| - **Voice:** **Kokoro** β a tiny open TTS model. |
|
|
| There is no cloud LLM anywhere in the loop. The live, in-ear path runs entirely on local hardware |
| through **llama.cpp**; the judge upload path runs the same small models on a Modal GPU so reviewers |
| can verify real output without touching the maker's machine. |
|
|
| --- |
|
|
| ## Hackathon compliance |
|
|
| | Rule | How Small Cuts complies | |
| |---|---| |
| | Gradio app hosted as a Space under the org | Final submission promotes to `build-small-hackathon/small-cuts` after personal-profile staging passes | |
| | Every model < 32B | 8B VLM narrator + small Kokoro TTS, all open weights | |
| | Demo video | Filmed POV with Ray-Ban Meta glasses β narrated by the app *(link below)* | |
| | Social post | Linked from this README *(link below)* | |
| | Track 2 β **Thousand Token Wood** (`track:wood`) | Whimsical, delightful, AI-load-bearing, original | |
| | Best Use of Modal (`sponsor:modal`) | The judge upload path runs Qwen + Kokoro on a Modal GPU | |
| | Off the Grid (`achievement:offgrid`) | Live inference/TTS run on local hardware; the public Space reads finished cuts only | |
| | Off-Brand (`achievement:offbrand`) | Custom cinematic frontend past the stock Gradio look | |
| | Llama (`achievement:llama`) | The live engine runs through `llama.cpp` | |
| | Field Notes (`achievement:fieldnotes`) | Public write-up β [field notes on the HF blog](https://huggingface.co/blog/build-small-hackathon/small-cuts-field-notes) | |
|
|
| ### Submission links |
|
|
| - πΉ **Demo video (YouTube):** [youtu.be/UCEP8ipYhSQ](https://youtu.be/UCEP8ipYhSQ) |
| - π£ **Social post (LinkedIn):** [Small Cuts on LinkedIn](https://www.linkedin.com/posts/carlos-crespo-macaya_youtube-share-7472437932679782400-V9ze/) |
| - π **Field notes / write-up:** [hf.co/blog/build-small-hackathon/small-cuts-field-notes](https://huggingface.co/blog/build-small-hackathon/small-cuts-field-notes) |
|
|
| > **Integrity note:** every preselected/hero clip in this Space is narrated by the **actual |
| > Small Cuts pipeline** (real Qwen3-VL-8B + Kokoro output) β never hand-written narration. |
|
|
| --- |
|
|
| ## License |
|
|
| Released under the **MIT License** β see [`LICENSE`](LICENSE) in the repository. |
|
|