尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A speech coaching web app for the 2026 Congressional App Challenge. Upload a recording of yourself speaking and get your transcript, your pace (words per minute), your filler words and long pauses, and personal coaching feedback.
Live app: https://learn2speech.vercel.app
Every library, API and tool, with its license, is listed in docs/CREDITS.md.
git clone https://github.com/Learn2Speech/Learn2Speech.git
cd Learn2Speech
npm install
supabase/migrations/ in order, one at a time:
0001_recordings_bucket.sql: the private storage bucket for audio files and its access rules0002_recordings_table.sql: the recordings table with Row Level Security0003_recordings_results.sql: columns for the status, transcript, metrics and feedbackhttp://localhost:3000, so the email confirmation link brings new users back to your local app.Copy the example file, then fill in the values in .env.local:
cp .env.example .env.local
| Variable | Where to find it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API → Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase → Project Settings → API Keys → the anon public key (newer projects call it the publishable key; either works) |
ASSEMBLYAI_API_KEY | AssemblyAI dashboard → API Keys |
ANTHROPIC_API_KEY | Anthropic Console → API Keys |
.env.local is git-ignored, so keys never get committed. The two API keys are only used in server code; never rename them to start with NEXT_PUBLIC_, which would send them to the browser.
npm run dev
Open http://localhost:3000, sign up, confirm your email, and upload a short recording (10 to 30 seconds is plenty for a test).
npm run lint # check the code for mistakes
npm run build # production build; must pass before pushing
https://learn2speech.vercel.app) to Authentication → URL Configuration.Analysis can take a minute or more, so the analysis route allows up to 200 seconds (maxDuration). Shorter recordings finish faster.
app/: pages and API routes (app/api/recordings/[id]/analyze runs the full analysis for one recording)lib/transcription/: the AssemblyAI request and response handlinglib/metrics/: words per minute, filler words, pauses and their ratings, as plain functionslib/feedback/: the Claude prompt, request and reply checkingsupabase/migrations/: the database setup, in orderdocs/: credits and AI usage logsWe used AI tools while building this app, as allowed by the Congressional App Challenge rules. Every use is logged, by person and by session, in docs/ai-log/, and commits Claude was involved in say how in their messages. The app itself uses Claude (Anthropic API) to write the coaching feedback.
Recordings and transcripts are personal data. They are stored in a private Supabase bucket and table protected by Row Level Security: the database only returns rows that belong to the logged-in user.