Демонстрация звука

Как убрать щелчки клавиатуры из микрофона

Механическая клавиатура и мышь слышны собеседнику громче, чем кажется говорящему: микрофон стоит на том же столе, по которому вы стучите. Ниже — одна и та же запись до и после нейросетевой обработки 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, зайдите гостем по ссылке и включите шумоподавление в настройках звука.