Commit Graph
54 Commits
Author SHA1 Message Date
Lucas Winther 2c87471fdc Merge feat/vocabulary-hint: names-and-terms decoder prompt (spec 001 workstream 2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/Architecture.md
#	docs/Decisions.md
#	docs/WorkBreakdown.md
#	server-py/sidecar.py
#	src/App.tsx
#	src/server/live.ts
#	src/server/transcribe.ts
#	tests/fixtures/fake_sidecar.py
#	tests/transcribe.test.ts
2026-10-30 01:35:28 +01:00
Lucas WintherandClaude Opus 5.5 5f335c3e41 Publish only whisper-small-danish under lucasw89; drop the turbo Danish entries
The owner chose to publish just the small fine-tune: the turbo fine-tunes
showed no clear gain over stock turbo on da_festuge (D-WS6a).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 01:32:30 +01:00
Lucas Winther aa7ae93c0c Merge feat/server-batched-vad: faster-whisper batched + VAD (spec 001 workstream 5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/Decisions.md
2026-10-30 01:27:55 +01:00
Lucas Winther 439d099279 Merge feat/danish-models: Danish fine-tune catalog entries (spec 001 workstream 6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/Decisions.md
#	docs/WorkBreakdown.md
2026-10-30 01:27:45 +01:00
Lucas Winther c94689e2e0 Merge feat/translate: canTranslate + Opus-MT transcript translation (spec 001 workstream 4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/Decisions.md
2026-10-30 01:15:05 +01:00
Lucas WintherandClaude Opus 5.5 951aad8f55 Default the Danish conversions to q4 on WASM, as measured on the converted files
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 01:12:28 +01:00
Lucas WintherandClaude Opus 5.5 cc8e031d6b Run WASM sessions at the default graph optimization level now that ort-web 1.31 loads the 8-bit decoders
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:45:46 +01:00
Lucas WintherandClaude Opus 5.5 104c1c4e4d Record the batched-VAD measurements and check heartbeat, bursts and cancel against the real sidecar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:23:55 +01:00
Lucas WintherandClaude Opus 5.5 1c1806840e Tune the server engine's Silero VAD so batched file transcription stops dropping quiet speech
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:07:05 +01:00
Lucas WintherandClaude Opus 5.5 edb9b332b9 Cap the hint prompt at 120 tokens: a full 223-token prompt garbles small models
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:51:47 +01:00
Lucas WintherandClaude Opus 5.5 dc15623f62 WIP: uncommitted work at pause (session limit)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:03:27 +01:00
Lucas WintherandClaude Opus 5.5 826bcd2e49 WIP: uncommitted work at pause (session limit)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:03:27 +01:00
Lucas WintherandClaude Opus 5.5 9f1d58c0b7 Keep max_new_tokens: 440 on Transformers.js 4.3.2 and pin the seek-loop condition it avoids
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:59:35 +01:00
Lucas WintherandClaude Opus 5.5 0684122f45 Document transcript translation: decision, architecture, manual offline check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:11:37 +01:00
Lucas WintherandClaude Opus 5.5 c110c9203f Add the Translate transcript panel with its own exports
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:10:51 +01:00
Lucas WintherandClaude Opus 5.5 a0748b5fa6 Translate transcripts with Opus-MT in a dedicated translation worker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:10:51 +01:00
Lucas WintherandClaude Opus 5.5 2a4f5b16a5 Add Danish fine-tune catalog entries under a single pending Hugging Face owner constant
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:00:33 +01:00
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 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 753ea03979 Upgrade @huggingface/transformers to 4.3.2 and carry the sequential-session patch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:44:18 +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 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 82ed34c7f9 Plan transcript translation units and sentence pieces for Opus-MT
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:39:37 +01:00
Lucas WintherandClaude Opus 5.5 02a5eab119 Offer Whisper's Translate to English only on models trained for it (canTranslate)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:37:28 +01:00
Lucas WintherandClaude Opus 5.5 afce794cbf Mark server-live sidecar passes as live mode and cover the stream heartbeat with a test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:37:01 +01:00
Lucas WintherandClaude Opus 5.5 dc64bb8198 Run server-engine file transcriptions through faster-whisper's batched pipeline with VAD
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:36:21 +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 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 7040f031a6 Usability and test infrastructure updates. 2026-07-29 09:20:43 +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 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 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 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 076efc2101 subpath feature 2026-07-10 10:13:37 +02:00
Lucas Winther 2d668b3fb8 Start on live transcription and python sidecar (faster-whisper) 2026-07-10 09:41:02 +02:00
Lucas Winther 033ea32968 Start on live transcription and python sidecar (faster-whisper) 2026-07-10 09:28:42 +02:00
Lucas Winther 71d9e6e781 Login feature flag - the rest. 2026-07-10 04:50:42 +02:00
Lucas Winther 71d1730284 Login feature flag added. 2026-07-10 04:50:25 +02:00