Renumber spec 001 decision placeholders to D-040–D-051; record the Danish publication
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
30969e86b7
commit
0632f7843b
71 files changed
+244
-236
No files matched your search
+26
-18
@@ -125,7 +125,7 @@ than ONNX Runtime under Bun; the server engine becomes genuinely useful rather t
|
||||
slow convenience.
|
||||
|
||||
## D-014 — WASM sessions run at graphOptimizationLevel "basic"
|
||||
**Status:** **Superseded by D-WS1c** (bug workaround, 2026-07-10; the ort-web
|
||||
**Status:** **Superseded by D-043** (bug workaround, 2026-07-10; the ort-web
|
||||
build in Transformers.js 4.3.2 no longer has the bug, so the cap is gone)
|
||||
On the WASM backend, the inference worker passes
|
||||
`session_options: { graphOptimizationLevel: "basic" }` to the Transformers.js
|
||||
@@ -1226,7 +1226,7 @@ exists to catch.
|
||||
**Consequence:** full `bun test` ≈ 19 min on CPU (en_alien ≈ 20 min of it
|
||||
on a cold run); the fast suite excludes this file.
|
||||
|
||||
## D-WS1a — Transformers.js 4.2.0 → 4.3.2, sequential-session patch carried over
|
||||
## D-040 — Transformers.js 4.2.0 → 4.3.2, sequential-session patch carried over
|
||||
**Status:** Accepted (2026-10-29, spec 001 Goal 1)
|
||||
`@huggingface/transformers` is now pinned to exactly `4.3.2` (latest; 4.3.0
|
||||
added Safari 26+ WebGPU). It brings onnxruntime-web
|
||||
@@ -1254,7 +1254,7 @@ TDT/RNN-T (transducer) decoder or joint-network loop anywhere in the
|
||||
package, so **Parakeet TDT 0.6B v3 is not supported natively**; per the
|
||||
spec, that path uses `parakeet.js`.
|
||||
|
||||
## D-WS1d — WebGPU-side effects of the 4.3.2 upgrade: inspected, not measured (needs the owner's browser check)
|
||||
## D-041 — WebGPU-side effects of the 4.3.2 upgrade: inspected, not measured (needs the owner's browser check)
|
||||
**Status:** Open — inspection only (2026-10-29)
|
||||
This machine has no GPU and no browser WebGPU, so D-022, D-025 and D-026
|
||||
cannot be re-measured here. What the upgrade changes on that side, from the
|
||||
@@ -1294,7 +1294,7 @@ cannot be re-measured here. What the upgrade changes on that side, from the
|
||||
5. **Safari 26 (macOS/iOS):** what the footer reports for "auto"; if WebGPU,
|
||||
check speed and output.
|
||||
|
||||
## D-WS1b — D-021's `max_new_tokens: 440` is still needed on Transformers.js 4.3.2
|
||||
## D-042 — D-021's `max_new_tokens: 440` is still needed on Transformers.js 4.3.2
|
||||
**Status:** Accepted (2026-10-29) — re-test of D-021 part 3, which stands unchanged
|
||||
**Source:** 4.3.2's `WhisperForConditionalGeneration.generate()` still takes
|
||||
the seek loop on exactly D-021's condition,
|
||||
@@ -1321,10 +1321,10 @@ version-to-version speed comparison.
|
||||
**Decision:** keep `max_new_tokens: 440` in `src/worker/inference.worker.ts`
|
||||
and in `tests/live-real-model.test.ts`.
|
||||
|
||||
## D-WS1c — WASM sessions back at the default graph optimization level (D-014's "basic" cap dropped)
|
||||
## D-043 — WASM sessions back at the default graph optimization level (D-014's "basic" cap dropped)
|
||||
**Status:** Accepted (2026-10-30) — supersedes D-014
|
||||
**Re-test** of D-014's revisit condition after the Transformers.js 4.3.2 bump
|
||||
(D-WS1a), which brings onnxruntime-web `1.31.0-dev.20260914-8d85527a0`.
|
||||
(D-040), which brings onnxruntime-web `1.31.0-dev.20260914-8d85527a0`.
|
||||
Measured under Bun with onnxruntime-web's own wasm EP (not onnxruntime-node),
|
||||
1 thread, AMD Ryzen 9 9950X shared with other workstreams.
|
||||
1. **Session creation**, `onnx-community/whisper-tiny`
|
||||
@@ -1361,7 +1361,7 @@ check is re-run.
|
||||
`ort-wasm-simd-threaded.*` files, but multithreaded under COOP/COEP) —
|
||||
`tests/offline.md` §2's WASM step is the owner's browser check.
|
||||
|
||||
## D-WS4a — Whisper's "Translate to English" only on models trained for it (`canTranslate`)
|
||||
## D-044 — Whisper's "Translate to English" only on models trained for it (`canTranslate`)
|
||||
**Status:** Accepted (2026-10-29) · spec 001 Goal 4a
|
||||
`WhisperModel` gains `canTranslate: boolean` (`src/lib/models.ts`): **true** for multilingual
|
||||
tiny / base / small / medium, **false** for every `.en` model (no task token) and for
|
||||
@@ -1376,13 +1376,13 @@ server's `parseLanguageAndTask` (D-032) still accepts "translate" for any model
|
||||
sends it for turbo now, and a direct API caller asking faster-whisper to translate with turbo gets
|
||||
what faster-whisper does; rejecting it server-side would be a behaviour change for API users with no
|
||||
UI benefit. Speech in another language than English can still end up in English (or Danish) through
|
||||
text translation of the finished transcript (D-WS4b), for every model.
|
||||
text translation of the finished transcript (D-045), for every model.
|
||||
|
||||
## D-WS4b — Text translation of finished transcripts with Opus-MT, in its own worker
|
||||
## D-045 — Text translation of finished transcripts with Opus-MT, in its own worker
|
||||
**Status:** Accepted (2026-10-29) · spec 001 Goal 4b
|
||||
**What:** any finished transcript — browser file, browser live, server engine — can be translated
|
||||
da→en or en→da from a secondary "Translate transcript…" disclosure under the transcript
|
||||
(`TranslatePanel`). Whisper's own task keeps its label "Translate to English" (D-WS4a). The
|
||||
(`TranslatePanel`). Whisper's own task keeps its label "Translate to English" (D-044). The
|
||||
translation renders as a second transcript card ("Translation (English)") with its own
|
||||
`.txt` / `.srt` / `.txt+ts` exports named `<file>.<en|da>.<ext>`.
|
||||
**Models:** `Xenova/opus-mt-da-en` and `Xenova/opus-mt-en-da` — Transformers.js ONNX exports of
|
||||
@@ -1432,7 +1432,7 @@ terminates the translate worker only.
|
||||
**Not done / follow-ups:** WebGPU for Opus-MT (unmeasurable here); more language pairs (the catalog
|
||||
is two entries, `TRANSLATION_MODELS`); a translation of live text *while* recording.
|
||||
|
||||
## D-WS6a — Danish fine-tuned Whisper models: our own ONNX + CTranslate2 conversions, unpublished until the owner says go
|
||||
## D-046 — Danish fine-tuned Whisper models: our own ONNX + CTranslate2 conversions; only whisper-small-danish published
|
||||
**Status:** Proposed (2026-10-29, spec 001 Goal 6)
|
||||
**Candidates checked (licence + architecture, from each repo's model card, config and notices):**
|
||||
- `thorhojhus/whisper-small-danish` — MIT; plain `WhisperForConditionalGeneration`, whisper-small
|
||||
@@ -1484,7 +1484,15 @@ use beam 5.
|
||||
cards credit the original authors and carry MIT, or Apache-2.0 + NOTICE), then set
|
||||
`DANISH_MODELS_HF_OWNER`. The integrator sets `canTranslate: false` on these entries at merge.
|
||||
|
||||
## D-WS5a — Server engine: batched faster-whisper + tuned Silero VAD for files; live passes stay sequential
|
||||
**Publication (2026-10-30, owner's decision):** only the small fine-tune is
|
||||
published — `lucasw89/whisper-small-danish-ONNX` (browser) and
|
||||
`lucasw89/whisper-small-danish-ct2-int8` (server), public, model cards
|
||||
crediting the `thorhojhus` account and carrying MIT. The turbo-danish and
|
||||
edda-v0.2 conversions showed no clear gain over stock turbo on `da_festuge`, so
|
||||
they stay unpublished (folders kept locally in `/home/user/hf-publish/`) and
|
||||
their catalog entries were removed. `DANISH_MODELS_HF_OWNER = "lucasw89"`.
|
||||
|
||||
## D-047 — Server engine: batched faster-whisper + tuned Silero VAD for files; live passes stay sequential
|
||||
**Status:** Accepted (2026-10-30, spec 001 Goal 5)
|
||||
`server-py/sidecar.py` decoded every request with the sequential
|
||||
`WhisperModel.transcribe`, no VAD.
|
||||
@@ -1529,7 +1537,7 @@ long. Segments arrive in bursts of 8 chunks (≈ 4 min of speech) and the first
|
||||
burst can take ~15–25 s on a long file; the D-021 heartbeat covers it, and
|
||||
cancel lands at the next burst boundary. No new env vars.
|
||||
|
||||
## D-WS2a — "Names and terms" vocabulary hint as a Whisper decoder prompt, cut to 120 tokens
|
||||
## D-048 — "Names and terms" vocabulary hint as a Whisper decoder prompt, cut to 120 tokens
|
||||
**Status:** Accepted (2026-10-29) — spec 001, Goal 2. Placeholder id; the
|
||||
integrator renumbers it.
|
||||
**Context:** users want names and jargon spelled their way. Whisper takes a
|
||||
@@ -1613,14 +1621,14 @@ test; revisit if a larger list is wanted on turbo).
|
||||
long hint. WebGPU behaviour of the prompt path is unmeasured here (CPU
|
||||
only) — needs the owner's browser check.
|
||||
|
||||
**Integration note (2026-10-30, merge with D-WS5a):** faster-whisper's
|
||||
**Integration note (2026-10-30, merge with D-047):** faster-whisper's
|
||||
`BatchedInferencePipeline` (server file mode) re-encodes `initial_prompt`
|
||||
itself and accepts only text, so the sidecar passes it the budget-cut ids
|
||||
decoded back to text (re-encoding gives the same ids, checked with the real
|
||||
tokenizer incl. "Århus, Ærø"); server-live passes keep the ids. Pinned by the
|
||||
stubbed-sidecar test "the vocabulary hint reaches the batched pipeline as text".
|
||||
|
||||
## D-WS3a — Long-form file pipeline (Silero VAD chunks, language pinned once) ships as an Advanced option, off by default
|
||||
## D-049 — Long-form file pipeline (Silero VAD chunks, language pinned once) ships as an Advanced option, off by default
|
||||
**Status:** Accepted (2026-10-30) — spec 001 Goal 3
|
||||
Browser file transcription cuts audio into fixed 30 s windows with 5 s
|
||||
overlap (Transformers.js's chunked pipeline), decoding silence and
|
||||
@@ -1678,14 +1686,14 @@ bars. Whisper's `generate()` drops kwargs not in `forward_params`, so
|
||||
instance; a Transformers.js upgrade must keep the "one encoder pass per
|
||||
chunk" assertion green. WebGPU timings are unmeasured.
|
||||
|
||||
**Integration note (2026-10-30, merge with D-WS2a):** the long-form adapter
|
||||
**Integration note (2026-10-30, merge with D-048):** the long-form adapter
|
||||
(`worker/longform/transformers.ts`) applies the names-and-terms hint to every
|
||||
chunk's decode with the same decoder-prompt prefix as the chunked path
|
||||
(tokenized once per pass); before the merge the `prompt` option reached the
|
||||
adapter but was ignored. Pinned by a unit test in
|
||||
`tests/longform-transformers.test.ts`.
|
||||
|
||||
## D-WS3b — Silero VAD model: onnx-community/silero-vad from the Hub, cached like Whisper weights, never fetched offline
|
||||
## D-050 — Silero VAD model: onnx-community/silero-vad from the Hub, cached like Whisper weights, never fetched offline
|
||||
**Status:** Accepted (2026-10-30) — spec 001 Goal 3
|
||||
**Decision:** the long-form pipeline's VAD is Silero VAD v5 as exported by
|
||||
`onnx-community/silero-vad` (`onnx/model.onnx`, fp32, 2 243 022 bytes, MIT;
|
||||
@@ -1704,7 +1712,7 @@ path (`choosePipeline`). Live mode keeps its energy gate (D-016).
|
||||
off-by-default option); running it on the main thread (D-013).
|
||||
**Consequence:** the first "Skip silence" run online downloads 2.2 MB.
|
||||
|
||||
## D-WS7a — Parakeet TDT 0.6B v3 as an English-only, desktop-only browser model via parakeet.js on the shared onnxruntime-web
|
||||
## D-051 — Parakeet TDT 0.6B v3 as an English-only, desktop-only browser model via parakeet.js on the shared onnxruntime-web
|
||||
**Status:** Accepted (2026-10-29, spec 001 Goal 7)
|
||||
**Runtime decision (evidence).** `@huggingface/transformers` 4.2.0 (ours) and
|
||||
4.3.2 (npm `latest`) were inspected from their published tarballs: both ship
|
||||
|
||||
Reference in new issue
Block a user