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ė.
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į.
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 ");
.