announcer

📢 macOS 全屋智能语音广播助手

ElevenLabs TTS 结合 Airfoil,实现 macOS 全屋 AirPlay 广播,提供高质量多房间语音通知。

收藏
2.1k
安装
1k
版本
v1.2.3
CLS 安全性认证2026-06-04
点击查看完整报告 >

使用说明

核心功能与用法

Announcer 是一款专为 macOS 设计的智能家居音频自动化工具,通过整合 ElevenLabs 高质量文本转语音(TTS)服务与 Rogue Amoeba 的 Airfoil 音频重定向技术,实现全屋 AirPlay 扬声器的统一语音播报。用户可通过命令行快速触发广播,支持向全部或特定扬声器发送通知,并可选择是否播放提示音(Gong)。

使用方式极为简洁:安装并配置 Airfoil、ElevenLabs API Key 及扬声器列表后,只需执行 python3 skills/announcer/scripts/announce.py "内容" 即可触发广播。高级用法包括 --speakers 指定特定房间、--no-gong 跳过提示音等选项,适合集成至 Home Assistant 或其他自动化工作流。

显著优点

音质与兼容性:采用 ElevenLabs 业界领先的 TTS 引擎生成 Opus 格式音频,经 FFmpeg 转换为 Stereo MP3 确保 AirPlay 兼容性,输出质量远超系统自带语音合成。

多房间同步:利用 Airfoil 的 AirPlay 管理能力,可实现多扬声器毫秒级同步播放,适合大户型全屋通知场景。

安全编码实践:代码实现了 _sanitize_applescript_string() 函数,对输入字符串进行反斜杠和双引号转义,有效防止 AppleScript 注入攻击;使用 pathlib.Path 处理文件路径,避免目录遍历风险。

资源管理:采用临时目录存储中间音频文件,播放完成后自动清理;subprocess 调用均设置超时机制(5-30秒),防止进程挂起。

潜在局限

平台锁定:严格依赖 macOS 系统与 Airfoil 商业软件(需单独购买),Linux 与 Windows 用户无法使用。

网络依赖:必须连接互联网调用 ElevenLabs API,离线场景下完全失效,且会产生 API 调用费用。

外部依赖复杂:除 Python 环境外,需额外安装 FFmpeg、配置 Airfoil 应用权限、管理 ElevenLabs API Key,部署门槛较高。

隐私考量:所有播报文本需发送至 ElevenLabs 云端处理,对隐私敏感场景(如机密信息广播)存在数据外泄风险。

目标用户群体

本技能最适合以下人群:

  • macOS 智能家居爱好者:已搭建 HomeKit 或 Home Assistant 生态,需补充语音通知能力
  • 多房间音频用户:拥有多个 AirPlay 扬声器(HomePod、AirPort Express、第三方 AirPlay 音箱)的住宅或办公环境
  • 高质量 TTS 需求者:对播报音质有较高要求,不满于机械音色的场景(如民宿接待、艺术空间导览)

使用风险与注意事项

Subprocess 执行风险:虽然代码对输入进行了清理,但仍通过 subprocess.run() 执行 AppleScript、FFmpeg 和 afplay 系统命令。建议确保运行环境可信,避免权限提升攻击。

API Key 管理:ElevenLabs API Key 通过环境变量注入,需确保 ~/.zshrc 或 launchd 环境变量配置安全,避免泄露导致账户被盗用。

商业软件依赖:Airfoil 为闭源商业软件,其更新可能破坏兼容性;且该软件需要辅助功能权限控制 macOS 音频,存在潜在的系统稳定性风险。

网络超时处理:在弱网环境下,ElevenLabs API 调用或扬声器连接可能触发 30 秒超时,导致播报延迟或失败,不适合关键紧急通知场景。

安全解读

核心功能

Announcer 是一款 macOS 平台专属的全屋语音播报 skill,通过 ElevenLabs 高品质 TTS 服务生成语音,再经 Airfoil 推送至 AirPlay 音箱播放。支持开场提示音、多音箱定向播报、自定义音色等特性,打造智能家居通知体验。

显著优点

  • 音质优异:采用 ElevenLabs 高质量 opus 编码转立体声 MP3,语音自然度远超系统 TTS
  • 生态整合:与 Apple AirPlay 生态深度融合,支持多房间同步播报
  • 轻量无依赖:除系统命令外零第三方 Python 依赖,维护成本低
  • 体验完整:内置提示音(gong)+ 淡出断开流程,仪式感强

潜在局限

  • 平台锁定:完全依赖 macOS + Airfoil,无跨平台可能
  • 成本外显:ElevenLabs API 按用量计费,重度使用需持续投入
  • 网络依赖:TTS 生成必须联网,离线场景无法使用
  • 配置门槛:需自行申请 API Key、配置音箱列表、安装 Airfoil

适合人群

  • 已深度投入 Apple 生态的智能家居用户
  • 追求高品质语音交互的极客家庭
  • 需要全屋通知场景(用餐提醒、作息通知、安防警报等)

常规风险

  • 命令执行面:多处 subprocess 调用 ffmpeg、afplay、osascript,虽用途明确且已做字符串转义,仍属潜在攻击面
  • 数据外发:用户文本需上传至 ElevenLabs 云端生成语音,存在隐私考量
  • T3 来源:个人开发者维护,无组织背书,需关注持续更新意愿

announcer 内容

scripts文件夹
手动下载zip · 8.3 kB
announce.pytext/plain
请选择文件