Files
echo-core/tools/voice_bench_results_threads2.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:23:08Z",
"decision": "FALLBACK_TINY",
"rationale": "small.p50=3.25s >= budget; tiny.p50=0.50s < 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": 3.255,
"p95_s": 3.611,
"mean_rtf": 0.801,
"load_time_s": 10.633,
"cpu_threads": 2,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salut ce mai faci!",
"audio_duration_s": 1.881,
"latencies_s": [
3.236,
2.952,
2.945
],
"median_latency_s": 2.952,
"rtf": 1.569
},
{
"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": [
3.095,
3.099,
3.126
],
"median_latency_s": 3.099,
"rtf": 1.059
},
{
"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": [
3.437,
3.419,
3.342
],
"median_latency_s": 3.419,
"rtf": 0.571
},
{
"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 5-10 de bani.",
"audio_duration_s": 5.642,
"latencies_s": [
3.24,
3.207,
3.237
],
"median_latency_s": 3.237,
"rtf": 0.574
},
{
"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": [
3.329,
3.27,
3.278
],
"median_latency_s": 3.278,
"rtf": 0.645
},
{
"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.626,
3.611,
3.563
],
"median_latency_s": 3.611,
"rtf": 0.39
}
]
},
"tiny": {
"p50_s": 0.505,
"p95_s": 0.556,
"mean_rtf": 0.122,
"load_time_s": 3.15,
"cpu_threads": 2,
"samples": [
{
"name": "short",
"text_in": "Salut, ce mai faci?",
"text_out": "Salute mai face?",
"audio_duration_s": 1.881,
"latencies_s": [
0.438,
0.449,
0.443
],
"median_latency_s": 0.443,
"rtf": 0.235
},
{
"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.477,
0.476,
0.47
],
"median_latency_s": 0.476,
"rtf": 0.163
},
{
"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 am iază.",
"audio_duration_s": 5.991,
"latencies_s": [
0.506,
0.514,
0.505
],
"median_latency_s": 0.506,
"rtf": 0.084
},
{
"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 doozec și trei de lei și 50 de bani.",
"audio_duration_s": 5.642,
"latencies_s": [
0.504,
0.522,
0.493
],
"median_latency_s": 0.504,
"rtf": 0.089
},
{
"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ă sunilă nu a.",
"audio_duration_s": 5.085,
"latencies_s": [
0.509,
0.504,
0.529
],
"median_latency_s": 0.509,
"rtf": 0.1
},
{
"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ă mire am in test, disiară să verific dacă scriptul de backup a rulat correct și să trimitra portul că trea equipă.",
"audio_duration_s": 9.265,
"latencies_s": [
0.556,
0.535,
0.571
],
"median_latency_s": 0.556,
"rtf": 0.06
}
]
}
}
}