Known issues
Status: 15 Oct 2026, for 0.1.0-beta.1. Kept by hand from the research notes in docs/research, the model guide (docs/04-model-guide.md), the evaluation notes in docs/eval and the changelog. Each row says where the problem sits (upstream in the runtime, in a model, by design, or Diarist's own), what the app does about it today, and what a fix waits on. Rows link to the upstream issue where one exists. Something missing here: open an issue.
The runtime (NeMo-Speech.cpp 0.2.0)
| Issue | Affects | Status | What Diarist does meanwhile | Waiting on |
|---|---|---|---|---|
Plain transcribe --diarize tags the wrong speaker on the first minutes of a long file. On a 21-minute AMI meeting about 63 percent of words carried the right speaker; with --stream --endpointing 99.6 percent. |
The runtime's plain file path, not the one Diarist uses | Upstream, open: NVIDIA/NeMo-Speech.cpp#67, filed by the author on 15 Oct 2026 | Every file job runs through the streaming path (--stream --endpointing), which is not affected |
A fix upstream. The issue is re-checked before each runtime upgrade |
The WebSocket commit message never returns a completion for utterances of about a second or more. |
Live recording, if the app relied on commit to flush the last words |
Upstream, open: NVIDIA/NeMo-Speech.cpp#49 | Diarist does not depend on commit: endpointing is on, so finals arrive per utterance, and the post-pass after Stop produces the stored transcript |
A fix upstream |
| Streaming wedges after sustained all-zero audio. | Live recording while the system audio is exactly silent | Upstream, open: NVIDIA/NeMo-Speech.cpp#48 | Frames that are exactly zero get 1-LSB dither before they reach the engine, so the engine never sees sustained digital silence | A fix upstream |
| Word confidence is always 1.0. | Every transcript | Upstream, open: NVIDIA/NeMo-Speech.cpp#55 | The UI cannot flag uncertain words yet, and nothing is shown that pretends otherwise | The runtime exposing confidence or token probabilities |
| Speaker labels are never revised over the WebSocket or the C ABI. The revision path the runtime's own command-line tool uses is not exposed to other programs. | Labels in the live view | Upstream limitation; by design in Diarist until it changes | Live labels are provisional. The post-pass after Stop produces the stored transcript, and the names you gave people during the meeting carry over | An upstream API for label revisions |
| Model paths of 260 characters or more fail with "model does not exist". The runtime's model layout nests the publisher, the repository and a 40-character revision under the data folder, so a deep data folder reaches the limit. | Imports and live recording with a deep data folder | Upstream limitation, handled | Diarist passes long paths in Windows' extended-length form (the \\?\ prefix) |
Nothing. Listed so it is not investigated twice |
The models
| Issue | Affects | Status | What Diarist does meanwhile | Waiting on |
|---|---|---|---|---|
| Parakeet TDT 0.6B v3 silently drops spans of speech: a 46-second span and two 10-second spans from a 77-minute recording, with no error. A 2-minute cut around the gap lost the same span, so no chunk size is safe. The same model drops a span in another runtime (transcribe.cpp#71). | Parakeet only | Model-side, measured | Parakeet is experimental and off by default, behind a setting meant for short clips you check yourself. The Nemotron models dropped nothing on the same file | A fixed model. A dual-pass mode that fills Parakeet's gaps from Nemotron is noted in the model guide as possible, not scheduled |
| The Nemotron models punctuate little: 0.2 percent of words with the EN model, 2.5 percent with Nemotron 3.5. | Every transcript with the default models | Model behaviour, measured | Lines are split at pauses and speaker changes | Punctuation restoration as a CPU post-step, on the roadmap |
| At most eight speakers per recording. A ninth person is merged into an existing label, and in a two-hour recording of two meetings the second meeting's speakers were merged into labels from the first. | Recordings with more than eight people; long recordings that span several meetings | Model limit (Nemotron 3 Diarization has eight labels per stream); by design meanwhile | Nothing automatic. Split a recording that holds several meetings before importing it; use merge, reassign and split to fix lines | A diarizer with more labels |
The offline full-attention diarization preset scores worse than streaming (DER 43 against 24 on the test clip) and is limited to about 6.6 minutes. |
Nobody in Diarist | Measured; not used | Diarist uses the streaming preset for live recording and for files | Nothing. Listed so nobody switches to it |
| Heavy overlap, far-field microphones and noisy rooms degrade both the words and the speaker labels. On the far-field AMI meeting cpWER was 19.8, against 5.1 to 10.3 on the author's Zoom meetings. | In-room recordings; people talking over each other | Model limit, measured; the model card lists these as hard cases | Nothing. The evaluation harness reports how much on real recordings | Better models |
| Nemotron 3.5 drops about 40 percent of filler words ("um", "uh"), and its automatic language detection loses about a second of the first utterance. | Nemotron 3.5 users | Model behaviour, measured | The EN model is the default for English. Set the meeting's language in Settings when you know it | Nothing; by design |
| Word times from the Nemotron models run about 0.3 s late, up to 0.7 s, measured against Parakeet on the same audio, and the last word can end after the audio does. | Word highlighting during playback; SRT and VTT exports | Model behaviour, measured | Not corrected in 0.1.0-beta.1 | The fusion work on the roadmap |
Windows and the installer
| Issue | Affects | Status | What Diarist does meanwhile | Waiting on |
|---|---|---|---|---|
| The installer is not code-signed, so Windows SmartScreen asks before it runs ("More info", then "Run anyway"). | Every install | Diarist's own; signing planned | The installer's SHA-256 is in the release notes, so you can check the file before running it | A code-signing certificate |
| The NVIDIA runtime is not signed either. Windows Smart App Control, when it is on, may block it. | PCs with Smart App Control on | Upstream: NVIDIA ships the binaries unsigned | The runtime is downloaded as NVIDIA ships it, checked against its published SHA-256, and not modified | NVIDIA signing the runtime, or Diarist being signed |
| The Vulkan and CPU runtime packages are untested. | AMD and Intel GPUs, NVIDIA cards with an older driver, PCs without a usable GPU | Diarist's own gap. The packages are shipped by NVIDIA; file mode is expected to work on Vulkan, live recording is untested, and the CPU package will be much slower than real time. Upstream #48 also reports an abort on Vulkan | The setup screen preselects the package for your GPU and lets you change it | Test reports from such machines |
| The updater has not delivered an update yet: 0.1.0-beta.1 is the first release, so the update path is configured and signed but not tested end to end. | Updating | Diarist's own | Check for updates is manual. The installer for a new version can always be downloaded from the releases page | The next release |
Diarist itself
| Issue | Affects | Status | What Diarist does meanwhile | Waiting on |
|---|---|---|---|---|
| Recording without headphones: the other participants come out of your speakers and into your microphone, so "me" can pick up the far end. | Live recording without headphones | Diarist's own; echo handling planned (operating-system echo cancellation on Windows 11 22H2 or newer, the app's own echo gate on older builds) | Use headphones | The echo work on the roadmap |
| Within a second of a speaker change, 7 to 9 percent of words go to the wrong speaker (0.2 to 0.6 percent overall), measured on the author's Zoom meetings. | Lines at speaker changes | Diarist's own, measured. The runtime's word tags are used as they come, with no smoothing yet | Move a line to the right person, or split it | Speaker-change handling, on the roadmap |
| The same person is not recognised across meetings. Every recording starts with fresh labels. | Everyone | Not built yet | Rename the speaker in each meeting | Speaker identity across meetings, on the roadmap |
| A file import does not run while a recording is in progress; it is queued until Stop. | Importing during a recording | By design: both jobs need the GPU memory budget | The job starts when the recording stops | Nothing |
| The accuracy numbers rest on Zoom cue-level references, not hand-labelled ones, and the evaluation notes call the verdicts provisional. | The published measurements | Measurement caveat | AMI ES2002a, with its word-level reference, is the one hand-labelled check | Hand-corrected references for a few meetings |
| Nothing outside the development machine (Windows 11, RTX 3080 10 GB) has been tested. | Every other PC | Beta | Diagnostics has a "Why isn't it working?" checklist with a fix per row, and Copy diagnostics for a bug report | Reports from other machines |