Manual de utilizare — VirtualMeetings Toastmasters
Sursa de adevăr: CLAUDE.md + STATUS.md. Acest manual = ghid operațional. Actualizat: 2026-05-16 | Versiune: Faza 1 completă
Cuprins
- Ce face tool-ul
- Înainte de ședință
- Pornire
- Comenzi esențiale
- Audio — configurație validată
- Pathways per vorbitor
- Browser UI — ghid vizual
- La finalul ședinței
- Troubleshooting
- Roluri suportate
- Arhitectura internă
1. Ce face tool-ul
VirtualMeetings = asistent AI local, invizibil pentru Zoom, pentru rolurile de evaluare la Toastmasters Sibiu.
| Ce face | Cum |
|---|---|
| Transcrie discursurile în timp real | mlx-whisper large-v3 pe ANE (Apple Neural Engine), ~1s latență |
| Detectează filler-uri (ăă, deci, păi) | 3 niveluri: audio + text + AI |
| Analizează gramatica românească | Claude Opus 4.7 — batch la finalul fiecărui discurs |
| Urmărește timing-ul cu semafor TM | Timer› 3 culori (verde/galben/roșu) per standard TM |
| Generează fișe de raport | Gramatician› + Numărător› + Cronometror› + Timeline corelat |
Zoom nu știe că rulează. Audio nu pleacă din Mac.
Fișe generate: hub:evaluation-grammarian | hub:evaluation-ah-counter | hub:evaluation-timer
2. Înainte de ședință (5 minute)
Editează ~/Documents/Toastmasters/next-meeting.yaml
meeting:
date: "2026-05-20"
word_of_day:
word: "perspicace"
part_of_speech: "adjectiv"
roles:
presedinte: Andrei
toastmaster: Maria
vorbitor1: Cornel
evaluator_general: Diana
# ... restul rolurilor
speakers:
- name: Cornel
role: vorbitor1
pathway:
path: "Presentation Mastery"
level: 1
project: "Ice Breaker"
Efecte la pornire: tool-ul afișează ✓ next-meeting.yaml încărcat: 5 roluri, WoD=perspicace, pathways=['Cornel'].
Cele 11 Pathways
Proiecte Level› 1 (universal): Ice Breaker (4-6 min) | Writing a Speech with Purpose (5-7 min) | Evaluation and Feedback (2-3 min) | Researching and Presenting (5-7 min)
Referință completă: hub:overview
3. Pornire
cd ~/Code/VirtualMeetings/apps/cli
source .venv/bin/activate
toastmasters --mic
Sau scurt, dacă ai alias în ~/.zshrc:
alias tm="~/Code/VirtualMeetings/apps/cli/.venv/bin/toastmasters"
tm --mic
Ce se întâmplă:
1. Se încarcă next-meeting.yaml (dacă există)
2. ai-service pornit automat la port 8000
3. Browser deschis la http://127.0.0.1:8000
4. Checklist vizibil cu starea componentelor
Startup checklist:
─── Toastmasters Grammarian — startup ───
✓ ai-service conectat (http://127.0.0.1:8000)
✓ Whisper model: large-v3
✓ LLM backend: claude-cli
✓ next-meeting.yaml: 5 roluri, WoD=perspicace
? Audio: microfon — aștept Zoom...
─────────────────────────────────────────
4. Comenzi esențiale
Fluxul principal
| Comandă | Efect | Când |
|---|---|---|
n Cornel |
Marchează speaker → declanșează analiza vorbitorului anterior | La fiecare schimbare |
cuv perspicace adjectiv |
Setează WoD› (și variante de detectare) | Înainte de ședință |
rol v1 Cornel |
Asignează rol (v1=vorbitor1, v2, tm, pres, eg, cron, num, ev1-4) | Pre-ședință sau în mers |
iesi |
Salvează tot + generează rapoarte + deschide browser | La final |
Vizualizare live
| Comandă | Ce arată |
|---|---|
fisa |
Preview fișă Gramatician în terminal (4 coloane) |
num sau numarator |
Fișă Numărător live cu densitate/min |
status |
Sumar complet: speaker, fillers, issues, folder sesiune |
transcript 60 |
Ultimele 60 secunde transcript |
fillers |
Top filler-e pentru vorbitor curent |
Audio
| Comandă | Când |
|---|---|
audio mic |
Default — folosești mereu asta |
audio zoom |
⚠ NU — Zoom procesează audio agresiv, 40% halucinații |
audio restart |
Dacă pipeline-ul se blochează |
Ajutor
ajutor # lista completă comenzi
ajutor audio # workarounds + tips audio
roluri # listează cele 22 roluri cu asignările curente
5. Audio — configurație validată
Config câștigătoare (validat empiric 2026-05-16, 144 chunks):
✅ toastmasters --mic + speakers Mac activi, volum 50-70%
❌ NU folosești căști
❌ NU audio zoom (Process Tap)
De ce funcționează: Micul captează audio-ul DUPĂ ce Zoom l-a redat prin speakers — playback final, mai aproape de original decât tap-ul intern Zoom care trece prin AGC + neural denoiser.
Date empirice:
| Mod | Halucinații | avg_logprob |
|---|---|---|
audio mic + speakers |
2.9% | −0.444 |
audio zoom (Process Tap) |
40% | −0.569 |
Detalii: hub:evaluation-grammarian · Raport tehnic: tests/recording_calibration/deep_analysis_report.md
Indicator audio în browser
🟢 > -40 dB = OK | 🟡 -60 dB = slab | 🔴 < -60 dB = silențiu — urcă volumul
6. Pathways per vorbitor
Dacă ai setat pathway în YAML, Claude primește contextul specific proiectului:
Exemplu fără pathway → feedback generic: „ai folosit anglicism «feedback»”
Exemplu cu Ice Breaker L1 → Claude știe că:
- Hook-ul în primele 30s e criteriul principal
- Propoziții incomplete cu efect dramatic sunt OK
- Anglicismele în context personal au severitate mică
- Dacă lipsește call-to-action la final → notează cu „structură Ice Breaker”
Proiecte cu knowledge base complet: Ice Breaker | Writing a Speech with Purpose | Evaluation and Feedback | Researching and Presenting | Table Topics› | Persuasive Influence | Dynamic Leadership | Fallback L1-L5
Referință completă Pathways›: hub:overview
7. Browser UI — ghid vizual
Deschis automat la http://127.0.0.1:8000. Refresh: Cmd+R.
┌─────────────────────────────────────────────────────────────────────┐
│ 19:42:30 🟢 -32dB │ 🎤 Cornel │ 🟢 3:15 ████░░░░ │
├───────────────┬───────────────────┬─────────────┬───────────────────┤
│ AGENDA │ TRANSCRIPT │ ISSUES │ NOTIȚELE MELE │
│ │ │ │ │
│ ▶ Vorbitor 2 │ ...ce spune │ ⚠ erori (3) │ [12:34] notiță │
│ → Vorbitor 3 │ Cornel acum... │ ✨ creative │ [12:42] altceva │
│ ○ Table Topics│ │ 🔤 WoD: 2× │ │
└───────────────┴───────────────────┴─────────────┴───────────────────┘
[Gramatician ▼] [+1 ăă] [💾 Salvează raport]
Coloana 4 — Notițele tale
Tastezi în textarea → se salvează automat cu [MM:SS · Speaker].
La analiza batch, notițele tale sunt injectate în promptul Claude cu prioritate față de ASR. Dacă ai scris „anglicism: «update» → «actualizare»”, Claude îl va include chiar dacă ASR-ul l-a ratat.
Shortcuts tastatură
| Tastă | Acțiune |
|---|---|
A |
Accept ultimul flag |
R |
Reject ultimul flag |
U |
Undo accept/reject |
F |
+1 filler manual (mod Numărător) |
Cmd+R |
Refresh UI după update |
8. La finalul ședinței
CLI
iesi
Sau din browser: butonul 💾 Salvează raport din header.
Ce se generează în ~/Documents/Toastmasters/sessions/<data>/
| Fișier | Conținut |
|---|---|
fisa_gramatician.html |
4 coloane × toți vorbitorii, cu pathway dacă setat |
fisa_numarator.html |
Filler-uri + densitate/min + timeline |
fisa_cronometror.html |
Timing per vorbitor (verde/galben/roșu) |
timeline_corelat.html |
TOOL vs PAVEL vs AMBELE interleaved cu timestamps |
report.html |
Raport complet cu toate |
session.json |
Date brute (pentru re-procesare) |
speakers/<name>.m4a |
Audio per vorbitor (consolidat la final) |
9. Troubleshooting
Simptom → Fix
| Simptom | Cauza probabilă | Fix |
|---|---|---|
chunks: 0 la start |
AudioCapture nu a prins Zoom | audio mic în CLI |
🔴 dB în browser |
Volum speakers prea mic | Urcă volumul Mac, țintă -32 dB |
| Whisper halucinează (YouTube outros) | audio zoom activ |
audio mic |
| Browser nu arată nimic | /ws/live deconectat | Cmd+R |
| Pipeline blocat | Watchdog nu s-a declanșat | audio restart |
| Analiză batch nu vine | Rate limit CLI Claude | Așteaptă 30s, retrimite n <Speaker> |
4000/min densitate |
Bug (dur < 6s) | Ignoră — apare la sesiuni scurte de test |
Pornire alternativă (dacă CLI nu spawn-uiește AudioCapture)
cd ~/Code/VirtualMeetings/packages/ai-service && source .venv/bin/activate
nohup python ~/Code/VirtualMeetings/scripts/standalone_audio_pipeline.py > /tmp/audio.log &
Debug audio
# Verificare health ai-service
curl http://127.0.0.1:8000/health
# Log audio pipeline
tail -f /tmp/audio.log
10. Roluri suportate
| Rol | Status | Ce face tool-ul | Fișă |
|---|---|---|---|
| Gramatician | ✅ Complet | Erori + creative + WoD + incomplete + notițe Pavel | hub:evaluation-grammarian |
| Numărător de Ă-uri› | ✅ Complet | Detection 3 niveluri + densitate/min + raport | hub:evaluation-ah-counter |
| Cronometror | ✅ Complet | Timer 3 culori + fișă per vorbitor | hub:evaluation-timer |
| Toastmaster› | 🟡 Parțial | Agenda cu highlight automat | — |
| Evaluator› | ❌ Planificat | Faza 2 | hub:evaluation-speech-evaluator |
Asignare roluri rapide
rol v1 Cornel # vorbitor1
rol v2 Diana # vorbitor2
rol tm Maria # toastmaster
rol pres Andrei # presedinte
rol eg Elena # evaluator_general
rol num Pavel # numarator
rol cron Robert # cronometror
rol ev1 Mihai # evaluator1
rol tt1 Ana # tt_vorbitor1
11. Arhitectura internă
~/Documents/Toastmasters/next-meeting.yaml
↓ la pornire (_load_next_meeting_yaml)
SessionState.meeting_roles + word_of_day + speaker_pathways
Microfon Mac
↓ mic_consumer.py (sounddevice)
/ws/audio (PCM Int16 16kHz mono)
↓
ai-service (FastAPI :8000)
├── Silero VAD (filtru tăcere)
├── mlx-whisper large-v3 (Apple Neural Engine, ~1s latență)
├── Filler detection (3 niveluri: audio + text regex + AI)
├── grammar_mode="batch": Claude Opus analizează
│ discursul COMPLET la `n <Next>` (~30s background)
│ + pathway context din _PATHWAY_PROJECTS knowledge base
└── /ws/live → Browser UI (http://127.0.0.1:8000)
La `iesi`:
├── fisa_gramatician.md/html
├── fisa_numarator.md/html
├── fisa_cronometror.md/html
├── timeline_corelat.md/html
├── session.json
└── speakers/<name>.m4a (audio consolidat per vorbitor)
Fișiere cheie:
| Fișier | Rol |
|---|---|
packages/ai-service/app/grammar_ro.py |
Prompt Claude + _PATHWAY_PROJECTS knowledge base |
apps/cli/src/toastmasters_cli/chat.py |
Comenzi CLI + batch trigger |
apps/cli/src/toastmasters_cli/report.py |
Generare fișe HTML/MD |
apps/cli/src/toastmasters_cli/state.py |
SessionState + Speaker + 22 roluri |
packages/ai-service/app/static/app.js |
Browser UI + timer + /ws/live handler |
Surse de referință TM: hub:OFFICIAL-SOURCES | Threshold-uri standard: hub:TM-KNOWLEDGE