Механическая клавиатура и мышь слышны собеседнику громче, чем кажется говорящему: микрофон стоит на том же столе, по которому вы стучите. Ниже — одна и та же запись до и после нейросетевой обработки TarnVeil. Переключайте дорожки во время воспроизведения, разница слышна на одном и том же слове.
Двенадцать секунд: человек говорит и одновременно печатает — 54 нажатия, часть поверх слов, часть в паузах между ними. Дорожки играют синхронно, кнопка меняет только то, какую из них вы слышите.
0:00 / 0:12
Речь — студийное чтение из открытого корпуса M-AILABS (русская часть, читает hajdurova); клавиатура записана отдельно на обычный настольный микрофон. Их свели в один трек — поэтому здесь есть третья дорожка, показывающая, каким результат был бы в идеале. Насколько громко звучит клавиатура, решено не на слух: в отдельной записи, где речь и печать шли одновременно, щелчки оказались тише пика голоса на 14 дБ — этот же перепад и выставлен здесь. Обработку выполнял весь боевой тракт «Умного» целиком — подавитель ударов, а следом нейросеть, — тем же кодом и в том же порядке, что в браузере. Доверенных нажатий клавиш ему не передавали: демонстрация это запись, клавиш при её прослушивании никто не нажимает.
Что показали измерения
Цифры сняты с той самой записи, которая играет выше, и относятся только к ней: на другой клавиатуре, в другой комнате и с другим микрофоном результат будет иным.
dBFS, медиана. Для щелчков — пик остатка на каждом из 54 нажатий, для речи — пик кадра в 20 мс. Чем ниже число, тем тише звук.
Что измеряли
Без обработки
После TarnVeil
Разница
Щелчки в паузах между словами
−20,2
−73,4
тише на 53,7 дБ
Щелчки поверх речи
−20,9
−31,5
тише на 9,7 дБ
Речь там, где клавиатура молчит
−16,3
−16,9
без изменений
В строках со щелчками измерен остаток, а не громкость кадра: из обработанной дорожки вычтена та же речь, пропущенная через ту же модель, поэтому в цифру попадает только клавиатура. Иначе поверх речи мерился бы голос, который громче щелчка, и строка показывала бы ноль при любом шумодаве. Считается по каждому нажатию отдельно, а не по кадрам: у нажатия хвост длиннее атаки, и усреднение по кадрам описывает затухающий хвост вместо самого щелчка. Разброс большой и в худшую сторону: десятая часть худших нажатий в паузах теряет 21,7 дБ вместо 54, а поверх речи такие нажатия почти не тише исходных — 0,3 дБ. Щелчок поверх слова принципиально труднее: его энергия сидит на 2–8 кГц, там же, где «с», «т» и «ш», и резать эту полосу под голосом значит съедать согласные.
Как это работает
Щелчок — это не шум в привычном смысле. Он не длится, у него нет постоянного спектра, и вычитать его неоткуда.
Почему обычный шумодав пасует
Классические алгоритмы оценивают спектр шума за несколько десятых секунды и вычитают его из сигнала. Щелчок клавиши длится единицы миллисекунд и занимает почти всю полосу — оценка за ним не поспевает, а срабатывает уже после того, как щелчок прозвучал.
Кадры по 10 миллисекунд
Звук разбирается на спектр 1024 точками каждые 10 мс. Модель видит текущий кадр, предыдущий и своё внутреннее состояние, поэтому реагирует на щелчок в том же кадре, где он начался.
Маска, а не вырезание
Сеть предсказывает, какую долю каждой частотной полосы оставить. Речь и щелчок почти всегда звучат одновременно, поэтому вырезать кусок целиком нельзя — иначе вместе с клацаньем пропадёт слог.
Цена работы
Обработка одного кадра занимает около 3,9 мс при бюджете в 10 мс, в 95 % случаев — до 4,5 мс. Это замер WebAssembly-сборки, которая и работает в браузере, а не пересчёт с нативных таймингов.
Чего эта модель не делает
Щелчок, услышанный через комнату, подавляется примерно на 1,5 дБ хуже, чем та же клавиатура рядом с микрофоном, — и почему именно так, пока не выяснено. Взрывные согласные «п» и «б» модель местами подправляет и на чистой речи, без всякого шума. Производительность на телефонах не измерялась. TarnVeil находится в ранней бете, и перед важным разговором звук стоит проверить на тех устройствах, которые будут участвовать.
Частые вопросы
Почему обычное шумоподавление не убирает щелчки клавиатуры?
Классические шумодавы построены на предположении, что шум постоянный: они оценивают его спектр за несколько десятых секунды и вычитают. Щелчок клавиши длится единицы миллисекунд и занимает почти всю полосу частот, поэтому оценка шума за ним не успевает, а к моменту срабатывания щелчок уже прозвучал.
Обработка идёт на моём устройстве или на сервере?
Целиком на устройстве. Модель выполняется в браузере в отдельном рабочем потоке, звук с микрофона никуда не отправляется до того, как попадёт в сам разговор.
Насколько это нагружает компьютер?
На настольном компьютере обработка одного кадра занимает около 3,9 мс при бюджете в 10 мс, в 95 процентах случаев — до 4,5 мс. Замер сделан на той же WebAssembly-сборке, которая работает в браузере. На телефонах производительность не измерялась.
Что происходит с голосом, если клавиатура молчит?
На демонстрационной записи средний уровень речи в местах без щелчков меняется на 0,1 дБ, то есть на слух остаётся прежним. Модель обучена не трогать речь, а не просто приглушать всё подряд.
Мышь, дыхание и шум комнаты тоже убираются?
Щелчки мыши обрабатываются так же, как клавиатура: это тот же класс коротких импульсов. Дыхание подавляется сильнее всего. Постоянный шум комнаты и вентилятора убирает отдельный режим шумоподавления.
Нужно ли что-то устанавливать, чтобы попробовать?
Нет. TarnVeil открывается в браузере, шумоподавление включается в настройках звука. Приложения для Windows и Android существуют, но не обязательны.
Попробовать на своём микрофоне
Демонстрация выше — запись. Чтобы услышать обработку своего микрофона, откройте TarnVeil, зайдите гостем по ссылке и включите шумоподавление в настройках звука.