Skip to content

Complete production validation for typed Qwen3-ASR speech-to-text #325

Closed

Description

@leehack

Current status

The typed Qwen3-ASR speech-to-text API is implemented and released:

This issue now tracks production validation rather than API implementation. Live/stateful input modes are tracked in #327; Web hardware/WebGPU validation is tracked in #329.

Remaining validation

  • Linux x64 CPU real-model coverage using exact model, projector and fixture provenance.
  • Silence, malformed/truncated input, stereo/resampling behavior and audio crossing the 30-second preprocessing boundary.
  • Cancellation latency, repeated calls, cleanup, peak memory and single-task concurrency.
  • Old/missing native symbols and unsupported platform/runtime-version behavior.
  • Platform-specific model behavior and any remaining format constraints.

Upstream marker regression ggml-org/llama.cpp#26749 remains open with no linked repair. llamadart must retain transcript normalization and must not leak unexpected language/asr_text markers into final transcripts.

Acceptance gates

  • macOS arm64 and Linux x64 representative CPU runs pass with immutable model/projector/fixture checksums.
  • Silence, malformed, stereo/resampling and long-boundary inputs have explicit tested behavior.
  • Cancellation and repeated-call cleanup meet documented latency and memory bounds.
  • Version-skew and unsupported combinations fail with typed actionable errors.
  • Documentation, examples and the support matrix match the exact validated scope.
  • The upstream marker issue is either fixed in a consumed release or normalization remains covered by regression tests.

TTS is tracked by #322.

Activity

  1. changed the title [-]Add a typed SpeechToTextEngine for native Qwen3-ASR[/-] [+]Complete production validation for typed Qwen3-ASR speech-to-text[/+] on Aug 21, 2026
  2. leehack commented on Aug 21, 2026

    @leehack
    OwnerAuthor

    Implementation and remaining validation — 2026-08-21

    The typed STT API requested by this issue is now implemented and released:

    The issue remains open only for the production-validation gaps from the original acceptance list: Linux x64 real-model coverage, silence/malformed/stereo/resampling and long-boundary inputs, real cancellation/cleanup/peak-memory evidence, and any remaining platform-specific model behavior.

    Upstream marker regression ggml-org/llama.cpp#26749 is still open with no fixing PR attached, so llamadart must retain its transcript normalization and must not treat the upstream ticket as resolved merely because the public API shipped.

  3. added
    priority:P2Planned next: useful unblocked work or validation after P1 items
    enhancementNew feature or request
    on Aug 21, 2026
  4. leehack commented on Sep 24, 2026

    @leehack
    OwnerAuthor

    All six gates are met on main at a0ac411.

    1. CPU runs with checksums. validation-speech-stt rejects a model, projector or jfk.wav whose size or SHA-256 differs from the lock. With native v0.4.1-1 it passed 20/20 on macOS arm64 CPU (four runs) and on Linux x64 CPU (two runs, AMD EPYC 7B12, at 1584e7d).
    2. Edge inputs. #590 runs silence, a truncated RIFF, 44.1 kHz stereo and a 33 s input in every pack run. Each has a fixed expected outcome and gates the pass.
    3. Cancel and memory bounds. #594 added the 500 ms cancel budgets and the 1.10x memory budget, #600 stops prompt ingest between chunks, and #637 pins all four values. Worst in-flight cancel on Linux was 289.6 ms; memory growth was at most 1.055x.
    4. Typed errors. #638 throws LlamaModelException for a missing or rejected projector and LlamaUnsupportedException for a runtime without mtmd, and the no-audio reason names its cause. The remaining gaps are tracked: #640, #641, #642.
    5. Docs. #639 narrows the guide, support matrix, README and changelogs to what is validated: WAV only, at most 33 s, with long recordings tracked in #636.
    6. Upstream marker. ggml-org/llama.cpp#26749 is still open. Normalization is covered: replacing it with a plain trim fails three VM tests and one Chrome test.

    Related, outside this issue: #633 (TTS pack memory baseline), #634 and #635 (LiteRT-LM ASR, under #327).

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

    enhancementNew feature or requestpriority:P2Planned next: useful unblocked work or validation after P1 items

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions