-
Stefy Lanza (nextime / spora ) authored
Every whisper.cpp model answered with text and nothing else -- no segments, no words -- while the HF and Vosk backends on the same endpoint returned both, which reads as whisper being the broken one. Two reasons, in sequence: the server was never asked for a verbose reply, and the route passed a hard-coded empty segment list to _finalize whatever came back. So the server is asked for verbose_json (one extra form field, ignored by a caller that wanted plain json), and the reply is mapped in both shapes it comes in: OpenAI-style "segments" in float seconds, and whisper.cpp's own "transcription" entries whose "offsets" are MILLISECONDS -- read as seconds those would place a 2-second clip 2000 s in. Per-word entries are picked up from the top level or from inside each segment, wherever a DTW build puts them. Nothing is invented: a field the server did not send stays missing. And when word timings were REQUESTED but none came back, that is now said out loud, because whisper.cpp emits them only with DTW enabled and a silent empty list is indistinguishable from a model that found no speech. Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
56af3f00