Интерком кончается там, где группа растянулась
Bluetooth-интерком связывает мотоциклистов друг с другом и работает, пока между ними несколько сотен метров, не больше. Отстали на перекрёстке — и разговора нет. MumbleWay переносит разговор в интернет: все заходят в один канал Mumble через мобильную связь, и неважно, едет следующий в ста метрах впереди или в другой стране.
Это не универсальное приложение для звонков, которому пририсовали мотоцикл на иконке. Весь тракт обработки звука исходит из того, что микрофон — в сантиметре ото рта, внутри шлема, на скорости, а фоном идут ветер и мотор.
Мобильный интернет, а не радиоканал между шлемами.
48 кГц и упреждающая коррекция ошибок, которая растёт по мере ухудшения связи.
Любой сервер Mumble. Ни учётной записи, ни каталога, ни компании посередине.
Что он делает с шумом
Речь в шлеме на скорости — трудный сигнал. Тракт сделан именно под него, и за работой каждой ступени можно наблюдать.
- Нейросетевой очиститель речи в начале тракта. DeepFilterNet 3 — на самом телефоне и в те же 10 мс, что отведены блоку. Это самый мощный рычаг из здешних: на дороге он разводит речь и паузы примерно на 16 дБ там, где вся остальной тракт даёт 1,5. Поэтому его первым ослабляют и последним отключают, когда устройству перестаёт хватать запаса.
- Подавление шума ветра и мотора, настроенное под шлем. Есть профили помягче — для стоянки и для помещения, — и автоматический режим, который выбирает между ними по тому, что слышит.
- Эхоподавление, которое само измеряет задержку. Динамик в шлеме стоит в сантиметрах от микрофона, и звук возвращается почти сразу; телефон на громкой связи возвращает его после всего, что стоит между приложением и динамиком, — это другая задача, и раньше она не решалась. Теперь эхоподавитель сначала находит, где эхо на самом деле, и только потом его убирает.
- Голосовая активация, которая не отстаёт от звука. Порог срабатывает уже посреди слога, и к моменту, когда открылась передача, звук, который её открыл, давно прошёл. Поэтому задерживают звук, а не решение: передача открывается на том, что привело к срабатыванию, и слово, начинающееся на «с», «ф» или «ш», сохраняет первый согласный — «сорок» доезжает как «сорок», а не как «орок». На трёх реальных поездках упреждение в 160 мс покрыло 94% открытий против 90% при 80 мс.
- А потом задержку возвращают. Постоянно нести упреждение — значит платить задержкой в каждой передаче ради первой десятой доли секунды одной из них. Поэтому фраза открывается с упреждением в 240 мс, а долг выплачивается на скорости 1,1× — периоды основного тона удаляются целиком, так что меняется длительность, а не высота, — пока задержка не осядет до 200 мс. Не до нуля: небольшой запас гасит опоздавший блок вместо того, чтобы превращать его в провал звука.
- После того как вы замолчали, передача держится целую секунду и затухает за последние 30 мс — чтобы не срезало конечные «т» или «с» и чтобы обрыв не щёлкал. Секунда перекрывает паузы внутри фразы: именно из-за них фраза доезжала до собеседника четырьмя обрывками.
- Подавление гула обратной связи, устранение шипения, автоматическое выравнивание уровня и лимитер.
- Эластичный буфер джиттера: то, что накопилось за время потери связи, он проигрывает до двух раз быстрее, удаляя периоды основного тона, — иначе после тоннеля все отстали бы на секунду.
Когда телефон не справляется
Блок звука приходит каждые 10 миллисекунд, и весь тракт должен успеть отработать до прихода следующего. На современном телефоне запас есть, на устаревшем или бюджетном — нет, и делать вид, что это не так, бессмысленно.
Поэтому устройство измеряется по этому сроку при запуске, ещё до первого разговора, и за ним следят дальше, пока вы говорите. Если тракт не укладывается, ступени отключаются по одной — в порядке, который был измерен, а не придуман, и никогда молча.
Тогда же очиститель речи замеряют и отдельно: он единственный настолько велик, что способен решить всё сам по себе. Телефону, у которого одна только модель занимает 4 мс из десяти, негде разместить семь ступеней после неё — что бы ни показывала общая сумма на устройстве, которое пока не в разговоре. Поэтому он сразу берёт модель подешевле, а не спускается через одиннадцать других ступеней, чтобы спустя разговор оказаться там же.
Первым жертвуют тем, что дешевле всего обходится по качеству. Очиститель речи сначала дважды слабеет — это две самые крупные экономии на всём тракте, и стоят они почти ничего: на голосе поверх музыки первая из них измерилась даже лучше полного режима. Дальше перестаёт выплачиваться упреждение — ни один отсчёт от этого не меняется, растёт только задержка, возвращаясь к прежней. Дальше вдвое укорачивается фильтр эхоподавителя: громкий прямой путь остаётся, теряется примерно 10 мс хвоста за ним. Дальше три детектора, работу которых во многом дублирует измерение уровня. Дальше отрисовка самой панели диагностики: её не жалко, через неё ничей голос не проходит. Дальше остальная «живость» панели — движущиеся индикаторы и полоски собеседников — по той же причине. Дальше более дешёвая и более агрессивная модель шумоочистки. Полное отключение очистителя — тринадцатое и последнее, что будет сделано, потому что именно он превращает 1,5 дБ разницы между речью и паузами в 16.
Ниже лестницы остаётся ещё одно. Если всё, что выше, уже отключено, а блоки всё равно опаздывают, тракт смотрит, на что на самом деле уходит время. Подавление эха — единственная ступень, стоимость которой задаёт не ваш телефон, а собеседник: пока на той стороне молчат, она почти ничего не делает. Поэтому на редком устройстве, где блоки не укладываются именно из-за неё, её фильтр укорачивают ещё раз, шагами, пока он не покроет только прямой путь — самый громкий — и ничего сверх того. Совсем её не выключают: на громкой связи это самовозбуждение, а защита, которая его бы поймала, отключена одиннадцатью ступенями раньше.
Обратно в течение сеанса тракт не поднимается. Устройство, которое опоздало однажды, опоздает и снова, а тракт, включающий и выключающий ступени вслед за нагрузкой, звучал бы хуже любого из двух состояний. Перезапуск приложения пробует весь тракт заново.
И вам об этом говорят. Отключённые ступени в панели диагностики зачёркнуты, значок на панели инструментов превращается в жёлтое предупреждение — чтобы вы узнали, не идя специально смотреть, — а сама панель словами объясняет, что именно отключено и чего это стоит.
Что стоит иметь в виду: измеряется устройство таким, каким оно попалось, а не таким, каким могло бы быть. Компьютер, занятый в момент запуска чем-то ещё, может начать на ступень ниже, чем он же на холостом ходу.
Смотрите, как всё работает
Большинство голосовых приложений не показывают ничего. Человек жалуется, что его обрезало, — и выяснить, на какой ступени это произошло, просто нечем.
В MumbleWay есть панель диагностики с живым анализатором спектра: сразу три кривые — микрофон, сигнал после шумоподавления и то, что реально уходит в эфир, — и по индикатору на каждую ступень тракта. Полезнее всего тот момент, когда кривая передачи ложится в ноль, а две другие нет.
Ещё он умеет записывать то, что услышал микрофон, вместе с тем, что тракт об этом решил, блок за блоком. Тогда запись, на которой пропал звук, можно разобрать, а не гадать. Появилось это не от хорошей жизни: однажды целый круг измерений пришлось выбросить, когда выяснилось, что записи сделаны встроенным микрофоном телефона, а не гарнитурой. По самому звуку не понять, чем он записан, — а запись изнутри приложения берёт то, что получил сам тракт.
На компьютере то же самое выглядит как окно из двух панелей: слева ваши серверы, справа канал и те, кто в нём.
Достоинства
Дальность не ограничивает
Тех, кого развела пробка, перекрёсток или граница, разговор по-прежнему держит вместе. Интеркому это не под силу ни за какие деньги.
Ваш сервер — ваши правила
Подойдёт любой сервер Mumble — хоть поднятый дома на Raspberry Pi. Регистрироваться негде и незачем, и в публичных каталогах ваш канал не появляется.
Больше двух человек
В канал Mumble заходит столько людей, сколько разрешит сервер, — и без цепочки промежуточных звеньев, на которой держатся (и разваливаются) групповые интеркомы.
Он показывает свою работу
Живой анализатор, состояние каждой ступени и записи, где рядом со звуком лежат все принятые по нему решения.
Ничего не собирается
Ни учётных записей, ни аналитики, ни рекламы, ни телеметрии. Звук нигде не сохраняется, пока вы сами не включите запись. См. политику приватности.
Свободное ПО
GPL v3, открытый исходный код и общий документированный протокол — тот же, на котором говорят другие клиенты, а не протокол одной фирмы.
Недостатки
Стоит прочитать, прежде чем на него полагаться. Всё перечисленное — правда, и ни один пункт не лечится настройкой.
Нет связи — нет разговора
Это главная слабость. В низине, в тоннеле и в мёртвой зоне интерком работает, а это — нет. Если вы ездите в основном по глухим местам, интерком подойдёт лучше, а это будет дополнением к нему.
Он тратит трафик и батарею
Примерно 3–6 МБ на час разговора, больше — когда на плохой связи растёт коррекция ошибок. Телефон, который часами гонит голос через мобильную сеть с выключенным экраном, греется заметно сильнее обычного.
Задержка сетевая, а не как у радио
Сам тракт добавляет немного — упреждение выплачивается до 200 мс, — а вот сеть добавляет: рассчитывайте на пару сотен миллисекунд при хорошей мобильной связи и больше при плохой, тогда как у интеркома между соседними шлемами задержки почти нет. Разговаривать это не мешает, а вот перебить собеседника на полуслове выходит уже не так, как вживую.
Bluetooth ухудшает качество звука
Микрофон гарнитуры доступен только через профиль hands-free, а он моно и узкополосный. Пока идёт разговор, музыка через ту же гарнитуру звучит в телефонном качестве. Так устроен сам Bluetooth, а не это приложение: то же самое происходит при любом звонке.
Нужен сервер
Никакой службы MumbleWay, где можно было бы зарегистрироваться, не существует. Кто-то в группе должен поднять сервер Mumble или арендовать его — это осознанный выбор, и всё же шаг, которого интерком ни от кого не требует. Это занимает минут десять.
Музыка изредка может открыть передачу
Это был главный недостаток приложения, а стал сноской. Речь поверх собственной музыки проходит теперь в 98% случаев вместо 63%, а очиститель убирает 19 дБ из пауз между словами: там, где музыка была на полтора децибела тише речи, теперь она тише на шестнадцать. В поездках с тех пор музыка открывает передачу лишь изредка, и то, что проходит, уходит сильно приглушённым, а не в полный уровень.
Нулём это всё же не стало, и причину стоит знать: детектор учили отличать речь от шума, а музыка — ни то ни другое. Режим по кнопке убирает саму возможность, если нужна гарантия, а работа идёт в открытую, вместе с описанием каждой уже провалившейся попытки.
Что дальше
Настройки
Что делает каждая настройка и какие из них действительно важны в поездке.
В дороге
Что работает на практике: вдвоём, группой, с пассажиром, на слёте.
Свой сервер
Сервер Mumble на Windows, macOS или Linux примерно за десять минут.