Skip to content

Feel free to look through the big changes before merging it into your repo. - #126

Open
Techlm77 wants to merge 9 commits into
abb128:mainfrom
Techlm77:main
Open

Techlm77 wants to merge 9 commits into
abb128:mainfrom
Techlm77:main

Conversation

@Techlm77

Copy link
Copy Markdown

No description provided.

Techlm77 and others added 9 commits October 9, 2026 08:33
Silence unused parameters, drop an unused audio thread function, use
size_t-correct comparisons and format specifiers, avoid casting pointers
to GQuark directly, and handle APRIL_RESULT_UNKNOWN in the result switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- AdwPreferencesWindow -> AdwPreferencesDialog, presented without a
  parent so it still opens as its own window rather than inside the
  small captions window. AdwAboutWindow -> AdwAboutDialog.
- GtkMessageDialog and AdwMessageDialog -> AdwAlertDialog.
- GtkFileChooserNative -> GtkFileDialog for loading models and exporting
  history.
- gtk_show_uri -> GtkUriLauncher / GtkFileLauncher.
- gtk_css_provider_load_from_data -> load_from_string, and add the
  window's provider for the display instead of via GtkStyleContext.
- G_APPLICATION_FLAGS_NONE -> G_APPLICATION_DEFAULT_FLAGS.

GTK deprecated its X11 backend without replacements for the
gdk_x11_* accessors used to keep the window above others, so those
warnings are silenced around that one function only.

Requires GTK 4.12 and libadwaita 1.5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Time with the monotonic clock and stop early once the result can no
  longer reach MINIMUM_BENCHMARK_RESULT, instead of after a fixed 55 s.
- Run one untimed warm-up second so one-off initialization does not
  count against the result, and flush at the end so buffered audio is
  included.
- Feed 100 ms chunks so the progress bar moves smoothly, and fill it on
  completion.
- Pass progress and the result to the main thread by value instead of
  through volatile fields shared between threads.
- Keep the window alive while the benchmark thread runs, and stop and
  join the thread when the window goes away; closing the window
  mid-benchmark could previously crash.
- Report a failing result instead of asserting when no model is loaded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Point the submodule at april-asr with fixes for worker wakeups, flush
handling, feature extraction and model validation (see the april-asr
commit for details). Captions now finalize after 1.2 s of silence
instead of 2.2 s.

Switch the session to APRIL_CONFIG_FLAG_ASYNC_NO_RT_BIT so audio is no
longer time-compressed when the CPU falls behind, which degraded
accuracy.

Enable C++ in the Meson project because april-asr's CMake project now
builds its C++ examples with C++17.

On 80 LibriSpeech test-clean/test-other clips (1,601 words) with the
English model, word errors went from 215 to 201.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Update april-asr. Async flushes are now ordered with the audio queue,
  so the flush issued from the capture callback during silence keeps its
  boundary even when recognition is behind, without blocking capture to
  wait. Flush on source change before the new capture thread starts, so
  the session keeps a single feeder.
- Raise the minimum benchmark result from 0.6x to 1.2x real time, and
  the "good" result from 1.1x to 1.5x. Sessions use ASYNC_NO_RT, which
  never speeds audio up, so a machine below 1.0x accumulates backlog
  until audio is dropped. Reword the marginal result to describe delay
  and skipped audio rather than reduced accuracy.
- Drive the slow warnings from aas_get_backlog_ms() instead of
  aas_realtime_get_speedup(), which is always 1.0 in ASYNC_NO_RT mode.
  Show them at 0.5 s, 1.2 s and 2 s of unprocessed audio, and stop the
  periodic check from hiding the warning raised by a dropped-audio
  callback.
- Lock nixpkgs to nixos-unstable e7439b6 (libadwaita 1.9.3, GTK 4.22.4);
  the previous revision had libadwaita 1.3.4, below the required 1.5.
  Update the flake for current nixpkgs (pkg-config, wrapGAppsHook4,
  explicit gtk4 and libx11), include the april-asr submodule and stop
  the cmake hook from taking over meson's configure phase. Verified with
  nix build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2c62bxoLVYNxKqd1tPV8R
- Update april-asr: 2 encoder threads by default, a downloaded ONNX
  Runtime SDK now takes precedence over a system copy, and its path is
  recorded in the binary so no LD_LIBRARY_PATH is needed. Previously a
  distro ONNX Runtime was linked while LD_LIBRARY_PATH loaded the
  downloaded one, failing with "version `VERS_1.29.0' not found".
- setup.sh initializes the submodule if needed, uses the system ONNX
  Runtime or downloads the SDK when there is none, configures builddir
  from scratch so the choice is never mixed with a cached one, builds,
  and downloads the model.
- run.sh runs the build without installing it, setting the schema
  directory and model path.
- Fix the meson devenv schema path, which pointed at builddir/data/data.
- Rewrite the README build section around the two scripts, with
  dependency commands for Arch, Ubuntu/Debian and Fedora.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2c62bxoLVYNxKqd1tPV8R
git pull does not update submodules, so rerunning setup.sh after a pull
kept building the previous april-asr.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2c62bxoLVYNxKqd1tPV8R
- Build on the stable GNOME 50 runtime instead of master, and bundle
  ONNX Runtime 1.30.0 (was 1.14.1), the version April is tested with.
  It lives in /app/onnxruntime and is found through the runtime path
  April now records, so nothing is copied into /app/lib.
- Build this checkout (a dir source) instead of upstream's main branch,
  skipping local build output, the downloaded SDK and the model.
- Rename the AppStream file to .metainfo.xml and install it to
  share/metainfo. Replace the deprecated developer_name with a
  developer element, add a vcs-browser URL, screenshot captions and
  direct image URLs, input and display requirements, and release notes
  for 0.5.0. It validates with appstreamcli.
- Take the app version from the meson project version, now 0.5.0; the
  About dialog said 0.4.1 while meson said 0.1.0.
- CI uses the gnome-50 flathub-infra image and flatpak-builder@v6 to
  match the manifest, and uploads the bundle.
- Update april-asr: C# exit hang fix and IDisposable, CI on a supported
  runner with tests.
- Document building a Flatpak in the README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2c62bxoLVYNxKqd1tPV8R
- Point the april-asr submodule and the README clone command back at
  abb128's repositories, as upstream had them, so the history can be
  merged as-is. GitHub serves fork commits through the upstream URL, so
  recursive clones keep working before april-asr is merged.
- The dropped-audio callback runs on April's worker thread but changed
  GTK widgets directly. Hand it to the main loop with g_idle_add.
- Update april-asr with the review fixes: ASYNC_RT speed kept across
  flushes, affinity-aware thread default, C# disposal fixes, docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2c62bxoLVYNxKqd1tPV8R
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants