Merge feat/parakeet-engine: Parakeet TDT 0.6B v3 English engine (spec 001 workstream 7)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	AGENTS.md
#	bun.lock
#	docs/Decisions.md
#	src/lib/models.ts
#	src/worker/inference.worker.ts
#	src/worker/protocol.ts
#	tests/models.test.ts
This commit is contained in:
Lucas Winther
2026-10-30 01:46:51 +01:00
29 changed files with 1741 additions and 54 deletions
+24
View File
@@ -2,6 +2,7 @@ import { describe, test, expect } from "bun:test";
import {
applyLoadProgress,
deviceAttempts,
parakeetDeviceAttempts,
dtypeRequiresF16,
initialLoadProgress,
choosePipeline,
@@ -247,6 +248,29 @@ describe("deviceAttempts (D-004, D-017)", () => {
});
});
describe("parakeetDeviceAttempts (D-WS7a)", () => {
const everything = { webnn: true, webgpu: true, webgpuF16: true };
test("auto never picks an accelerator for Parakeet", () => {
expect(parakeetDeviceAttempts("auto", everything)).toEqual(["wasm"]);
});
test("explicit WebGPU is tried (then WASM) only with shader-f16", () => {
expect(parakeetDeviceAttempts("webgpu", everything)).toEqual(["webgpu", "wasm"]);
expect(parakeetDeviceAttempts("webgpu", { ...everything, webgpuF16: false })).toEqual([
"wasm",
]);
expect(parakeetDeviceAttempts("webgpu", { ...everything, webgpu: false })).toEqual([
"wasm",
]);
});
test("WebNN and WASM preferences run WASM", () => {
expect(parakeetDeviceAttempts("webnn", everything)).toEqual(["wasm"]);
expect(parakeetDeviceAttempts("wasm", everything)).toEqual(["wasm"]);
});
});
describe("TranscribeProgressTracker", () => {
// Production shape: 30 s windows advancing by 20 s (30 − 2·5, the worker's
// chunk/stride settings), like the chunked ASR pipeline.