Initial commit
This commit is contained in:
commit
18002eec9c
5 changed files with 106 additions and 0 deletions
14
LICENSE
Normal file
14
LICENSE
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
|
3
README.md
Normal file
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
This is a really dumb program that detects whenever you talk or make noise and makes the volume go up to 100%
|
||||||
|
|
||||||
|
*my ears are totally fine*
|
83
main.py
Normal file
83
main.py
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
"""
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import numpy as np
|
||||||
|
import sounddevice as sd
|
||||||
|
from subprocess import call, DEVNULL
|
||||||
|
import time
|
||||||
|
if os.name == 'posix':
|
||||||
|
import alsaaudio
|
||||||
|
elif os.name == 'nt':
|
||||||
|
from ctypes import cast, POINTER
|
||||||
|
from comtypes import CLSCTX_ALL
|
||||||
|
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
|
||||||
|
import math
|
||||||
|
# See why I hate Windows?
|
||||||
|
|
||||||
|
|
||||||
|
def get_avg():
|
||||||
|
duration = 3 # seconds
|
||||||
|
|
||||||
|
avgvolumes = []
|
||||||
|
def print_sound(indata, outdata, frames, time, status):
|
||||||
|
volume_norm = np.linalg.norm(indata)*10
|
||||||
|
avgvolumes.append(int(volume_norm))
|
||||||
|
# print(int(volume_norm))
|
||||||
|
|
||||||
|
with sd.Stream(callback=print_sound):
|
||||||
|
sd.sleep(duration * 1000)
|
||||||
|
|
||||||
|
totalvol = 0
|
||||||
|
for vol in avgvolumes:
|
||||||
|
totalvol = totalvol + vol
|
||||||
|
avgvol = totalvol / len(avgvolumes)
|
||||||
|
avgvol = round(avgvol, ndigits=2)
|
||||||
|
return avgvol
|
||||||
|
|
||||||
|
print('Calibrating... Please shut up and don\'t talk.')
|
||||||
|
avgvol = get_avg()
|
||||||
|
print(f'Average silent volume is {avgvol}')
|
||||||
|
|
||||||
|
if os.name == 'posix':
|
||||||
|
m = alsaaudio.Mixer()
|
||||||
|
elif os.name == 'nt':
|
||||||
|
devices = AudioUtilities.GetSpeakers()
|
||||||
|
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
|
||||||
|
volume = cast(interface, POINTER(IAudioEndpointVolume))
|
||||||
|
|
||||||
|
while True:
|
||||||
|
thing = get_avg()
|
||||||
|
if thing - avgvol > 1.5:
|
||||||
|
print("you spoke, volume go up")
|
||||||
|
bruh = time.time() + 5
|
||||||
|
if os.name == 'posix':
|
||||||
|
oldvol = int(m.getvolume()[0])
|
||||||
|
elif os.name == 'nt':
|
||||||
|
oldvol = volume.GetMasterVolumeLevel()
|
||||||
|
while True:
|
||||||
|
if os.name == 'posix':
|
||||||
|
call(["amixer", "-D", "pulse", "sset", "Master", "100%", "on"], stdout=DEVNULL)
|
||||||
|
elif os.name == 'nt':
|
||||||
|
volume.SetMasterVolumeLevel(0, None)
|
||||||
|
if time.time() > bruh:
|
||||||
|
break
|
||||||
|
if os.name == 'posix':
|
||||||
|
call(["amixer", "-D", "pulse", "sset", "Master", f"{oldvol}%", "on"], stdout=DEVNULL)
|
||||||
|
elif os.name == 'nt':
|
||||||
|
volume.SetMasterVolumeLevel(oldvol, None)
|
||||||
|
else:
|
||||||
|
print("you passed the vibe check")
|
3
ntReqs.txt
Normal file
3
ntReqs.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
numpy
|
||||||
|
sounddevice
|
||||||
|
pycaw
|
3
posixReqs.txt
Normal file
3
posixReqs.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
numpy
|
||||||
|
sounddevice
|
||||||
|
pyalsaaudio
|
Loading…
Reference in a new issue