Commit Graph
744 Commits
Author SHA1 Message Date
iamdoubz d3f4aeef14 feat(i18n): fr-CA strings for model quantization picker 2026-07-16 21:09:57 -05:00
iamdoubz 4bbaed7b0c feat(i18n): fr-FR strings for model quantization picker 2026-07-16 21:09:56 -05:00
iamdoubz b55bd5175f feat(i18n): es-MX strings for model quantization picker 2026-07-16 21:09:55 -05:00
iamdoubz d1b951e9ea feat(i18n): es-ES strings for model quantization picker 2026-07-16 21:09:54 -05:00
iamdoubz e2ec141d75 feat(i18n): de strings for model quantization picker 2026-07-16 21:09:53 -05:00
iamdoubz 90c12cb070 feat(i18n): en strings for model quantization picker 2026-07-16 21:09:51 -05:00
iamdoubz 88adce152b feat(ui): group whisper models per family with quantization dropdown (FR-MODEL-1) 2026-07-16 21:09:50 -05:00
iamdoubz 9e3f6327b7 feat(models): add Q8_0 variants + large-v3-turbo q5_0/q8_0 to catalog (FR-MODEL-1) 2026-07-16 21:06:35 -05:00
iamdoubz 8cdd0f61df Merge pull request 'Parakeet v Whisper h2h' (#26) from test_parakeet into main
Reviewed-on: #26
v0.7.4
2026-07-16 10:23:17 -05:00
iamdoubz 2d1c9fa478 Bench test npu 2026-07-16 10:10:30 -05:00
iamdoubz a71299803f docs(release): v0.7.4 release notes with SHA-256 checksums 2026-07-16 10:03:23 -05:00
iamdoubz fcf72da9db chore: bump version 0.7.4 2026-07-16 09:56:22 -05:00
iamdoubz 616d2f4f97 chore(bench): rustfmt asr_bench + allow large_enum_variant (one Engine per process) 2026-07-16 08:47:11 -05:00
iamdoubz be49c53940 docs(bench): W1 anomaly resolved — LP-E-core spin-barrier root cause, fixed numbers, criteria updated 2026-07-16 08:44:17 -05:00
iamdoubz 6cd736bec1 test(bench): W1 re-run after thread-cap fix — RTF 0.218, 0.827 cpu-sec/audio-sec, WER unchanged 2026-07-16 08:43:26 -05:00
iamdoubz 0d2eee7416 fix(transcription): cap whisper n_threads at 4 — hybrid-CPU spin-barrier pathology
available_parallelism() put ggml workers on Meteor Lake LP E-cores; every
per-node spin barrier then waits on the slowest worker while the rest burn
CPU: RTF ~22 at 14 threads vs 0.28 at 4 threads (~80x), same build. This
was the real W1 CPU-pathology root cause; /Od-vs-/O2 made no difference.
4 matches whisper.cpp upstream default and is the CPU-frugal choice
(NFR-RES-1). WA_WHISPER_THREADS env overrides for support/bench.
2026-07-16 08:39:45 -05:00
iamdoubz c7899e72a2 fix(build): use Ninja generator so cmake-rs stops clobbering MSVC /O2
The cmake crate strips -O*/O* from CFLAGS and, with no explicit generator
on MSVC, overwrites CMAKE_C_FLAGS_RELEASE — so the previous CFLAGS=/O2
attempt could never work (verified: /DNDEBUG survived, /O2 stripped).
With CMAKE_GENERATOR=Ninja the override branch is skipped and CMake's
default Release flags (/O2 /Ob2 /DNDEBUG) reach ggml.
2026-07-16 08:20:07 -05:00
iamdoubz 4e6c5a357e docs(bench): qualitative real-recording pass — P1 cleanest + best punctuation, W4 worst 2026-07-16 08:18:00 -05:00
iamdoubz 181af150e5 test(bench): qualitative meeting-audio pass — W2/W4/P1 on bank_deposits.wav
62 s real recording (48 kHz stereo, downmixed/resampled by the production
reader). Reference .txt is a placeholder; WER column is meaningless here,
only the hypothesis text counts.
2026-07-16 08:16:53 -05:00
iamdoubz d89b99db6c fix(build): restore /O2 /DNDEBUG for native deps clobbered by cmake-rs on MSVC
cmake-rs hardcodes opt_level(0) and replaces CMake's Release C flags, so
ggml/whisper.cpp compiled at /Od — root cause of the W1 CPU-pathology
(RTF ~20) in docs/benchmarks/2026-07-parakeet-vs-whisper.md. cc-rs appends
env CFLAGS/CXXFLAGS last, restoring optimization for all native deps.
2026-07-16 08:14:08 -05:00
iamdoubz 32e0d3c8d9 test(bench): raw benchmark CSVs (30-utterance LibriSpeech matrix + W1 non-vulkan rerun) 2026-07-16 00:42:26 -05:00
iamdoubz 21691d3756 docs(bench): parakeet-vs-whisper results — pre-registered criteria evaluated, per-rung recommendation 2026-07-16 00:42:25 -05:00
iamdoubz ca0563039d test(bench): p2-parakeet-dml contender (Parakeet on the iGPU via DirectML EP) 2026-07-15 23:14:47 -05:00
iamdoubz a682ffccdd test(bench): bench-directml feature for DirectML sherpa binaries (P2, never default) 2026-07-15 23:14:42 -05:00
iamdoubz 68632db6ef fix(bench): named Set-Content params — positional+NoNewline silently wrote nothing on PS 5.1 2026-07-15 21:45:46 -05:00
iamdoubz 297c412488 test(bench): sequential matrix runner (6 corpus + 3 live runs) 2026-07-15 21:42:28 -05:00
iamdoubz ad4495f220 test(bench): asr_bench harness — W1-W4 + Parakeet contenders, WER/RTF/CPU-seconds, live-window mode 2026-07-15 21:40:44 -05:00
iamdoubz 4dddcdfe1a test(bench): typeperf CPU/GPU/NPU counter capture script 2026-07-15 21:35:43 -05:00
iamdoubz 965f1adc86 test(bench): parakeet-tdt-0.6b-v2 int8 staging script 2026-07-15 21:35:42 -05:00
iamdoubz 96072a2f75 test(bench): corpus staging script + gitignore for bench-corpus (parakeet bake-off) 2026-07-15 21:35:41 -05:00
iamdoubz 8c8e476cb7 Ignore memory file 2026-07-15 21:16:46 -05:00
iamdoubz 22810df4c1 Delete MEMORY.md 2026-07-15 21:15:06 -05:00
iamdoubz 87fb665e9e Merge pull request 'Feature chore bug 010' (#25) from feature_chore_bug_010 into main
Reviewed-on: #25
v0.7.3
2026-07-15 20:42:24 -05:00
iamdoubz 470fe6a7e7 docs(readme): refresh to v0.7.3 — NPU+iGPU split, live 'You' diarization, mic mute, tray, background import, AI-enhance, libpst button; drop stale 'signed installer' claim 2026-07-15 20:39:29 -05:00
iamdoubz 403d652c6d style: cargo fmt sweep (reflow-only; verified rustfmt(HEAD) == worktree per file) 2026-07-15 20:36:48 -05:00
iamdoubz e8a6ddca71 docs(release): v0.7.3 release notes with SHA-256 checksums 2026-07-15 20:35:12 -05:00
iamdoubz c9643cd79b feat(calendar): libpst (readpst) download button in Settings, matching the Import dialog's tool buttons (FR-CAL-1, ADR-0008) 2026-07-15 20:28:19 -05:00
iamdoubz 29bb636cb5 feat(i18n): Settings calendar 'requires readpst' string 2026-07-15 20:28:18 -05:00
iamdoubz 89bd7c3b7e chore: bump version 0.7.3 2026-07-15 20:14:30 -05:00
iamdoubz 4a3f8de679 docs(adr): 0004 update — NPU path is OpenVINO; decoder split to iGPU with KV cache 2026-07-15 19:48:16 -05:00
iamdoubz 7f7de48ecc feat(npu): engine log names the decoder EP alongside the encoder EP 2026-07-15 19:48:15 -05:00
iamdoubz 402ffe4586 feat(npu): KV-cache greedy decode + decoder on the OpenVINO GPU EP (T3.4)
Merged-decoder (use_cache_branch/past_key_values) loop discovered from the
graph at load; step 1 runs the no-cache branch over the prompt, later steps
feed one token + cached KVs (decoder slots refreshed, encoder cross-attn KVs
kept from step 1). Decoder session lands on the Intel iGPU via the OpenVINO
GPU plugin (same staged runtime) with CPU-EP fallback and a
WA_ONNX_DECODER_DEVICE=cpu|gpu override; DirectML backends keep the CPU
decoder. Legacy decoder_model.onnx is removed once the merged graph loads.

Measured (Core Ultra 5 135U, base.en, 19s TTS clip, identical transcripts):
decoder on OpenVINO/GPU infer=1288ms vs CPU-EP infer=6098ms
2026-07-15 19:48:14 -05:00
iamdoubz 177f1f7d90 feat(npu): catalog the merged Whisper decoder (decoder_model_merged.onnx) for KV-cache decode (T3.4) 2026-07-15 19:35:16 -05:00
iamdoubz 21f3d76ed0 Merge pull request 'Feature chore bug 009' (#24) from feature_chore_bug_009 into main
Reviewed-on: #24
v0.7.2
2026-07-15 18:13:11 -05:00
iamdoubz 19bd5815c0 chore: bump version 0.7.2 2026-07-15 18:09:07 -05:00
iamdoubz a552ddb1fa fix(ui): action items as two-row cards so the action text is always readable in the narrow pane
Text row (confirm + full-width text + delete) over a wrapping meta row
(owner, due date, reminder). Also void the seekNonce dependency read to
satisfy no-unused-expressions.
2026-07-15 17:41:38 -05:00
iamdoubz de25ac70e7 fix(notes): adopt server-side notes.md changes (speaker rename, reprocess) into the open editor buffer
Also untangles the a11y svelte-ignore comment from its prose so eslint's
no-unused-svelte-ignore stops parsing the explanation as ignore codes.
2026-07-15 17:41:37 -05:00
iamdoubz 28d9b2988a fix(spk): live split attribution + honest model reporting + notes rename rewrite (FR-SPK, T3.4)
- live diarization tick on split recordings now uses attribute_split (mic
  channel = 'You' from the first pass) instead of whole-mix clustering +
  voiceprint matching, which never reliably surfaced 'You' before stop
- attribute_split assigns via diarization::assign_split (channel-total
  overlap) so the user's speech can't be swallowed by a longer far-side span
- stop_recording overlays live user renames over the automatic name map
- rename_speaker/map_speaker_to_participant rewrite notes.md's baked-in
  **Name:** dialogue tags so the Notes pane follows the Speakers pane
- model_used records the ONNX model when the NPU/DirectML engine is routed
  (was reporting the unused ggml model id) + info log naming the encoder EP
2026-07-15 17:41:28 -05:00
iamdoubz f24adc3a59 fix(diarization): channel-total split attribution so mic speech can't be swallowed by a far span (FR-SPK) 2026-07-15 17:33:40 -05:00
iamdoubz 94425d456c docs(release): v0.7.1 release notes with SHA-256 checksums 2026-07-15 14:44:01 -05:00