MumbleWay
GNU General Public License, version 3. The full text is in the repository.
You may use, study, modify and redistribute it. If you distribute a modified version, it has to carry the same licence and its source has to be available.
Not affiliated with the Mumble project. MumbleWay is an independent client that speaks the Mumble protocol. The Mumble name and its trademarks belong to the Mumble project, and this app is neither endorsed by nor supported by them. Please report problems with this app here and not to them.
The protocol
The Mumble protocol is documented and implemented independently here from those descriptions. Mumble itself is distributed under a BSD 3-Clause licence. See mumble.info.
Audio
The parts that do the actual work.
| Component | Role | Licence |
|---|---|---|
| Opus | Voice codec, via the opus and audiopus_sys crates |
BSD 3-Clause |
RNNoise, as nnnoiseless |
Neural noise suppression and voice activity detection | BSD 3-Clause |
| DeepFilterNet | Speech enhancement at the head of the capture chain, with its weights. The low-latency DFN3 comes from the deep_filter crate; the plain DFN3 is vendored at core/models/ for the performance ladder’s last rung |
MIT / Apache-2.0 |
tract |
Runs that model, in pure Rust with no native runtime to cross-compile. tract-core is vendored under third_party and patched in one hunk, without which the plain DFN3 cannot be loaded at all — see third_party/tract-core/PATCH.md |
MIT / Apache-2.0 |
ndarray |
The array type the enhancer’s own API takes and returns | MIT / Apache-2.0 |
cpal |
Cross-platform audio device access. Vendored under third_party and patched in one hunk so an Android capture stream can ask for the telephony input preset, which cpal otherwise never requests — see third_party/cpal/PATCH.md |
Apache-2.0 |
dasp_sample |
Sample format conversion | MIT / Apache-2.0 |
| YAMNet | A sound classifier. No longer used — Automatic now picks its profile from the measured signal-to-noise ratio instead. Still shipped as assets/models/yamnet.tflite and so still listed here |
Apache-2.0 |
| LiteRT / TensorFlow Lite | Runs that model. From Google’s own Maven and CocoaPods on Android and iOS; the universal libtensorflowlite_c inside tflite_flutter on macOS; on Windows built from the TensorFlow r2.17 source and vendored at app/blobs/, because upstream publishes no binary for it |
Apache-2.0 |
tflite_flutter |
The Dart binding, vendored under app/third_party and patched in one line so its macOS library loads from Contents/Frameworks, where Apple requires it |
Apache-2.0 |
Three of those are shipped and unused. The sound classifier was removed
from the capture chain: Automatic now chooses its profile from the
signal-to-noise ratio it measures in the first second of speech, which needs no
model. YAMNet, the LiteRT runtime and the tflite_flutter binding are still
inside the package because taking them out touches every platform’s build and
nothing but CI can check it, so it is queued rather than done.
They are listed above for exactly that reason. This page says what is distributed, not what is running — a licence obligation follows the copy in the package, and removing a row because the code stopped calling it would understate what you are being given.
Everything else in the capture chain — the echo canceller, gate, expander, spectral subtractor, limiter, AGC, feedback guard, pitch tracker and jitter buffer — is written for this project and covered by its own GPL v3.
Rust
| Component | Role | Licence |
|---|---|---|
tokio, tokio-rustls |
Async runtime and TLS transport | MIT |
rustls, rustls-pemfile, webpki-roots |
TLS, without OpenSSL | Apache-2.0 / MIT / ISC |
rcgen |
Generates the client identity certificate | MIT / Apache-2.0 |
prost |
Protocol Buffers, for Mumble’s control channel | Apache-2.0 |
aes, aes-gcm, cipher |
OCB/AES for Mumble’s UDP voice encryption | MIT / Apache-2.0 |
sha2, hex |
Certificate fingerprints | MIT / Apache-2.0 |
serde, serde_json |
Settings and server list serialisation | MIT / Apache-2.0 |
tracing |
Structured logging | MIT |
parking_lot |
Locks used on the audio path | MIT / Apache-2.0 |
rand |
Nonces and jitter | MIT / Apache-2.0 |
sysinfo |
What the app is costing in processor time and memory, on Windows | MIT |
libc |
The same question on Android and Linux, where the answer comes from /proc |
MIT / Apache-2.0 |
mach2 |
And on iOS and macOS, where it comes from Mach | BSD-2-Clause / MIT / Apache-2.0 |
anyhow, thiserror |
Error handling | MIT / Apache-2.0 |
bytes, url |
Buffers and URL parsing | MIT / Apache-2.0 |
Flutter and Dart
| Component | Role | Licence |
|---|---|---|
| Flutter and the Dart SDK | Application framework | BSD 3-Clause |
flutter_rust_bridge |
The bridge between the Dart UI and the Rust engine | MIT |
shared_preferences, path_provider, share_plus, package_info_plus, file_selector, url_launcher |
Platform plumbing | BSD 3-Clause |
http, intl |
Networking and localisation | BSD 3-Clause |
qr_flutter, qr |
Renders server invitations | BSD 3-Clause |
mobile_scanner |
Scans them back | BSD 3-Clause |
image, archive |
Image handling and the diagnostic archive | MIT |
flutter_svg |
Vector artwork | MIT |
cupertino_icons |
The iOS icon set | MIT |
freezed |
Code generation | MIT |
Typeface
Exo 2 by Natanael Gama, under the SIL Open Font License 1.1. Used in the app and on this site.
This site also sets Atkinson Hyperlegible (Braille Institute, SIL OFL 1.1) and IBM Plex Mono (IBM, SIL OFL 1.1).
TEN VAD — used in research, not shipped
TEN VAD is not part of the app. It is not linked into any
build and no release contains it. It lives in
tools/vad/, the
offline tooling used to evaluate voice activity detection against recorded
helmet audio, and it is credited here because it was used in developing the
app even though it is not distributed with it.
Two things worth knowing if you pick it up from that tooling, both recorded in
tools/vad/README.md:
- It is “Apache 2.0 with additional conditions”, not plain Apache 2.0. The
additional conditions are real and you should read the upstream
LICENSErather than assume Apache terms. - Its
pitch_est.cccarries BSD-2 and BSD-3 code from LPCNet.
Upstream: TEN-framework/ten-vad.
The evaluation itself carries a retraction at the top of that README — the measurements behind it were made on audio from the phone’s own microphone rather than a headset boom microphone, and two conclusions were withdrawn as a result. It is left in place, and marked, rather than deleted.
Accuracy of this page
Licences are stated from each project’s own published terms and are believed correct, but this page is a summary and not a legal document. The authoritative text is the one distributed with each package.
A slash above means or, at your option — not “and”. Most of the Rust crates
here are dual-licensed MIT or Apache-2.0; mach2 offers three, adding
BSD-2-Clause.
Found something wrong or missing? Open an issue — a licence attribution error is a bug and will be fixed.