AppleScript 自动化管控系统声音输出设备

作者:袖梨 2026-07-14
AppleScript 可通过模拟点击菜单栏音量图标切换声音输出设备,需启用“在菜单栏中显示音量”,设备名须完全匹配,支持 macOS Ventura 及更新系统,兼容快捷键、快捷指令与终端调用。

Mac 上用 AppleScript 切换声音输出设备,是高效、稳定且无需第三方工具的原生方案。它适合日常快速切换(比如从内置扬声器切到 AirPods),也适用于自动化脚本或快捷键绑定场景。

直接切换输出设备的 AppleScript 写法

AppleScript 本身不直接暴露“切换输出设备”接口,但可通过调用系统服务 `com.apple.controlcenter` 或操作菜单栏音量项实现。最可靠的方式是模拟点击菜单栏音量图标并选择目标设备:
-- 示例:切换到名为 "AirPods Max" 的输出设备tell application "System Events"    tell process "ControlCenter"        click menu bar item 1 of menu bar 1        delay 0.2        click menu item "AirPods Max" of menu 1 of menu bar item 1 of menu bar 1    end tellend tell

⚠️ 注意事项:

  • 需确保菜单栏中已启用“在菜单栏中显示音量”(系统设置 > 声音 > 勾选该选项)
  • 设备名称必须完全匹配(区分大小写、空格、标点),可在菜单栏音量弹出菜单中确认
  • 脚本依赖 ControlCenter 进程,macOS Ventura 及更新版本(Sonoma、Sequoia)均支持

配合快捷键一键执行

将上述脚本保存为 `.scpt` 文件后,可通过以下方式触发:- 使用“快捷指令”App:新建快捷指令 → 添加“运行 AppleScript”操作 → 选择脚本文件 → 设置快捷键(如 ⌘⌥A)- 使用 Keyboard Maestro 或 Hammerspoon:绑定全局热键,直接运行脚本- 终端命令调用(适合远程或脚本集成): ```bash osascript /path/to/switch_to_airpods.scpt ```

检查当前输出设备并条件执行

若需先判断当前设备再决定是否切换,可结合 `system_profiler` 或 `defaults` 提取当前音频设备 ID,但更实用的是用 AppleScript 获取菜单栏显示的当前设备名(需配合 UI 元素读取):
-- 获取当前选中的输出设备名称(从菜单栏音量图标 tooltip 推断)tell application "System Events"    set volumeMenu to menu bar item 1 of menu bar 1 of process "ControlCenter"    set currentName to value of attribute "AXDescription" of volumeMenuend tell-- currentName 通常形如 "输出:内置扬声器" 或 "输出:AirPods"

替代方案:用 shell + AppleScript 组合控制

如果菜单栏方式不稳定(例如远程 SSH 环境无图形会话),可改用 `audiodevice` 工具(需额外安装)或通过 `defaults` + `coreaudiod` 重启间接影响,但这些**不改变当前路由设备**,仅调节音量或重启服务。真正切换设备仍需 UI 层操作。

AppleScript 控制输出设备的核心优势在于它走的是系统标准 UI 路径,与用户手动点击行为一致,兼容性好、反馈直观。只要设备已连接并被系统识别,脚本就能生效。

相关文章

精彩推荐