minhahwang Claude Sonnet 4.6 commited on
Commit
6df2a65
Β·
1 Parent(s): addb9c9

Update sprint.md: mark completed tasks through Day 2 morning

Browse files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. sprint.md +15 -15
sprint.md CHANGED
@@ -12,10 +12,10 @@ Ship a public Hugging Face Space: parent clones voice β†’ story streams in that
12
  | # | Task | Time | Done |
13
  |---|---|---|---|
14
  | 1 | Set up repo: `app.py`, `requirements.txt`, `stories/` | 30m | β˜‘ |
15
- | 2 | Load QWEN-TTS-0.6B locally, test basic TTS (text β†’ audio) | 1h | ☐ |
16
- | 3 | Implement voice cloning and cache voice representation after recording | 1.5h | ☐ |
17
  | 4 | Add 10 short stories as `.txt` files (public domain, from Project Gutenberg) | 30m | β˜‘ |
18
- | 5 | Wire up: pick story β†’ stream first narration chunk, track chunk index, cache story audio | 1h | ☐ |
19
 
20
  **Checkpoint:** Can generate a story audio file in a cloned voice from CLI.
21
 
@@ -23,11 +23,11 @@ Ship a public Hugging Face Space: parent clones voice β†’ story streams in that
23
 
24
  | # | Task | Time | Done |
25
  |---|---|---|---|
26
- | 6 | Build Gradio app with 3 tabs (Clone, Listen, Ask) | 1h | ☐ |
27
- | 7 | Tab 1 (Clone): `gr.Audio` record/upload + preview button | 45m | ☐ |
28
- | 8 | Tab 2 (Listen): story dropdown + play/pause/resume controls for streamed chunks | 45m | ☐ |
29
- | 9 | Add on-demand ASR for child voice input; use lighter ASR fallback if needed | 30m | ☐ |
30
- | 10 | Tab 3 (Ask): interrupt narration β†’ short grounded Qwen answer β†’ TTS β†’ resume story | 2h | ☐ |
31
  | 10a | Pre-generate 2–3 anticipated Q&A pairs per chunk during narration playback (background task) | 30m | ☐ |
32
 
33
  **Checkpoint:** Full loop works locally β€” clone β†’ listen β†’ interrupt β†’ ask β†’ resume. Ugly but functional.
@@ -42,11 +42,11 @@ Ship a public Hugging Face Space: parent clones voice β†’ story streams in that
42
 
43
  | # | Task | Time | Done |
44
  |---|---|---|---|
45
- | 11 | Set up `gr.Server` with custom static files (`static/style.css`) | 30m | ☐ |
46
- | 12 | Stitch-style CSS: color palette, card layout, rounded corners, fonts | 1h | ☐ |
47
- | 13 | Recording UX: waveform animation, countdown timer, status indicators | 1h | ☐ |
48
- | 14 | Story gallery: cover images (AI-generated or placeholder), card grid | 45m | ☐ |
49
- | 15 | Loading states: playback status, paused state, TTS progress, and background chunk generation | 30m | ☐ |
50
  | 16 | Mobile-responsive check (parents use laptops, demo on projector) | 15m | ☐ |
51
 
52
  **Checkpoint:** App looks polished and professional. Ready for live demo.
@@ -56,14 +56,14 @@ Ship a public Hugging Face Space: parent clones voice β†’ story streams in that
56
  | # | Task | Time | Done |
57
  |---|---|---|---|
58
  | 17 | Create HF Space (T4 with 4-bit/8-bit loading, or A10G for headroom), push code, verify model downloads | 1h | ☐ |
59
- | 18 | Confirm no external LLM API secrets are required; set `HF_TOKEN` only if gated models require it | 5m | ☐ |
60
  | 19 | End-to-end test on live Space (clone β†’ listen β†’ interrupt β†’ ask β†’ resume) | 30m | ☐ |
61
  | 20 | Fix latency issues: preload weights, cache voice/story audio, cap Q&A tokens, validate pause/resume | 45m | ☐ |
62
  | 20a | Measure and log all latency targets from mission.md (first chunk, pause, Q&A, resume, replay) | 30m | ☐ |
63
  | 20b | Validate playback state machine: test all 6 states and legal transitions from tech_stack.md | 30m | ☐ |
64
  | 21 | Add error handling: graceful failures, loading messages | 30m | ☐ |
65
  | 22 | Record backup demo video (in case live demo fails) | 30m | ☐ |
66
- | 23 | Write README.md for the Space (screenshot, description) | 15m | ☐ |
67
  | 24 | Practice 3-minute demo walkthrough | 30m | ☐ |
68
 
69
  **Checkpoint:** Live public URL works. Demo rehearsed.
 
12
  | # | Task | Time | Done |
13
  |---|---|---|---|
14
  | 1 | Set up repo: `app.py`, `requirements.txt`, `stories/` | 30m | β˜‘ |
15
+ | 2 | Load QWEN-TTS-0.6B locally, test basic TTS (text β†’ audio) | 1h | β˜‘ | *(switched to Supertonic TTS; wired in `tts.py`, tested in `test_modules/`)* |
16
+ | 3 | Implement voice cloning and cache voice representation after recording | 1.5h | ☐ | *(UI flow complete; actual micβ†’voice-representation synthesis still placeholder `time.sleep()`)* |
17
  | 4 | Add 10 short stories as `.txt` files (public domain, from Project Gutenberg) | 30m | β˜‘ |
18
+ | 5 | Wire up: pick story β†’ stream first narration chunk, track chunk index, cache story audio | 1h | β˜‘ | *(`handle_book_select` loads paragraphs + splits chunks; `stream_tts` generator streams audio with play/pause/chunk-index tracking)* |
19
 
20
  **Checkpoint:** Can generate a story audio file in a cloned voice from CLI.
21
 
 
23
 
24
  | # | Task | Time | Done |
25
  |---|---|---|---|
26
+ | 6 | Build Gradio app with 3 tabs (Clone, Listen, Ask) | 1h | β˜‘ | *(4 tabs: Explore, Library+Player, Clone Voice Studio, Profile & Sandbox)* |
27
+ | 7 | Tab 1 (Clone): `gr.Audio` record/upload + preview button | 45m | β˜‘ | *(Clone Voice Studio tab: mic recorder, extract button, status pipeline, preview audio)* |
28
+ | 8 | Tab 2 (Listen): story dropdown + play/pause/resume controls for streamed chunks | 45m | β˜‘ | *(Library tab: book card grid + integrated player panel with play/pause/resume/chunk status)* |
29
+ | 9 | Add on-demand ASR for child voice input; use lighter ASR fallback if needed | 30m | ☐ | *(Q&A panel has `gr.Audio` mic input but Whisper not wired β€” audio path falls back to `"(spoken question)"`)* |
30
+ | 10 | Tab 3 (Ask): interrupt narration β†’ short grounded Qwen answer β†’ TTS β†’ resume story | 2h | ☐ | *(Ask/resume UI state machine complete; answer is still hardcoded mock β€” Qwen + TTS for Q&A not implemented)* |
31
  | 10a | Pre-generate 2–3 anticipated Q&A pairs per chunk during narration playback (background task) | 30m | ☐ |
32
 
33
  **Checkpoint:** Full loop works locally β€” clone β†’ listen β†’ interrupt β†’ ask β†’ resume. Ugly but functional.
 
42
 
43
  | # | Task | Time | Done |
44
  |---|---|---|---|
45
+ | 11 | Set up `gr.Server` with custom static files (`static/style.css`) | 30m | β˜‘ | *(`css_code` loaded from `static/style.css` in `app.py`; `allowed_paths` set for `assets/`)* |
46
+ | 12 | Stitch-style CSS: color palette, card layout, rounded corners, fonts | 1h | β˜‘ | *(179-line `static/style.css`: Inter/Playfair Display fonts, cream/amber palette, card grid, hero spotlight, progress bar)* |
47
+ | 13 | Recording UX: waveform animation, countdown timer, status indicators | 1h | ☐ | *(pulse-ring CSS animation + status indicators done; no countdown timer yet)* |
48
+ | 14 | Story gallery: cover images (AI-generated or placeholder), card grid | 45m | β˜‘ | *(10 cover PNGs in `assets/covers/`; `generate_library_html` renders card grid with cover, progress bar, narrator)* |
49
+ | 15 | Loading states: playback status, paused state, TTS progress, and background chunk generation | 30m | β˜‘ | *(PLAYING/PAUSED/READY/DONE status bars + chunk counter HTML; `stream_tts` generator updates per chunk)* |
50
  | 16 | Mobile-responsive check (parents use laptops, demo on projector) | 15m | ☐ |
51
 
52
  **Checkpoint:** App looks polished and professional. Ready for live demo.
 
56
  | # | Task | Time | Done |
57
  |---|---|---|---|
58
  | 17 | Create HF Space (T4 with 4-bit/8-bit loading, or A10G for headroom), push code, verify model downloads | 1h | ☐ |
59
+ | 18 | Confirm no external LLM API secrets are required; set `HF_TOKEN` only if gated models require it | 5m | β˜‘ | *(all inference local via Supertonic + Qwen; no external API calls in codebase)* |
60
  | 19 | End-to-end test on live Space (clone β†’ listen β†’ interrupt β†’ ask β†’ resume) | 30m | ☐ |
61
  | 20 | Fix latency issues: preload weights, cache voice/story audio, cap Q&A tokens, validate pause/resume | 45m | ☐ |
62
  | 20a | Measure and log all latency targets from mission.md (first chunk, pause, Q&A, resume, replay) | 30m | ☐ |
63
  | 20b | Validate playback state machine: test all 6 states and legal transitions from tech_stack.md | 30m | ☐ |
64
  | 21 | Add error handling: graceful failures, loading messages | 30m | ☐ |
65
  | 22 | Record backup demo video (in case live demo fails) | 30m | ☐ |
66
+ | 23 | Write README.md for the Space (screenshot, description) | 15m | β˜‘ | *(full README with HF Space YAML header, model table, story list, architecture, privacy section)* |
67
  | 24 | Practice 3-minute demo walkthrough | 30m | ☐ |
68
 
69
  **Checkpoint:** Live public URL works. Demo rehearsed.