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

  1. Ce face tool-ul
  2. Înainte de ședință
  3. Pornire
  4. Comenzi esențiale
  5. Audio — configurație validată
  6. Pathways per vorbitor
  7. Browser UI — ghid vizual
  8. La finalul ședinței
  9. Troubleshooting
  10. Roluri suportate
  11. 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