8-gen bench (4 emotions × 2 corpora) at seed=42 against firdhokk
Whisper-LV3:
target RAVDESS CREMA-D
happy happy (0.999) ✓ happy (0.999) ✓
angry neutral (0.92) sad (0.99)
fearful happy (0.998) fearful (0.984) ✓
sad angry (0.99) fearful (0.99)
CREMA-D 2/4 vs RAVDESS 1/4. Larger / more naturalistic corpus
produces more class-pure fearful direction. Neither corpus solves
angry or sad — recipe shifts into 'vague expressivity' rather than
class-specific corners.
Practical: prefer CREMA-D when available; A/B both per emotion if
class precision matters.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
New examples/stt_profile binary. Loads kyutai/stt-1b-en_fr, feeds PCM
in fixed-size chunks, reports per-call latency p50/p95/min/max plus
realtime factor.
Findings (M-series Metal, 10.43s LibriSpeech in):
frame_batch=1 (80ms): mean=80.8ms p50=81.7ms RT=1.01x
frame_batch=3 (240ms): mean=308.6ms p50=298ms RT=1.29x
Headline: Kyutai STT 1B on Metal saturates at ~1.0x real-time. There
is no slack in the existing model on this hardware. Per-call overhead
amortizes poorly when batching frames (3 frames takes 3.8x single
frame, not 3x). To go faster requires a smaller model (Whisper-tiny
via the existing whisper-rs feature) or a Kyutai variant if available.
Note: converse_server's measured recv_phase (~4-5s for 10.4s audio)
is faster than this profile predicts (~10s). Discrepancy not yet
resolved but the optimization conclusion stands: STT model swap is
the only lever for the receive phase.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>