applescript 无法直接控制麦克风硬件开关,但可通过 switchaudiosource 切换输入设备、coreaudio-cli 静音/取消静音、或模拟快捷键实现自动化;需配置辅助功能权限,推荐使用 coreaudio-cli 或 switchaudiosource 等命令行工具。

AppleScript 本身无法直接控制 macOS 的麦克风硬件开关(比如物理禁用或系统级静音),但可以通过调用系统命令、修改音频设备设置或触发辅助功能来实现“自动化控制麦克风输入”的常见目标:静音/取消静音内置麦克风、切换输入设备、或配合快捷键模拟操作。
获取并切换麦克风输入设备
macOS 允许通过 system_profiler 和 defaults 命令查询和设置默认音频输入设备,AppleScript 可以 shell 脚本方式调用:
- 用
system_profiler SPAudioDataType列出所有可用输入设备及其 ID(如 “Built-in Microphone” 或 “USB Audio Device”) - 用
defaults write修改com.apple.sound.uisoundeffectplayer并不生效;正确方式是调用SwitchAudioSource工具(需提前安装)或使用 AppleScript + Objective-C 桥接(较复杂) - 更实用的做法:安装开源工具 SwitchAudioSource,然后在 AppleScript 中执行:
do shell script "/usr/local/bin/SwitchAudioSource -t input -s 'Built-in Microphone'"
静音/取消静音麦克风输入(系统偏好设置级)
macOS 没有公开 API 直接控制麦克风静音状态,但可通过以下可靠方式间接实现:
使用 inotes CLI 从终端管理 Apple Notes。当需要在 macOS 的 Notes.app 中列出、读取、创建、编辑、删除或搜索备忘录时使用。
- 启用“语音控制”后,用 AppleScript 发送快捷键
Command + Shift + A(需开启相应辅助功能权限) - 更稳定的方式:使用
osascript模拟点击“声音”偏好设置中的麦克风滑块 —— 但 UI 自动化易受系统版本影响 - 推荐方案:调用
defaults写入音频偏好(部分有效),或结合coreaudio工具(如 coreaudio-cli):do shell script "/usr/local/bin/coreaudio input mute toggle"
检查当前麦克风状态并条件执行
自动化脚本常需“先判断再操作”。可借助 shell 命令获取当前输入设备是否静音:
- 用
coreaudio-cli input info输出 JSON,解析"muted": true/false - 若未安装 coreaudio-cli,可用 AppleScript 尝试读取系统日志或监听音频活动(不精确)
- 示例逻辑:
set isMuted to (do shell script "coreaudio input info | grep -q '\"muted\": true' && echo 'yes' || echo 'no'")
if isMuted is "yes" then do shell script "coreaudio input mute off"
注意事项与权限配置
这类脚本首次运行通常会失败,因涉及隐私和辅助功能限制:
- 必须在“系统设置 > 隐私与安全性 > 辅助功能”中手动添加 Script Editor 或生成的 app
- 若调用 UI 操作(如点击声音设置),还需开启“自动化”权限
- macOS Ventura 及更新版本对音频设备控制更严格,建议优先使用
coreaudio-cli或SwitchAudioSource等经测试的命令行工具 - AppleScript 不适合高频轮询(如实时检测说话),应搭配触发器(如快捷键、定时器或外部事件)










