Files
echo-core/tools/voice_bench_results_threads4.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:24:48Z",
"decision": "FALLBACK_TINY",
"rationale": "small.p50=2.25s >= budget; tiny.p50=0.48s < 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.249,
"p95_s": 2.532,
"mean_rtf": 0.54,
"load_time_s": 1.339,
"cpu_threads": 4,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salut ce mai faci!",
"audio_duration_s": 1.881,
"latencies_s": [
2.068,
1.951,
1.947
],
"median_latency_s": 1.951,
"rtf": 1.038
},
{
"name": "conversational",
"text_in": "Stai puțin să mă gândesc la asta.",
"text_out": "Stai putin să mă gândesc la asta.",
"audio_duration_s": 2.926,
"latencies_s": [
2.092,
2.06,
2.072
],
"median_latency_s": 2.072,
"rtf": 0.708
},
{
"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 sedință cu echipa la 3 după amiază.",
"audio_duration_s": 5.991,
"latencies_s": [
2.235,
2.283,
2.48
],
"median_latency_s": 2.283,
"rtf": 0.381
},
{
"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.285,
2.264,
2.303
],
"median_latency_s": 2.285,
"rtf": 0.405
},
{
"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 a.",
"audio_duration_s": 5.085,
"latencies_s": [
2.279,
2.205,
2.21
],
"median_latency_s": 2.21,
"rtf": 0.435
},
{
"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-răiminteș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": [
2.639,
2.532,
2.528
],
"median_latency_s": 2.532,
"rtf": 0.273
}
]
},
"tiny": {
"p50_s": 0.481,
"p95_s": 0.574,
"mean_rtf": 0.117,
"load_time_s": 0.541,
"cpu_threads": 4,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salut, ce mai fac?",
"audio_duration_s": 1.881,
"latencies_s": [
0.453,
0.417,
0.411
],
"median_latency_s": 0.417,
"rtf": 0.222
},
{
"name": "conversational",
"text_in": "Stai puțin să mă gândesc la asta.",
"text_out": "Stei putin să mă gândesc la asta.",
"audio_duration_s": 2.926,
"latencies_s": [
0.429,
0.449,
0.463
],
"median_latency_s": 0.449,
"rtf": 0.153
},
{
"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 du pămiază.",
"audio_duration_s": 5.991,
"latencies_s": [
0.499,
0.495,
0.504
],
"median_latency_s": 0.499,
"rtf": 0.083
},
{
"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.491,
0.487,
0.456
],
"median_latency_s": 0.487,
"rtf": 0.086
},
{
"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 muină să sun la nu a.",
"audio_duration_s": 5.085,
"latencies_s": [
0.474,
0.468,
0.505
],
"median_latency_s": 0.474,
"rtf": 0.093
},
{
"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ă mream in test de seare să verific dacă scriptul de bakup a rulat correct și să trimitra portul că trea equipă.",
"audio_duration_s": 9.265,
"latencies_s": [
0.574,
0.532,
0.575
],
"median_latency_s": 0.574,
"rtf": 0.062
}
]
}
}
}