Skip to content

Open Voice Input Linux v0.1.0-alpha.3

Pre-release
Pre-release

Choose a tag to compare

@SidUParis SidUParis released this 30 Aug 11:40
· 10 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.1.0-alpha.3
d656f79

Open Voice Input Linux alpha.3 makes microphone selection user-configurable
and dynamic while retaining bounded adaptive corrections and default-off local
dataset collection.

Highlights

  • The native settings window now lets the user order four microphone
    categories: DJI, headset, other external, and built-in. The recommended
    default is DJI > headset > other external > built-in, but the complete
    order can be changed and saved privately.
  • Every new dictation reloads the saved policy and re-enumerates available
    inputs. Unavailable or unresolved categories fall through in saved order.
    Within one category, an exact saved source is preferred, followed by the
    current system default in that category and then a unique candidate.
    Ambiguous categories are skipped instead of guessed.
  • DJI routing now respects the saved position. A proven-online transmitter
    makes its receiver eligible, a proven-offline receiver is excluded, and an
    unknown link state is not promoted ahead of known-working alternatives. An
    already-default unique DJI source may remain only as a last-resort continuity
    path when no verified non-DJI or recoverable input exists.
  • Conservative recovery of a hidden built-in input participates at the
    built-in category's saved rank. Failed recovery is rolled back safely before
    considering a lower-priority source. USB/external cards are never recovered
    merely because inconsistent metadata labels them internal.
  • Routing remains application-scoped. The daemon binds only its newly opened
    capture stream and does not request a playback-sink, desktop-wide
    default-source, mute, volume, or mid-utterance route change.
  • A missing microphone policy uses the documented recommended default without
    writing a file. An existing malformed, unsafe, or unsupported policy rejects
    the next dictation with microphone-policy-invalid before preedit
    acquisition, provider construction, USB probing, profile mutation, or
    microphone capture.
  • GTK settings, private configuration, installer, upgrade, uninstall, service
    units, documentation, bundle verification, and SBOM coverage were updated
    for the new policy.

Optional local dataset collection

  • Collection remains off by default. The user must explicitly select an
    existing absolute local or mounted folder and enable it.
  • An accepted authoritative final can publish the exact 16 kHz mono signed
    16-bit WAV together with a versioned JSON record.
  • provider_final remains teacher-unreviewed: it is a pseudo-label, not
    ground truth. spoken_verbatim and preferred_output remain null and
    unreviewed until a separate human-review workflow exists.
  • This release does not transfer records to Orange, upload an additional cloud
    dataset, encrypt the dataset at the application layer, provide review/delete
    UI, or train, fine-tune, or distil a model.
  • Storage is best-effort direct to the selected folder and has no fallback
    spool. It never silently switches to another local or cloud destination.
  • Normal service shutdown gives the background writer a bounded 10-second
    drain within systemd's 30-second stop budget. A stalled or unavailable mount
    can lose an unpublished staged record; already published records remain.
  • Collection failures are reported independently and do not stop normal
    dictation. Uninstall retains the private collection setting and datasets in
    user-selected folders.

Important alpha limitations

  • The source is fixed after a recording stream opens. Disconnecting or changing
    microphone state does not hand an active utterance to another device; the
    next dictation re-evaluates the saved order.
  • Bluetooth A2DP playback alone does not expose a microphone. This release can
    use an already-active HSP/HFP input but does not switch the headset's global
    Bluetooth profile or reduce playback quality automatically.
  • Classification relies on PulseAudio/PipeWire metadata. An unlabelled device
    may be classified as other external, and an ambiguous category may be
    skipped. Exact same-category source preferences exist in the private schema
    but are not yet exposed in the settings UI.
  • Fake-device tests cover the policy and recovery branches, but the complete
    physical matrix remains an explicit alpha validation gap: built-in only;
    headset plus built-in; DJI plus headset plus built-in; unavailable
    higher-priority inputs; disconnect/reconnect; hidden-profile recovery; and
    representative real-provider/application testing. A real mounted collection
    destination is also outside the completed release matrix.
  • Automated and offline-artifact verification used no microphone, provider key,
    user recording, dictated text, or selected dataset path.
  • Adaptive correction still requires trustworthy IBus surrounding-text
    support. Unsupported, private, unfocused, ambiguous, insertion-only, and
    deletion-only cases learn nothing; this alpha has no settings switch for the
    adaptive observation window.
  • This preview targets Ubuntu 24.04 x86_64 with CPython 3.12. It is not a
    distribution-native or broadly qualified Wayland release.
  • The companion Doubao Murmur right-Alt controller remains a separate
    controller-only project and release.
  • Uninstall retains private key, vocabulary, manual-correction,
    adaptive-memory, microphone-policy, collection-setting, and external dataset
    files.

Audio is uploaded to Volcengine only during explicit dictation and is billed
under the user's account. Local collection is independently opt-in and does
not add another network upload.

Integrity and provenance

  • Source commit: d656f7986a2c0f0149955688b238640338afeef0
  • Signed annotated tag: v0.1.0-alpha.3 — GitHub verification: valid
  • CI run: https://github.com/SidUParis/openVoiceInput_linux/actions/runs/33308965643
  • CI artifact ID: 9731381351
  • CI artifact ZIP SHA256: dec5d37c3f539183fcc53c050530e62ccb1a9ffb194605f7e55953770ab71407
  • Archive SHA256: 0ba904b72a5edb3dc749b33d98dff932c4c216476e70314f6caeaedcebc0f060
  • Checksum-file SHA256: 418e4bf582610abf91a561f5d5769a31513ba05c71e5fe80856e26323ef5a591
  • CycloneDX SBOM serial: urn:uuid:f79211cb-8895-5de1-ad1b-82db002abda7
  • Repository immutable-release policy: enabled; publication is gated on
    post-publish immutable=true verification.

See CHANGELOG.md, README.md, docs/README.zh-CN.md,
docs/personal-asr-data-plan.md, and docs/release-process.md for
installation, routing, privacy, dataset semantics, and troubleshooting.