Files
echo-core/tools/voice_bench_results.json
Marius Mutu c6d11bdf9f chore(voice): spike STT latency benchmark + HT contention lesson
Pas 1 (BLOCKING) din Discord voice-to-voice test plan. Sweet spot empiric
pe i7-6700T: faster-whisper small int8 @ cpu_threads=4 → p50 2.25s,
p95 2.64s, mean RTF 0.46. Curba HT: 2t=3.25s → 4t=2.25s (sweet) →
6t=2.79s (regres +24% prin contention). tiny respinge — halucinează RO.

- tools/voice_bench.py: harness benchmark cu 8 sample-uri RO sintetizate
  via Supertonic API, măsoară p50/p95/RTF pentru small+tiny pe N threads.
- tools/voice_bench_results*.json: raw output 3 pass-uri (threads 2/4/6).
- tasks/voice-bench-results*.md: summary markdown per pass.
- tasks/lessons.md: HT contention rule — cpu_threads = physical cores,
  rulează sweep nu single-point pentru ML inference compute-bound.

Budget updated în plan-uri: STT p50 1.5s → 2.5s, perceived 4s → 5s p50.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 12:52:11 +00:00

184 lines
5.6 KiB
JSON

{
"schema_version": 1,
"timestamp_utc": "2026-05-27T12:30:17Z",
"decision": "FALLBACK_TINY",
"rationale": "small.p50=2.79s >= budget; tiny.p50=0.54s < budget 1.50s. Document fallback la 'tiny' în plan (accuracy mai slabă, latency OK).",
"budget_s": 1.5,
"trials_per_sample": 3,
"models": {
"small": {
"p50_s": 2.793,
"p95_s": 3.308,
"mean_rtf": 0.699,
"load_time_s": 1.505,
"cpu_threads": 6,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salut ce mai faci!",
"audio_duration_s": 1.881,
"latencies_s": [
2.586,
2.666,
2.538
],
"median_latency_s": 2.586,
"rtf": 1.375
},
{
"name": "conversational",
"text_in": "Stai puțin să mă gândesc la asta.",
"text_out": "Stai puțin să mă gândesc la asta.",
"audio_duration_s": 2.926,
"latencies_s": [
2.739,
2.697,
2.683
],
"median_latency_s": 2.697,
"rtf": 0.922
},
{
"name": "medium",
"text_in": "Am verificat în calendar și avem ședință cu echipa la trei după-amiază.",
"text_out": "Am verificat în calendari și avem ședință cu echipa la trei după amiază.",
"audio_duration_s": 5.991,
"latencies_s": [
3.005,
3.013,
3.023
],
"median_latency_s": 3.013,
"rtf": 0.503
},
{
"name": "numbers",
"text_in": "Costul total este o sută douăzeci și trei de lei și cincizeci de bani.",
"text_out": "Costul total este 120 și 3 delei și 50 de bani.",
"audio_duration_s": 5.642,
"latencies_s": [
2.657,
2.698,
2.677
],
"median_latency_s": 2.677,
"rtf": 0.475
},
{
"name": "question",
"text_in": "Marius, vrei să-ți pun pe agenda de mâine să suni la NOAA?",
"text_out": "Marius, vrei să-ți spun pe agenda de mâine să suni la noa?",
"audio_duration_s": 5.085,
"latencies_s": [
2.883,
2.85,
2.847
],
"median_latency_s": 2.85,
"rtf": 0.561
},
{
"name": "longer",
"text_in": "Vreau să-mi reamintești diseară să verific dacă scriptul de backup a rulat corect și să trimit raportul către echipă.",
"text_out": "Vreau să mi-reamintești di seară să verific dacă scriptul de bacup a rulat corect și să trimit raportul către echipă.",
"audio_duration_s": 9.265,
"latencies_s": [
3.277,
3.428,
3.308
],
"median_latency_s": 3.308,
"rtf": 0.357
}
]
},
"tiny": {
"p50_s": 0.541,
"p95_s": 0.662,
"mean_rtf": 0.138,
"load_time_s": 0.576,
"cpu_threads": 6,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salut ce mai faci",
"audio_duration_s": 1.881,
"latencies_s": [
0.669,
0.542,
0.557
],
"median_latency_s": 0.557,
"rtf": 0.296
},
{
"name": "conversational",
"text_in": "Stai puțin să mă gândesc la asta.",
"text_out": "Stei putin să mă gândest la asta.",
"audio_duration_s": 2.926,
"latencies_s": [
0.499,
0.475,
0.497
],
"median_latency_s": 0.497,
"rtf": 0.17
},
{
"name": "medium",
"text_in": "Am verificat în calendar și avem ședință cu echipa la trei după-amiază.",
"text_out": "Am verificat în calendar și avem sedeință cu equipala 3 dupa amiază.",
"audio_duration_s": 5.991,
"latencies_s": [
0.569,
0.606,
0.599
],
"median_latency_s": 0.599,
"rtf": 0.1
},
{
"name": "numbers",
"text_in": "Costul total este o sută douăzeci și trei de lei și cincizeci de bani.",
"text_out": "Costul total este o suta 20 și 3 de lei și 50 de bani.",
"audio_duration_s": 5.642,
"latencies_s": [
0.519,
0.51,
0.54
],
"median_latency_s": 0.519,
"rtf": 0.092
},
{
"name": "question",
"text_in": "Marius, vrei să-ți pun pe agenda de mâine să suni la NOAA?",
"text_out": "Marius, vrei să-ți pun pe agenda de muine să sunt la nu a.",
"audio_duration_s": 5.085,
"latencies_s": [
0.51,
0.524,
0.522
],
"median_latency_s": 0.522,
"rtf": 0.103
},
{
"name": "longer",
"text_in": "Vreau să-mi reamintești diseară să verific dacă scriptul de backup a rulat corect și să trimit raportul către echipă.",
"text_out": "Vreau sămi rea minstești diseare să verific daca scriptul de backup a rulat correct și să trimitra portul către e kipă.",
"audio_duration_s": 9.265,
"latencies_s": [
0.662,
0.646,
0.627
],
"median_latency_s": 0.646,
"rtf": 0.07
}
]
}
}
}