Licences

MumbleWay's own licence, and every third-party component it is built from.

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 usedAutomatic 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:

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.