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:
- Это «Apache 2.0 с дополнительными условиями», а не просто Apache 2.0.
Дополнительные условия там действительно есть, так что прочитайте
LICENSEпервоисточника, а не исходите из условий Apache. - Его
pitch_est.ccсодержит код под BSD-2 и BSD-3 из LPCNet.
Первоисточник: TEN-framework/ten-vad.
В начале того же README стоит опровержение этой оценки: измерения, на которых она построена, были сделаны на звуке с собственного микрофона телефона, а не с выносного микрофона гарнитуры, и два вывода из-за этого отозваны. Текст оставлен на месте и помечен, а не удалён.
Точность этой страницы
Лицензии перечислены по условиям, опубликованным самими проектами, и, насколько известно, указаны верно — но эта страница остаётся сводкой, а не юридическим документом. Достоверным является текст, поставляемый с каждым пакетом.
Косая черта выше означает «или, на ваш выбор», а не «и». Бóльшая часть
крейтов Rust здесь выходит под двойной лицензией — MIT или Apache-2.0; у
mach2 их три, добавляется BSD-2-Clause.
Нашли ошибку или пропуск? Заведите issue: неверно указанная лицензия — это дефект, и он будет исправлен.