Kaip padaryti, kad mašina tam tikrą laiką turėtų tuščią ekraną (kaip nuobaudą), jei pasiekiamas tam tikras triukšmo lygis?

Mano vaikai (4 ir 5 m.) dažnai rėkia žaisdami žaidimus kompiuteriu. Radau veiksmingą vaistą nuo to. Kai išgirstu garsų triukšmą, prisijungiu prie žaidimo kompiuterio ir darau:

chvt 3;  sleep 15;  chvt 7 

Tai išjungia ekraną 15 sekundžių "Linux" sistemoje. Pasakiau, kad kompiuteris nemėgsta garsių garsų. Jie visiškai tuo tiki ir maldauja kompiuterio atleidimo. Jie tapo daug tylesni, bet ne tiek, kad būčiau patenkintas, todėl turiu tęsti šį mokymo procesą. Tačiau ne visada esu šalia, kad galėčiau tai daryti rankiniu būdu.

Ar įmanoma tai automatizuoti? Prie dėžutės pritvirtintas mikrofonas. Jei garsumo lygis peržengia tam tikrą ribą, noriu paleisti komandą.

Patikrinkite ["Kaip aptikti garso/garso buvimą", Thomer M. Gil] (http://thomer.com/howtos/detect_sound.html).

Iš esmės jis įrašo garsą kas 5 sekundes, tada, naudodamas sox, patikrina garso amplitudę ir nusprendžia, ar paleisti scenarijų, ar ne. Manau, kad ruby skriptą nesunkiai galite pritaikyti savo vaikams! Arba galite įsilaužti į Python scenarijų (naudodami PyAudio), kurį jis taip pat pateikė.

Komentarai (1)

Informaciją iš mikrofono galite gauti atlikdami šiuos veiksmus:

arecord -d1 /dev/null -vvv

Gali tekti šiek tiek pažaisti su nustatymais, pvz:

arecord -d1 -Dhw:0 -c2 -fS16_LE /dev/null -vvv

Toliau jau tereikės analizuoti išvestį.

Komentarai (0)

Mano 2 centai dėl C arba C++ sprendimo: galbūt tai nėra pats veiksmingiausias būdas, bet "Linux" sistemoje galite naudoti ALSA API (integruotą "Linux" garso apdorojimo biblioteką) ir naudoti tam tikrą skaitmeninį metodą (pvz., apskaičiuoti vidutinį garso lygį kiekvieną sekundę) triukšmo lygiui nustatyti.

Tada galite jį tikrinti begaliniame cikle, ir jei jis didesnis už nustatytą ribą, galite pasinaudoti X11 biblioteka, kad kelioms sekundėms išjungtumėte ekraną, arba alternatyviai (ne taip elegantiškai, bet veikia) iškviesti chvt komandą, naudodami system("chvt 3; sleep 15; chvt 7 ");.

Komentarai (1)