Spaces:
Sleeping
Sleeping
ChalkTalk: talks-and-draws AI tutor (demo video + live link)
Browse files- README.md +29 -6
- app.py +19 -0
- requirements.txt +1 -0
README.md
CHANGED
|
@@ -1,13 +1,36 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: indigo
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
-
sdk_version: 6.18.0
|
| 8 |
-
python_version: '3.13'
|
| 9 |
app_file: app.py
|
| 10 |
pinned: false
|
|
|
|
| 11 |
---
|
| 12 |
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: ChalkTalk
|
| 3 |
+
emoji: π
|
| 4 |
colorFrom: indigo
|
| 5 |
+
colorTo: purple
|
| 6 |
sdk: gradio
|
|
|
|
|
|
|
| 7 |
app_file: app.py
|
| 8 |
pinned: false
|
| 9 |
+
short_description: An AI tutor that talks and draws, live.
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# π ChalkTalk
|
| 13 |
+
|
| 14 |
+
**The AI tutor that talks *and* draws β live, at the same time.**
|
| 15 |
+
|
| 16 |
+
You type a topic and a tutor explains it out loud while a whiteboard fills in beside it. Every labeled part lights up the exact moment the tutor says its name.
|
| 17 |
+
|
| 18 |
+
## Watch the demo
|
| 19 |
+
|
| 20 |
+
<video controls src="https://huggingface.co/datasets/squaredcuber/chalktalk-demo/resolve/main/chalktalk-demo.mp4"></video>
|
| 21 |
+
|
| 22 |
+
Direct link: [https://huggingface.co/datasets/squaredcuber/chalktalk-demo/resolve/main/chalktalk-demo.mp4](https://huggingface.co/datasets/squaredcuber/chalktalk-demo/resolve/main/chalktalk-demo.mp4)
|
| 23 |
+
|
| 24 |
+
βΆ **Live demo:** [https://belong-picking-platinum-represents.trycloudflare.com](https://belong-picking-platinum-represents.trycloudflare.com)
|
| 25 |
+
|
| 26 |
+
## How it works
|
| 27 |
+
|
| 28 |
+
- **PersonaPlex** β a full-duplex, Moshi-architecture 7B speech model that listens and speaks at the same time, so you can interrupt and ask questions mid-explanation.
|
| 29 |
+
- **Nemotron SVG director** β an NVIDIA Nemotron model that draws a clean, labeled SVG diagram for each part of the lesson, streamed to a live whiteboard.
|
| 30 |
+
- **Synced reveal** β the tutor inner-monologue drives the board: each labeled element appears the instant its keyword is spoken, with synonym-aware matching so paraphrases still land.
|
| 31 |
+
- **Auto-progressing lessons** β it teaches one part deeply, then voice and visuals advance together, over one persistent connection.
|
| 32 |
+
- **Runs locally on a single GPU**, wrapped in a shader-animated Gradio app.
|
| 33 |
+
|
| 34 |
+
## Credits
|
| 35 |
+
|
| 36 |
+
Built by **Codex**, with help from other coding agents using **GPT-5.5** when parallelization was needed.
|
app.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
VIDEO_URL = "https://huggingface.co/datasets/squaredcuber/chalktalk-demo/resolve/main/chalktalk-demo.mp4"
|
| 3 |
+
LIVE_DEMO = "https://belong-picking-platinum-represents.trycloudflare.com"
|
| 4 |
+
INTRO = """# π ChalkTalk
|
| 5 |
+
### The AI tutor that talks **and** draws β live.
|
| 6 |
+
Type a topic and a full-duplex voice tutor (**PersonaPlex**) teaches it out loud while an **NVIDIA Nemotron** director draws a labeled diagram on a whiteboard. Every part lights up the moment the tutor says its name.
|
| 7 |
+
"""
|
| 8 |
+
HOW = """
|
| 9 |
+
**How it works** β PersonaPlex (Moshi-arch 7B) speaks and listens simultaneously; a small Nemotron SVG director draws each part; the inner-monologue text reveals each labeled element as its keyword is spoken (synonym-aware); lessons auto-progress with voice and visuals in sync. Runs locally on one GPU.
|
| 10 |
+
|
| 11 |
+
_Built by Codex, with help from other coding agents using GPT-5.5 when parallelization was needed._
|
| 12 |
+
"""
|
| 13 |
+
with gr.Blocks(theme=gr.themes.Soft(primary_hue="indigo"), title="ChalkTalk") as demo:
|
| 14 |
+
gr.Markdown(INTRO)
|
| 15 |
+
gr.Video(VIDEO_URL, label="Demo β a real ChalkTalk session", autoplay=False)
|
| 16 |
+
gr.Markdown(f"### βΆ Try the live demo: [{LIVE_DEMO}]({LIVE_DEMO})")
|
| 17 |
+
gr.Markdown(HOW)
|
| 18 |
+
if __name__ == "__main__":
|
| 19 |
+
demo.launch()
|
requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
gradio
|