Highlights
Multi-GPU machines now prefer the discrete GPU over the integrated one, fixing wrong-device picks when an external monitor drives the iGPU.
GPU out-of-memory during a long transcription now falls back to CPU per slice instead of failing the whole request, and allocation errors name the actual backend.
Opus audio now decodes fully in-process (WhatsApp/WeChat/Telegram voice notes, .opus and Opus-in-WebM), alongside native WebM/Vorbis and ALAC decode; unsupported or corrupt files report the detected codec instead of a generic error.
FireRedASR2 is faster: the decoder runtime stays resident across requests (~2s saved per request), per-token compute buffers are pooled, and redundant tensor copies were removed; long-audio VAD slices now reuse the decoder runtime for FireRed-AED and Cohere.
daemon.log is now self-sufficient for support: system snapshot, request context, and failure context lines.
Model refs with quant aliases (e.g. :q4) resolve consistently across CLI and server.
Groundwork for the MOSS-Transcribe-Diarize family and published release audit forms for FireRedASR2 LLM, FireRed-AED, and MOSS.
What's Changed
- feat(moss): MOSS-Transcribe-Diarize family (transcription + diarization + timestamps) by @QuintinShaw in #157
- fix(core): stop permanently caching a failed GPU probe as no-GPU by @QuintinShaw in #160
- fix(firered-aed): enforce the PE capacity limit and name the real backend in OOM errors by @QuintinShaw in #161
- docs(release): call out the CLI nature of core releases and point to the desktop app by @QuintinShaw in #162
- fix(native): retry a single longform slice on CPU after a GPU allocation failure by @QuintinShaw in #163
- fix(core): prefer the discrete GPU on hybrid-graphics hosts by @QuintinShaw in #164
- feat(tooling): add firered2-llm reference activation dumper by @QuintinShaw in #167
- perf(firered-llm): cache the resident decoder runtime across requests by @QuintinShaw in #168
- feat(core): add host system, request, and failure context to daemon.log by @QuintinShaw in #166
- fix(server): normalize quant aliases for native model matching by @QuintinShaw in #171
- fix(audio): enable mkv/alac decode and name unsupported codecs by @QuintinShaw in #169
- perf(ggml): reuse CPU decode step buffer instead of realloc per token by @QuintinShaw in #172
- docs(model-audits): firered2-llm release audit form and template hardening by @QuintinShaw in #165
- chore(publish): graduate firered2-llm out of the pre-audit exemption set by @QuintinShaw in #173
- perf(audio): decode non-WAV input straight to memory, skip the temp-WAV round trip by @QuintinShaw in #175
- test(firered-aed): add committed longform and fbank golden regressions by @QuintinShaw in #176
- test(firered-aed): re-pin v2 encoder parity against the real checkpoint by @QuintinShaw in #177
- perf(decode): allocate firered-aed/cohere decoder cross-KV once per chunk cap by @QuintinShaw in #178
- fix(moss): accept the reuse path's empty layer-KV contract so Metal decode reuses its graph by @QuintinShaw in #180
- fix(moss): enforce the ExceptMetal auto-gpu policy and add encoder layer taps by @QuintinShaw in #181
- test(moss): make the encoder parity harness's Metal leg actually reach Metal (#182) by @QuintinShaw in #182
- feat(audio): decode Opus in-process via bundled libopus by @QuintinShaw in #183
- docs(release): source B2 sync credentials from ~/.openasr/b2-release.env (#184) by @QuintinShaw in #184
- docs(moss): add moss-transcribe-diarize model release audit form by @QuintinShaw in #179
- perf(firered-aed): drop four statically-proven-redundant cont copies by @QuintinShaw in #185
- docs(model-audits): firered-aed release audit form by @QuintinShaw in #174
Full Changelog: v0.1.22...v0.1.23
Note
This release is the OpenASR engine and command-line tool. Looking for
the desktop app (dictation, live captions, GUI)? Download it from
openasr.org/download or the
desktop-vX.Y.Z releases.
Install & Verify
Download the archive for your platform from the assets below, extract it,
and run the openasr binary directly (no installer).
- Linux arm64 (musl):
openasr-0.1.23-linux-arm64-musl.tar.gz - Linux arm64:
openasr-0.1.23-linux-arm64.tar.gz - Linux x86_64 (CUDA):
openasr-0.1.23-linux-x86_64-cuda.tar.gz - Linux x86_64 (musl):
openasr-0.1.23-linux-x86_64-musl.tar.gz - Linux x86_64 (AMD ROCm):
openasr-0.1.23-linux-x86_64-rocm.tar.gz - Linux x86_64 (Vulkan):
openasr-0.1.23-linux-x86_64-vulkan.tar.gz - Linux x86_64:
openasr-0.1.23-linux-x86_64.tar.gz - macOS arm64 (Apple Silicon):
openasr-0.1.23-macos-arm64.tar.gz - macOS x86_64 (Intel):
openasr-0.1.23-macos-x86_64.tar.gz - Windows arm64:
openasr-0.1.23-windows-arm64.zip - windows-x86_64-cuda-sidecar:
openasr-0.1.23-windows-x86_64-cuda-sidecar.zip - windows-x86_64-rocm-sidecar:
openasr-0.1.23-windows-x86_64-rocm-sidecar.zip - Windows x86_64 (Vulkan):
openasr-0.1.23-windows-x86_64-vulkan.zip - Windows x86_64:
openasr-0.1.23-windows-x86_64.zip - xcframework:
openasr-0.1.23-xcframework.zip
Verify
Every archive is listed in SHA256SUMS, published alongside them on this
release:
curl -LO https://github.com/QuintinShaw/openasr/releases/download/v0.1.23/SHA256SUMS
curl -LO https://github.com/QuintinShaw/openasr/releases/download/v0.1.23/<the archive you downloaded>
sha256sum -c SHA256SUMS --ignore-missing