File size: 1,899 Bytes
010ca6f
e12db0b
 
 
 
010ca6f
e12db0b
010ca6f
 
e12db0b
010ca6f
 
e12db0b
 
 
 
 
 
 
 
 
 
 
 
 
95dcd0c
 
e12db0b
 
95dcd0c
e12db0b
 
 
 
 
 
 
 
 
 
95dcd0c
e12db0b
 
 
95dcd0c
 
e12db0b
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
---
title: Audio to Notes
emoji: 🎙️
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 5.38.2
app_file: app.py
pinned: false
short_description: Audio → transcript, summary & action items · #7
---

# Audio → Notes 🎙️

Upload a recording or record from the mic → get a **timestamped transcript** (`[mm:ss]` per line,
so every quote is citable by the minute), a short **summary**, and a list of **action items**
(task · owner · due).

> Project **#7** of my *"30 AI Projects in 15 Days"* build-in-public challenge.

**▶ Live demo: https://notes.gritai.solutions**

![demo](demo.png)

## How it works
- **Transcribe** with **faster-whisper** (`base`, int8) on **CPU** — reliable and quick for short clips,
  no GPU/CUDA libraries required.
- **Summarize** with one **Claude** call using **forced tool-use**, so the summary + action items come
  back as schema-valid JSON every time (no brittle parsing).
- **Two-stage pipeline:** transcription → summarization, each a clean step.

## Two tiers
- **Free (this demo)** — short clips → transcript + summary + action items.
- **GritAI Studio (Pro)** — long meetings, **speaker attribution** (quotable by minute *and* speaker),
  a searchable/quotable archive, and auto-generated briefing docs. Join the waitlist in the app.

## Run locally
```bash
pip install -r requirements.txt
export ANTHROPIC_API_KEY=sk-ant-...     # for the summary + action items
python app.py                           # http://127.0.0.1:7860
```

## Deploy (Hugging Face Space)
1. Create a **Gradio** Space — **CPU basic** hardware is enough (no GPU needed).
2. Add secret **`ANTHROPIC_API_KEY`** for the summary + action items.
3. Push these files; point **notes.gritai.solutions** at the Space (CNAME → `hf.space`, DNS-only).

---
Built by **Robert Lucyk** · [GritAI Solutions](https://gritai.solutions) · part of the 30-in-15 challenge.