Spaces:
Runtime error
Runtime error
Commit Β·
6df2a65
1
Parent(s): addb9c9
Update sprint.md: mark completed tasks through Day 2 morning
Browse filesCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
|