macOS 全屋智能语音广播助手

announcer

收藏 2.1k
下载 1k
版本 v1.2.3

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

基本信息

  • 技能名称?announcer
  • 中文名称?macOS 全屋智能语音广播助手
  • 作者?odrobnik
  • 分类?效率
  • 版本?v1.2.3
  • 标签?automation, productivity, content-media, smart-home, audio

使用方法

使用说明
核心功能与用法
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 秒超时,导致播报延迟或失败,不适合关键紧急通知场景。

标签

效率

💬 评论 (0)

发表评论

支持 Markdown

📭 还没有评论,快来抢沙发吧!