Skip to content

DeepFist drops most of the text on off-air CW: activity gate closed on 66–72 % of ticks (two W1AW bulletins) #5950

Description

@skerker

Report preparation

  • I used the AI-assisted bug report tool (Help → Support → File an Issue)
  • I have attached a support bundle or log file

What happened?

The DeepFist receive backend (#5716, default off) publishes 41.7 % / 35.5 % of the text of two recorded off-air W1AW bulletins (ARLD038 / ARLP038). Replayed with the app's Parameters (src/models/DeepFistCwModel.cpp:32-34) and scored against the published text, beside ggmorse and the DeepCW streaming committer on the same audio with the same scorer:

Decoder ARLD038 CER ARLP038 CER
DeepFist 62.6 % 65.9 %
ggmorse, app defaults / narrowed to the signal 49.7 / 41.7 % 36.1 / 33.5 %
DeepCW streaming commit (K5PTB#1) 9.5 % 7.3 %

The activity gate (src/core/deepfist/DeepFistStream.cpp:92, threshold 12) is closed on 66.2 % / 72.1 % of the 0.4 s ticks, on audio that is near-continuous CW. On ARLD038, 1667 of the 2960 gated ticks score 9–12.

The figures measure the backend as a whole — model, window, activity gate and committer — not the model in isolation. This is the "transcribed off-air recordings" evaluation named in #4817.

One Parameters field changed at a time (app Parameters otherwise):

Change ARLD038 ARLP038 Ticks gated
activityThreshold 15 84.3 % 82.7 % 87 % / 87 %
activityThreshold 9 29.5 % 40.1 % 29 % / 47 %
activityThreshold 6 15.0 % 20.6 % 3 % / 11 %
activityThreshold 3 13.9 % 20.5 % 0 % / 0 %
guardSeconds 2.0 / 3.0 61.4 / 61.4 % 63.9 / 63.4 % unchanged
carryPending off 64.3 % 66.9 % unchanged
decode window 3–15 s (compile-time) 61.6–64.4 % 63.4–68.5 % unchanged
input level −12 / +24 dB text byte-identical to 0 dB same —
  • requireCompletedMark off cannot be tested in the app configuration: Parameters::valid() requires it while normalizeActivity is on (src/core/deepfist/DeepFistStream.cpp:14).
  • Not measured: whether a lower threshold emits characters on an empty frequency. Both recordings are near-continuous CW.
  • The stream's speed estimate (clamped 5–60 WPM, third_party/deepfist/DeepFistConditioner.cpp:198) sits at 60 WPM on 86.6 % (ARLD038) / 55.7 % (ARLP038) of ticks; below the ceiling it reads mostly 19–20 WPM. W1AW sends bulletins at 18 WPM. The stream uses the estimate only to choose the slow guard, and src/core/deepfist/DeepFistStream.cpp:64 notes it is not a calibrated UI reading.

For all three decoders this bears on the same choice: which parameters to expose in the GUI, and which defaults give good copy out of the box. A shared replay harness across the three decoders would make comparisons like this repeatable.

Related: #5716 (DeepFist backend) · #4817 (CW decoder backends RFC; maintainer decision) · #5758 (decoder input routing) · K5PTB#1 (DeepCW streaming commit, same audio)

What did you expect?

Copy of the bulletin comparable to the other receive backends on the same audio.

Steps to reproduce

  1. Check out main 2859fdef (the DeepFist, ggmorse, resampler and CW-model sources are unchanged through 43df9732).
  2. Get the model from the N9BC release exp27_bt-champion (hashes equal the manifest in src/core/deepfist/DeepFistModelAssets.cpp) and the four audio zips attached to DeepCW: keep word spaces in the panels; sliding-window decode with time-anchored commit K5PTB/AetherSDR#1.
  3. Run the attached bundle's run.sh <checkout> <modelDir> <zipDir>. It applies a local replay tool (included as a patch), replays both bulletins, and scores them with score_cer.py from the DeepCW: keep word spaces in the panels; sliding-window decode with time-anchored commit K5PTB/AetherSDR#1 bundle. Texts are byte-identical to the bundled outputs (40/40).

aethersdr-issue-deepfist-cer-w1aw-2026-09-25.zip

AetherSDR version

main 2859fdef (v26.9.4 + 23), built with -DENABLE_DEEPFIST_EXPERIMENT=ON; offline replay, no app session.

Radio model & firmware

FLEX-8400, firmware 4.2.20.41 — used only to record the two bulletins (17 m, 2026-09-24, receive only).

Operating system

Linux

OS version and hardware

Ubuntu 24.04.5 LTS, Qt 6.8.3, Intel Core i9-14900HX, ONNX Runtime 1.27.0 (CPU)

— authored by agent (Claude Code) on behalf of @skerker

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    CWCW keying, decode, and operationbugSomething isn't workingmaintainer-reviewRequires maintainer review before any action is taken

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions