文本转语音服务器

macOS上的可靠文本转语音服务器,支持队列感知公告、词汇同步工具和菜单栏静音切换。

  • by Wheels00
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Wheels00/codex-tts-mcp

使用说明

codex tts mcp

可靠的macOS MCP服务器,用于代理上下文中的声音TTS,具有队列感知公告、词汇同步工具和菜单栏静音切换。

特性

  • GUI会话音频可靠性的辅助第一语音路径:
    1. LaunchAgent帮助程序(say 在已登录的用户会话中)
    2. osascript 后备方案
    3. 直接的 say 后备方案
  • 队列感知公告(immediate, debounce, flush)
  • 助手守护进程中的语音序列化(同时完成的代理一次说一个)
  • MCP+菜单栏应用程序共享全局静音+语音设置状态
  • 词汇更新工具用于:
    • ~/Library/Spelling/LocalDictionary
    • iCloud候选替换TSV
  • LaunchAgent支持的菜单栏应用程序,具有:
    • 图标+标签状态(🤖💬 当开启时, 🤖🤐 静音时)
    • Settings… 更改默认语音和速度的对话框

文件树

.
├── README.md
├── docs
│   └── AI_EXPOSED_TOOLS.md
├── pyproject.toml
├── scripts
│   ├── codex_tts_menubar.swift
│   ├── install.sh
│   ├── print_codex_config.sh
│   └── uninstall.sh
├── src
│   └── codex_tts_mcp
│       ├── __init__.py
│       ├── config.py
│       ├── helper_client.py
│       ├── helper_daemon.py
│       ├── logging_utils.py
│       ├── macos_audio.py
│       ├── mcp_server.py
│       ├── service.py
│       └── validation.py
└── tests
    ├── test_helper_serialization.py
    ├── test_integration_helper_path.py
    ├── test_mute.py
    ├── test_speech_settings.py
    ├── test_speak_queue.py
    ├── test_validation.py
    └── test_vocab_update.py

设置(一个命令)

cd /path/to/codex-tts-mcp
chmod +x scripts/install.sh scripts/uninstall.sh scripts/print_codex_config.sh
./scripts/install.sh

安装脚本操作:

  • 将运行时部署到 ~/Library/Application Support/codex-tts-mcp/server
  • 安装/启动助手LaunchAgent
  • 构建/安装/启动菜单栏静音应用程序LaunchAgent
  • 自动注册 mcp_servers.codex_tts 进入 ~/.codex/config.toml

在Codex桌面注册

默认情况下不需要手动粘贴。 install.sh 自动写入/更新Codex MCP配置。

可选:检查生成的块:

./scripts/print_codex_config.sh

MCP工具

  • speak(text, voice?, rate?, interrupt?, prefix_codex?, queue_mode?, queue_key?, debounce_ms?)
  • list_voices()
  • healthcheck()
  • set_mute(muted)
  • get_mute_status()
  • set_speech_settings(voice?, rate?)
  • get_speech_settings()
  • update_vocabulary(terms)

AI工具合同

  • speak 是粗制滥造的。
    • MCP将发言 text 正如所提供的那样。
    • 不添加自动前缀或后缀。
    • prefix_codex 仅为了向后兼容性而保留,并被忽略。
  • 默认值为 voice 和 rate 来自共享语音设置(菜单栏 Settings…)如果没有明确提供。
  • 决策规则 什么 说和 当 说它属于技能(例如 tts-announcer),不在MCP服务器中。
  • 完整的面向人工智能的工具合约:[docs/AI_EXPOSED_TOOLS.md](/Users/markbrown/Documents/Mark的通用MCP/docs/AI_EXPOSED_TOOLS.md)

多任务运行的队列模式

  1. 中间完工:
  • queue_mode="debounce",共享 queue_key
  1. 最终完成:
  • queue_mode="flush",同样 queue_key

这给出了一个最终的口头总结,而不是每个子任务一个。

菜单栏

  • 菜单栏项显示图标+ CodexTTS.
    • 时间: 🤖💬
    • 静音: 🤖🤐
  • 从菜单项切换静音。
  • 打开 Settings… 更改默认语音和速率。
  • 主控程序 speak 回报 method="muted" 当静音打开时。

与Claire分享(GitHub)

发布

git init
git add .
git commit -m "Initial codex-tts-mcp"
git branch -M main
git remote add origin git@github.com:<you>/codex-tts-mcp.git
git push -u origin main

Claire设置

git clone git@github.com:<you>/codex-tts-mcp.git
cd codex-tts-mcp
./scripts/install.sh

然后,她重新启动Codex Desktop。

测试

PYTHONPATH=src python3 -m unittest discover -s tests -q

故障排除

  • 助手失踪:
launchctl print "gui/$(id -u)/com.codex.tts.helper"
  • 缺少菜单栏应用程序:
launchctl print "gui/$(id -u)/com.codex.tts.menubar"
  • 插座缺失:
ls -l "$HOME/Library/Application Support/codex-tts-mcp/tts.sock"

卸载

./scripts/uninstall.sh