""" DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar 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")