Files

9.2 KiB
Raw Permalink Blame History

DTW diagnostic: strict UTF-8 failure

Status: internal CPU diagnosis and completed tiny VAD/DTW comparison, 2026-10-13. Production ASR integration and broader independent acceptance remain open; no new media rating follows from this evidence. Google EmbeddingGemma 2 remains the production semantic model.

The original fifteen-window DTW experiment stopped on strict UTF-8 parsing. Its temporary raw output was cleaned, so that first run's exact bytes could not be inspected. Its partial report remains unchanged. A separate coordinator- authorized diagnostic reproduced exactly the second music01 window: source offset 30000 ms, duration 30000 ms, primary audio stream, 480000 decoded samples. No labels selected text/timestamps, and the whole experiment was not rerun.

Revalidated execution

The whisper.cpp checkout was clean at pinned commit d1be6fde11ac6e0407606b4e42fe72d34add8037. Before execution, the fixture and source hashes, base model size/hash, worker hash and both decoder hashes were checked against frozen evidence. The owned runner retained raw output, WAV, probe, stderr and report directly under ignored .searchi/speech/dtw-window-diagnostic-v1; no temporary cleanup removed them.

Artifact SHA-256
Frozen fixture b4e465a0eb9582b826eebd2a20797e1680e4907e336d02d0ef2194e2ba0af393
Source music01 29fcd20414ee19c2a5aa4339eaf6375079dc87959051ab0aea32c76df52f34dc
CPU worker 12c681b4bcd9c7679b647b9a041e121a2f9e72cb2a9c6f189f529ec8b79c36f8
Multilingual base model 60ed5bc3dd14eea856493d334349b405782ddcaf0028d4b5df4088345fba2efe
FFmpeg b778ca5786ee4b0b4f37f34478617093d2fdb9a532d281fb76cda69d1d579d46
FFprobe 4e1b0afd27bf02d79739f27b2d650137470925afb19d54b5e89a708b7a389236
Raw JSON, 29148 bytes f1de2c295b0c9a223619abe6dbf34823be6a6aa3dbcad69fea1d6121fa0c200e
Native log 28d174198a3ef980aa5c8c1237618f450a19b0a80c8a270209dce113a8de3a7a
Diagnostic report b4b0dedfac6365c59793806801b1fc5d9f8f203891b623fb86ad508352ad0114

Windows VM execution forced CPU: SEARCHI_FORCE_CPU=1, native flags --no-gpu --threads 1 --processors 1 --language auto --output-json-full --dtw base --no-flash-attn, verified base model and the decoded owned WAV. The existing bounded decoder used absolute 30-second seeking and sample trimming; its output contained exactly 480000 samples. Native ASR exited zero after 42493.25 ms; decoding took 271.42 ms. The owned diagnostic runner exited zero after recording strict_parse: rejected. This is not a successful ASR result or a warmed throughput measurement. No other model inference ran concurrently under this coordinator's CPU slot; unrelated VM load was not instrumented.

Exact failure and pinned native source

Strict UTF-8 decoding rejects bytes 1137–1138 (zero-based half-open range 1137–1139). The segment text ends with bytes E2 80 immediately before the closing JSON quote: a three-byte UTF-8 sequence has no final continuation byte. The last ordinary token, id 913, also ends with exactly E2 80 at byte 28900. Earlier token text contains complete E2 80 8D codepoints. Raw bytes were inspected directly, without replacement decoding or writing repaired JSON.

The pinned native core constructs segment text by concatenating token strings. The CLI full-JSON serializer merges adjacent token byte pieces while a codepoint needs continuation and another token exists. At the last token there is no continuation to merge; it writes the remaining incomplete bytes. Its segment text serializer likewise writes the already incomplete segment bytes. The escaping function only escapes quotes/backslashes; it cannot restore a missing codepoint byte. Thus this is incomplete recognized byte output, reproduced in both segment and token text, rather than a Python ANSI conversion or DTW time unit error. The exact internal reason the decoder terminated this token sequence has not been instrumented and remains unproven.

Relevant pinned source: CLI serializer and token merging, UTF-8 continuation helper, and segment construction.

Minimal next change and limits

Before changing a native worker, add a strict UTF-8 validator at its JSON boundary for original segment strings and merged token strings. If original recognized bytes remain invalid after adjacent-token merging, return an explicit typed recognition-output error with bounded raw evidence; never replace characters, truncate text, synthesize missing bytes or fabricate timestamps. Test a valid split codepoint and an incomplete final codepoint. This makes the failure machine-readable; it does not repair recognition or establish improved retrieval. An alternative timestamp/recognition policy must be declared and evaluated separately before any default changes.

The Python harness already fails closed, retains bounded raw bytes with SHA and parse positions, and atomically records an incomplete, ineligible checkpoint. The original partial DTW report contains three NASA windows with 21 valid point-based sentence spans and one separately retained ordinary-interval error. It lacks remaining piano windows and three other competitors. Neither that partial report nor this one-window diagnosis can receive an accepted quality score. Packaging, independent bilingual speech, silence/music hallucination, resource peaks and actual production hybrid integration remain open.

Complete frozen VAD + DTW follow-up

A subsequent separately frozen combination used the same original Silero VAD source intersections and base DTW point policy. All five sources remained explicit: twelve speech windows in NASA, and four no-speech competitors that launched no ASR because of the unchanged actual VAD decisions. No label selected the gate or removed the malformed piano window. Raw Google audio retrieval stays unchanged. This combination finished with zero parsing/alignment failures and 21 sentence passages. Source/tool hashes were revalidated; the combination manifest SHA is d3bf453f21dac03fd029344af2fe700480cf686d2ba5b5d7fcc79134dda1c563.

Independent Rust verification reconstructed every VAD window and DTW point from raw evidence before actual Google document/query CPU inference. Both models used one thread; indexing role retained 2048 tokens and query role 512. The normal auto-capable Google worker reported google/embeddinggemma-2, 768 dimensions, CPU and b11461-no-logits-v1. The scorer accepted the complete report with zero excluded windows against the unchanged eight queries.

Fixed metric Ungated base Frozen VAD base Frozen VAD + DTW
Correct top file 8/8 8/8 8/8
Strict timestamp-start hits 4/8 4/8 6/8
Labelled interval overlap 6/8 6/8 6/8

The two gains against gated base are the Mars queries: start changed from 54.440 seconds, before the labelled 56.539–63.496 interval, to 58.820 seconds. Moon starts changed from ungated 0.000 seconds to gated-base 1.700 seconds and gated-DTW 1.820 seconds; both gated starts already pass the frozen 1.551–3.603 interval. Funding queries still pass. Both orange-soil queries still fail; their top DTW point spans are 26.690–27.030 seconds, outside the topic. Correct file identity alone does not solve this missing recognized passage.

These are four topics in one English NASA recording, with eight correlated English/German search queries. They do not validate German speech or independent accents. VAD produced no recognized passages for the four competitors, so 8/8 file identity is especially weak evidence; all five source identities remain verified, but this is not broad music/no-answer quality. The direct recognized- text diagnostic is not production hybrid search. No production default, transcription integration or improved media self-rating follows.

ASR process time summed to 88090.51 ms; window decoding summed to 1784.10 ms. This excludes probe/hash/checkpoint and the earlier VAD cost. Google indexing session initialization plus document encoding took 3086.03 ms, query-session startup 919.69 ms. Eight query/ranking measurements had median 96.83 ms and nearest-rank p95 128.75 ms; these tiny shared-VM measurements are not desktop first-input, clean-room or large-library latency. The already running user app retained its warmed CPU model; it received no further coordinated search inputs.

Retained ignored artifact SHA-256
gated-base-dtw-results-v1.json 3b6a791df6503a7a4e91ed708be7b722d1c124a2cf6c5a290cd94296bebc3c41
gated-base-dtw-google-ranks-v1.json f743265a53ade09b36fef25fe4e90b70a46cd2610a12aaa976f179ab9835fe91
gated-base-dtw-google-score-v1.json 4cfbc0f540ed8edcbed6e45f55fac80ee11867597152928d3407dabd7db34502
Actual Google worker c01cb3ec13cfca722ee768e8350e1399a8b9a4d14a24a35adc3473a5cfc82a73
Actual ranking executable 58f4b1cf90cbf403220b60579d72ced9dd7bc795bd05a7386820e9ab84b5f519

The original failed ungated DTW and ordinary-token reports remain unchanged.