Commit Graph
68 Commits
Author SHA1 Message Date
Lucas WintherandClaude Opus 5.5 f7d0525423 Wait for the PCM payload, not just the request, in the live WebSocket test (race under load)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:58:03 +01:00
Lucas WintherandClaude Opus 5.5 d6c3d1ff70 Add the optional "Names and terms" field and send it with every file and live pass
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:57:30 +01:00
Lucas WintherandClaude Opus 5.5 8236ea3504 End the hint prompt in a full stop: an unterminated list made Whisper drop punctuation and loop
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:55:48 +01:00
Lucas WintherandClaude Opus 5.5 1c5952f212 Validate the vocabulary hint server-side and pass it to faster-whisper as initial_prompt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:45:39 +01:00
Lucas WintherandClaude Opus 5.5 313892b6df Carry the vocabulary hint as prompt from the engines through the worker into every window
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:44:06 +01:00
Lucas WintherandClaude Opus 5.5 99b9cd71cd Type the prompt wrapper's tensor slice for open-ended ranges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:43:29 +01:00
Lucas WintherandClaude Opus 5.5 87617bef4c Fix a type error in the hint truncation test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:43:19 +01:00
Lucas WintherandClaude Opus 5.5 e6de097cfd Feed Whisper a decoder prompt through the ASR pipeline and strip it from the output
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:43:11 +01:00
Lucas WintherandClaude Opus 5.5 942799d3cb Add the vocabulary hint's normalization, storage and prompt truncation rule
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:42:25 +01:00
Lucas WintherandClaude Opus 5.5 225634c165 Plan workstream 2: vocabulary hint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:41:45 +01:00
Lucas WintherandClaude Opus 5.5 9159e2ab5e Coordination plan: assign the synthetic meeting fixture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:29:11 +01:00
Lucas WintherandClaude Opus 5.5 2642462e33 Add coordination plan for spec 001
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:28:52 +01:00
Lucas WintherandClaude Opus 5.5 3d9c7bfd34 Approve spec 001
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:27:32 +01:00
Lucas WintherandClaude Opus 5.5 2bef4cb80a Draft spec 001: transcription quality and speed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:27:01 +01:00
Lucas WintherandClaude Opus 5.5 e195883b45 Record the product audience and copy tone in PRODUCT.md
Primary users are non-technical people who want Whisper without docs or
ML setup; technical users must keep full control as if running it on
their own device.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:14:41 +01:00
Lucas WintherandClaude Opus 5.5 4942461f79 Add typecheck + CI checks, light theme with self-hosted Inter, fix real-model test
- Typecheck: typescript 7 devDependency, `bun run typecheck`; CI gains a
  `check` stage (install, typecheck, fast tests) gating image builds (D-038).
- Light theme: every colour is a token; prefers-color-scheme: light
  overrides them. Inter Variable self-hosted from @fontsource-variable/inter,
  kept out of Bun's CSS inlining and precached (scripts/fonts.ts, D-037).
  Backend select no longer overflows on narrow phones.
- tests/live-real-model.test.ts: time budget scales with clip length and
  en_alien gets a measured WER bar; it had failed since July (D-039).
- Delete the temporary isolate_wer2.ts; fix icon "not checked in" comments
  and the README's model-weights location.
- Agent docs: branch naming, typecheck, CI, Bun CSS gotcha, permissions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:52:13 +01:00
Lucas WintherandClaude Opus 5.5 0ece4b3a2a Bootstrap agent-ready docs and permissions (D-036)
Root AGENTS.md is now the single source of truth for coding agents;
CLAUDE.md, GEMINI.md and docs/CLAUDE.md are pointers. The product spec
moves from docs/CLAUDE.md to PRODUCT.md, DESIGN.md records the shipped
visual system, and docs/PERMISSIONS.md defines agent permission tiers
rendered to .claude/, .codex/ and .gemini/. Adds docs/specs/ and
docs/plans/, logs issues noticed (not fixed) in WorkBreakdown.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:51:30 +01:00
Lucas WintherandClaude Opus 5.5 c1b710cb23 Remove AU branding
Rename the app from "AU Whisper Web" to "Whisper Web" in the README
title and app header, rename the package to whisper_web, and drop the
au_ prefix from the transformers patch comment and the scratch path in
isolate_wer2.ts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:15:58 +01:00
Lucas Winther 7ab41f4299 Document D-035: whisper-tiny multilingual vs .en speed gap is a content-dependent hallucination-loop effect, not a config bug
Measured with the ort-web-under-Bun harness: no reliable speed difference on
clean, language-matched audio. On out-of-distribution audio (wrong/undetected
language), the multilingual model's extra forced task token measurably
changes how long its repetition-loop hallucination runs before EOS (434 vs 67
tokens on the da_festuge fixture), which is where the reported slowness comes
from. Both models resolve to identical, merged, KV-cache-enabled decoders at
the same dtype — no catalog/config fix applies here. Documents the mechanism
and flags a future no_repeat_ngram_size/repetition_penalty mitigation as the
actionable follow-up if this recurs.
2026-07-30 08:31:58 +02:00
Lucas Winther 500cf3b36e Don't show the live "recording"/listening indicator until the model is ready
startLive()'s browser-engine branch flipped liveStatus to "listening" (the
red live-dot, "Listening..." hint) the instant the mic was granted, even if
the Whisper pipeline was still loading — the user saw an active-looking
session while nothing was being transcribed yet. transcribeLiveSegment()
already correctly awaits the model-ready gate before posting a segment, so
this was purely a misleading-status bug.

Adds a "loading-model" LiveStatus between "starting" and "listening";
startLive() now waits on the same browserModelReady() gate the transcribe
path uses before claiming "listening", with race-safe cleanup if the load
fails while waiting. Server-engine live is unaffected.

Adds Decisions.md D-034; updates tests/live.md's manual verification steps.
2026-07-30 08:31:23 +02:00
Lucas Winther c5d193600a Show "Loading model from cache" instead of "Downloading" when weights are already cached
Transformers.js's progress_callback always fires status:"download" regardless
of whether the file is actually served from the Cache API — there's no
cacheHit signal for the worker to forward. Since App.tsx already tracks which
models are downloaded (for ModelPicker's badges), it now checks that before
starting a load and threads a loadedFromCache flag into ModelLoadProgress, so
the heading/hint reflect reality for the common already-cached case.

Adds Decisions.md D-033.
2026-07-30 08:30:19 +02:00
Lucas Winther bb77185e3f Merge remote-tracking branch 'origin/main' 2026-07-29 09:20:50 +02:00
Lucas Winther 7040f031a6 Usability and test infrastructure updates. 2026-07-29 09:20:43 +02:00
Lucas Winther 69602f046b Usability and test infrastructure updates. 2026-07-29 09:20:32 +02:00
Lucas Winther 99b1732003 Fix Docker image bloat: exclude local venvs from build context, move transformers.js to devDependencies. 2026-07-29 08:25:00 +02:00
Lucas Winther 214a9ef714 Better error handling 2026-07-29 07:59:16 +02:00
Lucas Winther 78e99fc415 Fixed for decoder dl speed and mobile warnings on low memory devices. 2026-07-29 07:47:42 +02:00
Lucas Winther 2643a446d0 Gitlab docker build issue fix. 2026-07-28 08:22:01 +02:00
Lucas Winther 5c911d703e Fix patch files not being used in build 2026-07-28 07:45:39 +02:00
Lucas Winther 1a1a162c53 Bugfixes for server-based microphone decoding.. 2026-07-28 07:37:22 +02:00
Lucas Winther a0ef5548af Optimize max peak memory usage and add warnings on mobile for higher models 2026-07-28 07:23:37 +02:00
Lucas Winther f6019b3a42 Prefer WASM on firefox cause WebGPU is incredibly slow there. 2026-07-17 16:35:49 +02:00
Lucas Winther 74858f63fc Enhanced transcription usability. 2026-07-17 15:18:15 +02:00
Lucas Winther 770cfc9ff7 Allow txt export with timestampts 2026-07-17 14:14:43 +02:00
Lucas Winther a5cfd219f6 Implement speedups for transcription. 2026-07-15 14:45:40 +02:00
Lucas Winther 742053144e Fix output text not working. 2026-07-15 14:13:59 +02:00
Lucas Winther 0bd5d326a5 Focus on speedup and not hanging on large audio files. 2026-07-15 13:01:22 +02:00
Lucas Winther cba27fc728 Preload server-side models. 2026-07-14 21:51:42 +02:00
Lucas Winther ce189b2967 Only show big models when using server. 2026-07-14 21:49:57 +02:00
Lucas Winther c745e9acc6 Build docker image with pthon sidecar as well. 2026-07-14 20:42:49 +02:00
Lucas Winther dc4eec2e9e Describe clearly you don't need to download models on the server. 2026-07-14 20:38:25 +02:00
Lucas Winther 8464f0e492 Better model download management 2026-07-14 20:35:03 +02:00
Lucas Winther 42fe27d2dd Add live transcription via remote server. 2026-07-14 20:21:48 +02:00
Lucas Winther 695b97be76 Fix model selection. 2026-07-14 19:55:20 +02:00
Lucas WintherandClaude Fable 5 8f2da530e2 Transcript export (.txt/.srt) and model storage manager (M6)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 19:41:47 +02:00
Lucas Winther 0084e0435a Add cancel + progress UI, EngineToggle, and Docker deployment 2026-07-14 19:32:10 +02:00
Lucas Winther be82ecfe57 Better tests and more user feedback while doing transcription; WIP. 2026-07-14 14:44:01 +02:00
Lucas Winther 18acead43c Improvements and tests for live transcription. 2026-07-14 14:14:01 +02:00
Lucas Winther e4be47f707 fix bun dev not starting correctly. 2026-07-14 12:38:24 +02:00
Lucas Winther 2dff7512ac Try fixing bad live transcription performance. 2026-07-10 11:43:29 +02:00