本文目录导读:

Windows PowerShell 脚本
基础音量控制脚本
# 获取当前音量
Add-Type -TypeDefinition @"
using System.Runtime.InteropServices;
public class Audio {
[DllImport("user32.dll")]
public static extern int waveOutGetVolume(int device, out int volume);
[DllImport("user32.dll")]
public static extern int waveOutSetVolume(int device, int volume);
}
"@
# 获取当前音量
$volume = 0
[Audio]::waveOutGetVolume(0, [ref]$volume)
$currentVolume = [math]::Round(($volume -band 0xFFFF) / 65535 * 100)
Write-Host "当前音量: $currentVolume%"
# 设置音量为50%
$newVolume = [int](50 * 65535 / 100)
[Audio]::waveOutSetVolume(0, ($newVolume -or ($newVolume -shl 16)))
定时自动调节脚本
# 自动音量调整脚本 - 根据时间段调整
while ($true) {
$hour = (Get-Date).Hour
# 夜间模式 (22:00 - 7:00)
if ($hour -ge 22 -or $hour -lt 7) {
SetVolume(20) # 设置为20%
Write-Host "夜间模式:音量调整为20%"
}
# 白天模式 (8:00 - 18:00)
elseif ($hour -ge 8 -and $hour -lt 18) {
SetVolume(70) # 设置为70%
Write-Host "白天模式:音量调整为70%"
}
# 傍晚模式 (18:00 - 22:00)
else {
SetVolume(50) # 设置为50%
Write-Host "傍晚模式:音量调整为50%"
}
Start-Sleep -Seconds 3600 # 每小时检查一次
}
function SetVolume($percent) {
$volume = [int]($percent * 65535 / 100)
[Audio]::waveOutSetVolume(0, ($volume -or ($volume -shl 16)))
}
Windows 批处理脚本 (BAT)
@echo off
setlocal enabledelayedexpansion
:loop
:: 获取当前时间的小时
set hour=%time:~0,2%
if %hour% lss 10 set hour=0%hour%
:: 根据时间设置音量
if %hour% geq 22 (
nircmd setvolume 0 20000
echo 夜间模式 - 音量20%
) else if %hour% geq 8 (
nircmd setvolume 0 65535
echo 白天模式 - 音量70%
) else (
nircmd setvolume 0 32768
echo 傍晚模式 - 音量50%
)
timeout /t 3600 /nobreak
goto loop
Python 脚本 (跨平台)
import os
import time
import platform
from datetime import datetime
def set_volume_windows(percent):
"""Windows系统设置音量"""
try:
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
from comtypes import CLSCTX_ALL
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = interface.QueryInterface(IAudioEndpointVolume)
volume.SetMasterVolumeLevelScalar(percent/100, None)
return True
except:
return False
def set_volume_mac(percent):
"""Mac系统设置音量"""
os.system(f"osascript -e 'set volume output volume {percent}'")
return True
def set_volume_linux(percent):
"""Linux系统设置音量"""
os.system(f"amixer set Master {percent}%")
return True
def get_volume_auto_schedule():
"""根据时间自动调节音量"""
current_hour = datetime.now().hour
if current_hour >= 22 or current_hour < 7:
return 20 # 夜间20%
elif 8 <= current_hour < 18:
return 70 # 白天70%
else:
return 50 # 傍晚50%
def main():
# 检测操作系统
system = platform.system().lower()
# 安装依赖检查
if system == "windows":
try:
import pycaw
except ImportError:
print("请安装pycaw: pip install pycaw")
return
print("自动音量调节脚本启动...")
while True:
try:
target_volume = get_volume_auto_schedule()
if system == "windows":
set_volume_windows(target_volume)
elif system == "darwin": # macOS
set_volume_mac(target_volume)
elif system == "linux":
set_volume_linux(target_volume)
print(f"[{datetime.now().strftime('%H:%M:%S')}] 音量调整为: {target_volume}%")
# 每小时检查一次
time.sleep(3600)
except KeyboardInterrupt:
print("\n脚本已停止")
break
except Exception as e:
print(f"错误: {e}")
time.sleep(60)
if __name__ == "__main__":
main()
高级功能脚本
动态音量调节(基于环境噪音)
import pyaudio
import numpy as np
import time
import platform
class AdaptiveVolumeController:
def __init__(self):
self.CHUNK = 1024
self.FORMAT = pyaudio.paInt16
self.CHANNELS = 1
self.RATE = 44100
self.base_noise_level = 50 # 基准噪音水平
def get_noise_level(self):
"""获取环境噪音水平"""
p = pyaudio.PyAudio()
stream = p.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK)
data = np.frombuffer(stream.read(self.CHUNK), dtype=np.int16)
noise_level = np.abs(data).mean()
stream.stop_stream()
stream.close()
p.terminate()
return noise_level
def calculate_volume(self, noise_level):
"""根据噪音计算音量"""
# 如果噪音大,增加音量
if noise_level > self.base_noise_level * 2:
return min(80, 50 + (noise_level - self.base_noise_level) / 10)
# 如果环境安静,降低音量
elif noise_level < self.base_noise_level / 2:
return max(20, 50 - (self.base_noise_level - noise_level) / 10)
else:
return 50
def run(self):
print("自适应音量控制启动...")
while True:
noise_level = self.get_noise_level()
target_volume = self.calculate_volume(noise_level)
# 设置音量(根据操作系统)
if platform.system() == "windows":
# 调用Windows音量控制函数
pass
elif platform.system() == "darwin":
os.system(f"osascript -e 'set volume output volume {target_volume}'")
print(f"噪音水平: {noise_level:.2f}, 调整为: {target_volume}%")
time.sleep(10) # 每10秒检查一次
# 使用示例
if __name__ == "__main__":
controller = AdaptiveVolumeController()
controller.run()
安装和使用
Windows 系统
# 安装Python依赖 pip install pycaw pyaudio numpy # 运行脚本 python auto_volume.py
Mac/Linux 系统
# 安装依赖 pip install pyaudio numpy # 运行脚本 python auto_volume.py # Linux需要安装alsa-utils sudo apt-get install alsa-utils # Ubuntu/Debian
设置开机自启动
Windows
- 创建快捷方式到
shell:startup文件夹 - 或使用任务计划程序
Mac
# 创建plist文件 ~/Library/LaunchAgents/com.volume.auto.plist
Linux
# 添加到crontab @reboot /usr/bin/python /path/to/script.py
根据您的具体需求选择合适的脚本,如果只需要基本的定时调节功能,推荐使用PowerShell或Python版本。