Лицензии

Собственная лицензия MumbleWay и каждый сторонний компонент, из которых он собран.

MumbleWay

GNU General Public License, версия 3. Полный текст — в репозитории.

Программу можно использовать, изучать, изменять и распространять. Если вы распространяете изменённую версию, она должна выходить под той же лицензией, а её исходный код — быть доступным.

С проектом Mumble не связан. MumbleWay — независимый клиент, работающий по протоколу Mumble. Название Mumble и товарные знаки принадлежат проекту Mumble, и это приложение он не одобрял и не поддерживает. О проблемах с приложением пишите сюда, а не им.

Протокол

Протокол Mumble открыто задокументирован, и здесь он реализован независимо, по этой документации. Сам Mumble распространяется под лицензией BSD 3-Clause, см. mumble.info.

Звук

То, что делает собственно работу.

Компонент Роль Лицензия
Opus Голосовой кодек, через крейты opus и audiopus_sys BSD 3-Clause
RNNoise, как nnnoiseless Нейросетевое шумоподавление и детектор речевой активности BSD 3-Clause
DeepFilterNet Очистка речи в начале тракта записи, вместе с весами модели. Низколатентная DFN3 идёт из крейта deep_filter, обычная DFN3 лежит в core/models/ — для нижней ступени лестницы производительности MIT / Apache-2.0
tract Исполняет эту модель — на чистом Rust, без нативной среды, которую пришлось бы собирать под каждую платформу. tract-core взят в third_party и изменён одним фрагментом, без которого обычная DFN3 вообще не загружается, — см. third_party/tract-core/PATCH.md MIT / Apache-2.0
ndarray Тип массива, который принимает и возвращает сам интерфейс очистителя речи MIT / Apache-2.0
cpal Кроссплатформенный доступ к аудиоустройствам. Взят в third_party и изменён одним фрагментом, чтобы поток записи на Android мог запросить телефонный входной пресет, который cpal иначе не запрашивает никогда — см. third_party/cpal/PATCH.md Apache-2.0
dasp_sample Преобразование форматов отсчётов MIT / Apache-2.0
YAMNet Классификатор звука. Больше не используется: «Автоматически» теперь выбирает профиль по измеренному отношению сигнал/шум. По-прежнему входит в поставку как assets/models/yamnet.tflite — и потому остаётся в этом списке Apache-2.0
LiteRT / TensorFlow Lite Запускает эту модель. На Android и iOS — из Maven и CocoaPods самой Google, на macOS — универсальная libtensorflowlite_c из состава tflite_flutter, на Windows — собрана из исходников TensorFlow r2.17 и лежит в app/blobs/, поскольку готовой сборки под неё никто не публикует Apache-2.0
tflite_flutter Обвязка для Dart; лежит в app/third_party с правкой в одну строку, чтобы её библиотека для macOS загружалась из Contents/Frameworks, как того требует Apple Apache-2.0

Три из них поставляются, но не работают. Классификатор звука убран из тракта: «Автоматически» теперь выбирает профиль по отношению сигнал/шум, измеренному в первую секунду речи, и никакая модель для этого не нужна. Сам YAMNet, среда LiteRT и обвязка tflite_flutter всё ещё лежат внутри пакета, потому что их изъятие затрагивает сборку на каждой платформе и проверить это может только CI, — поэтому работа отложена, а не сделана.

Именно поэтому они перечислены выше. На этой странице сказано, что входит в поставку, а не что выполняется: лицензионные обязательства следуют за копией в пакете, и убрать строку только потому, что код перестал её вызывать, значило бы преуменьшить то, что вам передают.

Всё остальное в тракте — эхоподавитель, гейт, экспандер, блок спектрального вычитания, лимитер, АРУ, защита от обратной связи, детектор основного тона и буфер джиттера — написано для этого проекта и выходит под его же GPL v3.

Rust

Компонент Роль Лицензия
tokio, tokio-rustls Асинхронная среда выполнения и транспорт TLS MIT
rustls, rustls-pemfile, webpki-roots TLS без OpenSSL Apache-2.0 / MIT / ISC
rcgen Генерация клиентского сертификата MIT / Apache-2.0
prost Protocol Buffers для управляющего канала Mumble Apache-2.0
aes, aes-gcm, cipher OCB/AES для шифрования голоса по UDP MIT / Apache-2.0
sha2, hex Отпечатки сертификатов MIT / Apache-2.0
serde, serde_json Сериализация настроек и списка серверов MIT / Apache-2.0
tracing Структурированное журналирование MIT
parking_lot Блокировки на звуковом тракте MIT / Apache-2.0
rand Одноразовые значения и джиттер MIT / Apache-2.0
sysinfo Сколько приложение тратит процессорного времени и памяти — на Windows MIT
libc То же самое на Android и Linux, где ответ берётся из /proc MIT / Apache-2.0
mach2 И на iOS и macOS, где его даёт Mach BSD-2-Clause / MIT / Apache-2.0
anyhow, thiserror Обработка ошибок MIT / Apache-2.0
bytes, url Буферы и разбор URL MIT / Apache-2.0

Flutter и Dart

Компонент Роль Лицензия
Flutter и Dart SDK Каркас приложения BSD 3-Clause
flutter_rust_bridge Мост между интерфейсом на Dart и движком на Rust MIT
shared_preferences, path_provider, share_plus, package_info_plus, file_selector, url_launcher Платформенная обвязка BSD 3-Clause
http, intl Сеть и локализация BSD 3-Clause
qr_flutter, qr Рисуют приглашения на сервер BSD 3-Clause
mobile_scanner Считывает их обратно BSD 3-Clause
image, archive Работа с изображениями и диагностический архив MIT
flutter_svg Векторная графика MIT
cupertino_icons Набор значков в стиле iOS MIT
freezed Кодогенерация MIT

Шрифты

Exo 2 Натанаэля Гамы, под лицензией SIL Open Font License 1.1. Используется и в приложении, и на этом сайте.

Этот сайт также набран шрифтами Atkinson Hyperlegible (Braille Institute, SIL OFL 1.1) и IBM Plex Mono (IBM, SIL OFL 1.1).

TEN VAD — использован в исследовании, но не поставляется

TEN VAD в приложение не входит. Он не подключён ни к одной сборке, и ни в одном выпуске его нет. Лежит он в tools/vad/ — это отдельный инструментарий, которым на записях из шлема сравнивали детекторы речи. Упомянут он здесь потому, что использовался при разработке, хотя вместе с приложением и не поставляется.

Если решите взять его оттуда, стоит знать две вещи — обе записаны в tools/vad/README.md:

Первоисточник: TEN-framework/ten-vad.

В начале того же README стоит опровержение этой оценки: измерения, на которых она построена, были сделаны на звуке с собственного микрофона телефона, а не с выносного микрофона гарнитуры, и два вывода из-за этого отозваны. Текст оставлен на месте и помечен, а не удалён.

Точность этой страницы

Лицензии перечислены по условиям, опубликованным самими проектами, и, насколько известно, указаны верно — но эта страница остаётся сводкой, а не юридическим документом. Достоверным является текст, поставляемый с каждым пакетом.

Косая черта выше означает «или, на ваш выбор», а не «и». Бóльшая часть крейтов Rust здесь выходит под двойной лицензией — MIT или Apache-2.0; у mach2 их три, добавляется BSD-2-Clause.

Нашли ошибку или пропуск? Заведите issue: неверно указанная лицензия — это дефект, и он будет исправлен.