dimhold.by
← Артыкулы

Просты класіфікатар назваў клавішу па гуку 99 разоў са 100. Навучаны на цішыні паміж націскамі, ён усё роўна назваў яе 39 разоў

Лік, які сядзіць у мяне ў галаве пра гук клавіятуры, гэта 95%. У 2023 годзе Харысан, Тарэіні і Мехрнежад паклалі iPhone побач з MacBook Pro і навучылі нейрасетку на гуку клавіш. Яна адгадала 95% націскаў і 93% на запісе Zoom, зробленым праз мікрафон самога ноўтбука. У 2025 годзе Спата з суаўтарамі атрымалі 98,3% на тых жа даных MacBook, потым запісалі механічную клавіятуру і паведамілі пра 99% на ёй. У мяне ёсць невялікі інструмент earshot, ён слухае мікрафон і ператварае гаворку ў тэкст. Той жа мікрафон чуе кожную клавішу, якую я націскаю. Пра 95% я чытаў некалькі разоў і ні разу не спытаў, на чым менавіта гэта мералі. Абодва датасэты адкрытыя пад ліцэнзіяй MIT, таму гэтым разам я іх спампаваў і паглядзеў.

Абстаноўка

Абодва наборы ўладкаваныя аднолькава. 36 клавіш, лічбы і літары. Кожная клавіша запісаная ў асобны файл WAV, у ім 25 націскаў запар прыкладна раз на секунду. У Харысана 2 запісы аднаго і таго ж MacBook. Адзін зроблены тэлефонам, які ляжаў на сурвэтцы з мікрафібры, другі праз Zoom на 32 кГц з шумапрыглушэннем на мінімуме. Набор KAD ад Спаты гэта механічная клавіятура і смартфон за 17 см ад яе, плюс 10 пароляў, набраных клавіша за клавішай, кожны сваім запісам.

Я хацеў паглядзець, на што здольная простая мадэль, таму без глыбокай сеткі. Python 3.12, numpy 2.5.3, scipy 1.18.1, scikit-learn 1.9.0 на 4 ядрах. Кожны націск выразаецца па парогу энергіі, які падладжваецца, пакуль у файле не знойдзецца роўна 25 націскаў. Потым 330 мс гуку ператвараюцца ў лагарыфмічную мел-спектраграму з 64 паласамі і на яе глядзіць лагістычная рэгрэсія. Выпадковае адгадванне пры 36 клавішах дае 2,8%.

Для праверкі я дзяліў націскі па іх месцы ў файле: націскі з 0 па 4 у адным блоку, з 5 па 9 у наступным і гэтак далей. Выпадковае разбіццё адправіла б у навучанне суседзяў па часе для большасці тэставых націскаў. Тут сусед у навучанні ёсць толькі ў націскаў на краі блока.

Выйшла 92,4% на MacBook праз тэлефон, 84,6% праз Zoom і 99,3% на механічнай клавіятуры. Лінейная мадэль без аўгментацыі была не далей чым за 3 пункты ад сеткі Харысана на запісе з тэлефона. На механічнай клавіятуры яна зраўнялася з 99% у Спаты. Гэтага я не чакаў. На Zoom яна адстала на 8 пунктаў. На запісе з тэлефона Спата з суаўтарамі атрымалі 98,3%, на 6 пунктаў больш за мяне. У артыкулах даныя дзялілі інакш, так што параўнанне грубае.

Дзе я перастаў верыць

Потым я яшчэ раз паглядзеў, як уладкаваныя файлы, і мяне гэта насцярожыла. Кожная клавіша жыве ў сваім запісе. Дапусцім, тэлефон крыху зрушыўся паміж запісам a і запісам b. Тады класіфікатар можа вывучыць файл замест клавішы. Праверка вышэй гэтага не заўважыць, бо тэставыя націскі бяруцца з тых жа файлаў.

Таму я навучыў тую ж мадэль на цішыні. Ад кожнага націску я ўзяў 200 мс, якія пачынаюцца праз 400 мс пасля яго. Гук там ужо на 24–36 дБ цішэйшы за націск. І спытаў, якой клавішы належыць гэты кавалак цішыні. На MacBook праз тэлефон цішыня назвала клавішу ў 29,4% выпадкаў, праз Zoom у 16,1%, на механічнай клавіятуры ў 39,4%. Гэта ў 6–14 разоў больш за выпадковае адгадванне.

Аднаго толькі запісу, без самога націску, хапае, каб назваць клавішу. Класіфікатар на націсках, магчыма, таксама гэтым карыстаецца. Наколькі, па гэтых файлах я сказаць не магу.

доля націскаў, дзе клавіша названа правільна MacBook Pro iPhone побач націск 92,4% толькі цішыня 29,4% MacBook Pro запіс Zoom націск 84,6% толькі цішыня 16,1% механічная тэлефон за 17 см націск 99,3% толькі цішыня 39,4% паролі 77% наўздагад 2,8%
Цішыня гэта 200 мс, якія пачынаюцца праз 400 мс пасля націску, калі гук націску амаль заціх. Кожная клавіша ў гэтых датасэтах ляжыць сваім файлам, таму цішыня, хутчэй за ўсё, называе клавішу праз запіс. Паролі гэта 100 націскаў унутры 10 слоў, праверка, дзе файл дапамагчы не можа.

Паролі KAD гэта праверка, у якой файл дапамагчы не можа. Там клавішы ідуць адна за адной унутры аднаго запісу. Я навучыў мадэль на ўсіх 900 націсках з файлаў клавіш і праверыў на 100 націсках унутры 10 пароляў. Колькі сімвалаў у кожным паролі, я загадзя паведаміў праграме, якая выразае націскі. Правільнымі аказаліся 77 са 100. У 93 са 100 правільная клавіша была ў першай пяцёрцы. Цалкам адгадаўся 1 пароль з 10, baseball47. Горш за ўсіх выйшаў position90, пачуты як ppsvtnpk00.

паролі KAD: што набрана і што пачута набрана пачута правільна у пяцёрцы b a s e b a l l 4 7 b a s e b a l l 4 7 10/10 10/10 c u l t u r a l 1 2 c u l t u r a l 1 0 9/10 10/10 f r a g r a n t 3 4 f r a l r a n t 3 4 9/10 10/10 f r i e n d l y 5 6 f z k e n d l y 5 6 8/10 9/10 g r a t e f u l 1 0 l z n z e f u l 1 0 6/10 9/10 h a r d s h i p 3 8 h a r d s h i l 3 7 8/10 10/10 i d e o l o g y 7 8 i d e l k p g y 7 3 6/10 7/10 n o m i n a t e 2 9 n o m i n a t e x 9 9/10 10/10 p o s i t i o n 9 0 p p s v t n p k 0 0 4/10 9/10 s u p p r e s s 5 6 s u p n r e s x 5 6 8/10 9/10 77/100 93/100
Навучанне на 900 націсках з файлаў клавіш, праверка на паролях. Вылучаныя сімвалы адгаданыя няправільна.

З 23 няправільных здагадак 10 трапілі на фізічнага суседа правільнай клавішы. Для выпадковай пары клавіш на гэтай раскладцы гэта 13%. Са слоўнікам гэта карысны спіс кандыдатаў, але паролю з лічбамі ў канцы ўсё роўна трэба 10 правільных здагадак запар.

Спата з суаўтарамі правялі такую ж праверку, на 8 паролях, запісаных пазней на той жа клавіятуры. Іх сетка атрымала ў сярэднім 89,1%. Іх пароляў у адкрытым наборы няма, таму наўпрост параўнаць я не магу, але гэта на 12 пунктаў вышэй за мае 77. У артыкуле Харысана такой праверкі няма.

Дзе ламаецца

Іншы запіс той жа клавіятуры. Я навучыў мадэль на запісе з тэлефона і праверыў на запісе Zoom, той жа MacBook і той жа чалавек за клавіятурай. Выйшла 6,3%. Адваротны кірунак даў 4,9%. Я думаў, што прычына ў рознай паласе частот: Zoom на 32 кГц супраць 44,1 кГц у тэлефона. Таму я пакінуў толькі мел-паласы ніжэй за 8 кГц і адняў ад кожнага запісу яго сярэдні лагарыфмічны мел-спектр у ролі грубага эквалайзера. Лепшае, што з гэтага выйшла, гэта 12%, у 4 разы вышэй за выпадковае адгадванне. Мяняюцца тут адразу тры рэчы: іншы мікрафон, іншы сеанс запісу і апрацоўка Zoom. Раздзяліць іх я не магу. 92% і 85% на першым графіку гэта 2 асобныя мадэлі, кожная навучаная на сваім запісе.

Шум. Тут я спачатку памыліўся. Я дадаў белы шум на 30 дБ ніжэй за націск і мадэль MacBook упала да выпадковага адгадвання. Я нейкі час шукаў памылку ў кодзе шуму, перш чым параўнаў узроўні па палосах. Большая частка гуку пакоя ў запісе тэлефона прыпадае на ніжнія паласы. Вышэй за 1,1 кГц там так ціха, што нават шум на 60 дБ ніжэй за націск гучнейшы за пакой. Так у 47 палосах з 64. Калі апошнія 5 націскаў кожнага файла адкладзеныя на праверку, у мадэлі было 88% на чыстых націсках, 43% пры 60 дБ і 5,6% пры 50 дБ. Мая здагадка ў тым, што яна абапіраецца на гэтыя амаль бязгучныя верхнія паласы.

Тады я дадаў той жа шум таго ж узроўню ў навучальныя націскі. Мадэль MacBook трымае 86% пры 60 дБ, 61% пры 30 дБ і 26% пры 0 дБ, дзе шум такі ж гучны, як сам націск. Механічная клавіятура застаецца на 97% нават пры 0 дБ. Кожная з гэтых мадэляў ведала ўзровень шуму загадзя.

белы шум, дададзены да тэставых націскаў 0% 25% 50% 75% 100% без шуму 60 50 40 30 20 10 0 дБ, наколькі шум цішэйшы за націск MacBook, навучаны з шумам MacBook, навучаны без шуму механічная, навучана з шумам механічная, навучана без шуму
Праверка на апошніх 5 націсках кожнага файла клавішы, навучанне на першых 20. Узровень шуму адлічаны ад магутнасці першых 100 мс кожнага націску. Пункцірная лінія гэта выпадковае адгадванне, 2,8%.

Навучальныя даныя. Усё гэта патрабуе размечаных націскаў менавіта гэтай клавіятуры менавіта ў гэтым месцы. На тых жа адкладзеных націсках 1 размечаны націск на клавішу даў мадэлі MacBook 11%, 5 націскаў 41%, 20 націскаў 88%. Механічнай клавіятуры трэба менш: 50% з 1 націску і 89% з 5. Нехта мусіць спачатку націснуць кожную клавішу пад запіс або таму, хто атакуе, давядзецца размеціць націскі іншым спосабам. Працы, дзе гэта робяць без разметкі, выкарыстоўваюць моўную мадэль. Гэта асобная задача і я яе не паўтараў.

Чаго я не правяраў

Я не запісваў сваю клавіятуру. Замер ішоў на серверы без мікрафона, так што ўсё вышэй гэта 2 адкрытыя датасэты і 3 запісы. У наборы Харысана друкаваў адзін чалавек, пра KAD не сказана. Я не спрабаваў глыбокія сеткі з артыкулаў, так што перанос паміж запісамі з імі можа выйсці лепшым. Я не спрабаваў друкаваць у звычайным тэмпе, дзе націскі накладваюцца, бо маёй нарэзцы трэба 200 мс паміж націскамі. На запісе MacBook у акне цішыні гук яшчэ згасае, так што частка з гэтых 29% можа прыпадаць на гук самой клавішы. Праверка на паролях ад гэтага не залежыць. Кожны лік тут атрыманы за 1 прагон. Мае мадэлі дэтэрмінаваныя, а генератар шуму запускаецца з фіксаваным зернем.

Для мяне вынік вузейшы за загаловак. Гук клавішы сапраўды выдае клавішу. На праверцы паролямі мая лінейная мадэль атрымала 77 са 100, а сетка Спаты 89,1% на сваіх. Але ў абодвух выпадках гэта тая ж клавіятура, той жа пакой і той жа мікрафон, што і пры навучанні. З маёй мадэллю іншы запіс таго ж MacBook апускае вынік да 5 або 6%. Якая частка з 95% на MacBook прыйшла з файла, па гэтым датасэце я сказаць не магу.