返回 MCP 目录
public公开dns本地运行

claude-code-tts

一个为Claude Code设计的文本转语音MCP服务器插件,使用OpenAI TTS API将文本转换为语音,提供自动语音反馈功能。

article

README

🚀 Claude Code TTS 插件

Claude Code TTS 插件是一个文本转语音(TTS)的 MCP 服务器插件,它借助 OpenAI 的 TTS API 将文本转换为语音。在使用 Claude 工作时,你可以获得语音反馈,极大地提升工作体验!

演示

🚀 快速开始

快速安装

# 一键安装
curl -fsSL https://raw.githubusercontent.com/ybouhjira/claude-code-tts/main/install.sh | bash

或者手动安装:

git clone https://github.com/ybouhjira/claude-code-tts.git ~/.claude/plugins/claude-code-tts
cd ~/.claude/plugins/claude-code-tts
make install

配置

设置你的 OpenAI API 密钥:

export OPENAI_API_KEY="sk-..."

或者将其添加到你的 shell 配置文件(如 ~/.zshrc~/.bashrc)中。

运行要求

  • Go 1.21 及以上版本(用于从源代码构建)
  • 拥有 TTS 访问权限的 OpenAI API 密钥
  • 音频播放器
    • macOS:afplay(系统自带)
    • Linux:mpvffplaympg123
    • Windows:PowerShell(系统自带)

✨ 主要特性

  • 确定性自动语音播放:Claude 的每个回复都会自动语音播放(通过停止钩子实现)
  • 6 种高品质语音:alloy、echo、fable、onyx、nova、shimmer
  • 工作池架构:非阻塞队列,支持并发处理
  • 互斥锁保护的播放机制:一次只播放一个音频,避免重叠
  • 跨平台支持:支持 macOS(afplay)、Linux(mpv/ffplay/mpg123)、Windows(PowerShell)
  • 独立 CLIspeak-text 二进制文件,无需 MCP 即可直接进行文本转语音

📦 安装指南

一键安装

curl -fsSL https://raw.githubusercontent.com/ybouhjira/claude-code-tts/main/install.sh | bash

手动安装

git clone https://github.com/ybouhjira/claude-code-tts.git ~/.claude/plugins/claude-code-tts
cd ~/.claude/plugins/claude-code-tts
make install

💻 使用示例

speak(text, voice)

将文本转换为语音并播放。

参数: | 参数 | 类型 | 是否必需 | 描述 | |------|------|----------|------| | text | 字符串 | 是 | 要朗读的文本(最大 4096 个字符) | | voice | 字符串 | 否 | 要使用的语音(默认:alloy) |

可用语音: | 语音 | 描述 | |------|------| | alloy | 中性、平衡的语音 | | echo | 男性、温暖的语音 | | fable | 英式口音的语音 | | onyx | 低沉的男性语音 | | nova | 友好的女性语音 | | shimmer | 柔和的女性语音 |

示例:

使用 speak 工具以 nova 语音朗读 "Build completed successfully!"

tts_status()

获取 TTS 系统的当前状态。

返回值:

{
  "worker_count": 2,
  "queue_size": 50,
  "queue_pending": 0,
  "total_processed": 15,
  "total_failed": 0,
  "is_playing": false,
  "recent_jobs": [...]
}

自动 TTS(确定性)

此插件包含一个 停止钩子,它会自动朗读 Claude 每个回复的第一句话,无需额外配置,即装即用。

工作原理:

Claude 回复 → 停止钩子触发 → 提取第一句话 → 播放音频

该钩子在后台运行,不会阻塞 Claude 的回复。

speak-text CLI

一个独立的二进制文件,无需通过 MCP 即可直接进行文本转语音:

# 基本用法
speak-text "Hello world"

# 选择语音
speak-text -voice onyx "Error occurred"

安装后,该二进制文件位于 ~/.claude/plugins/claude-code-tts/bin/speak-text

📚 详细文档

项目结构

claude-code-tts/
├── cmd/
│   ├── tts-server/
│   │   └── main.go           # MCP 服务器入口点
│   └── speak-text/
│       └── main.go           # 独立 CLI 二进制文件
├── hooks/
│   └── auto-speak.sh         # 确定性 TTS 的停止钩子
├── internal/
│   ├── audio/
│   │   └── player.go         # 跨平台音频播放
│   ├── server/
│   │   ├── server.go         # MCP 服务器和工具处理程序
│   │   └── worker.go         # 工作池实现
│   └── tts/
│       └── openai.go         # OpenAI TTS 客户端
├── plugin.json                # 插件元数据和钩子配置
├── Makefile                   # 构建自动化
└── install.sh                 # 一键安装脚本

从源代码构建

# 克隆仓库
git clone https://github.com/ybouhjira/claude-code-tts.git
cd claude-code-tts

# 构建
make build

# 安装到 Claude Code 插件目录
make install

# 运行测试
make test

🔧 技术细节

┌─────────────────────────────────────────────────────────────┐
│                     Claude Code                              │
│                         │                                    │
│                    MCP Protocol                              │
│                         │                                    │
│  ┌──────────────────────▼──────────────────────────────┐    │
│  │              TTS MCP Server (Go)                     │    │
│  │  ┌─────────────────────────────────────────────┐    │    │
│  │  │              Tool Handlers                   │    │    │
│  │  │   speak(text, voice)  │  tts_status()       │    │    │
│  │  └─────────────┬─────────┴─────────────────────┘    │    │
│  │                │                                     │    │
│  │  ┌─────────────▼─────────────────────────────┐      │    │
│  │  │           Worker Pool (2 workers)          │      │    │
│  │  │  ┌─────────┐    ┌─────────────────────┐   │      │    │
│  │  │  │ Job     │───►│ Queue (50 slots)    │   │      │    │
│  │  │  │ Submit  │    └──────────┬──────────┘   │      │    │
│  │  │  └─────────┘               │              │      │    │
│  │  │                   ┌────────▼────────┐     │      │    │
│  │  │                   │ Worker 1 │ 2    │     │      │    │
│  │  │                   └────────┬────────┘     │      │    │
│  │  └────────────────────────────│──────────────┘      │    │
│  │                               │                      │    │
│  │  ┌────────────────────────────▼──────────────────┐  │    │
│  │  │              OpenAI TTS API                    │  │    │
│  │  │         POST /v1/audio/speech                  │  │    │
│  │  │         Model: tts-1                           │  │    │
│  │  └───────────────────┬────────────────────────────┘  │    │
│  │                      │                               │    │
│  │  ┌───────────────────▼────────────────────────────┐  │    │
│  │  │         Audio Player (Mutex Protected)          │  │    │
│  │  │   macOS: afplay │ Linux: mpv │ Win: PowerShell  │  │    │
│  │  └─────────────────────────────────────────────────┘  │    │
│  └──────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE

🔧 故障排除

"OPENAI_API_KEY 环境变量是必需的"

设置你的 OpenAI API 密钥:

export OPENAI_API_KEY="sk-..."

"在 Linux 上未找到合适的音频播放器"

安装以下播放器之一:mpvffplaympg123

# Ubuntu/Debian
sudo apt install mpv

# Fedora
sudo dnf install mpv

# Arch
sudo pacman -S mpv

在 macOS 上音频无法播放

检查 afplay 是否正常工作:

# 使用示例音频文件进行测试
afplay /System/Library/Sounds/Ping.aiff

队列已满

默认队列大小为 50。如果达到此限制:

  1. 等待当前任务完成
  2. 检查 tts_status() 查看待处理任务
  3. 随着任务的处理,队列会逐渐清空

高延迟

  • OpenAI TTS API 每个请求通常需要 1 - 3 秒
  • 音频文件必须完全下载后才能播放
  • 考虑缩短消息长度以获得更快的反馈

API 费用

此插件使用 OpenAI 的 tts-1 模型:

  • 费用:每 1000 个字符约 $0.015
  • 示例:"Hello, world!"(13 个字符)≈ $0.0002

贡献

欢迎贡献代码!请参阅 CONTRIBUTING.md 获取贡献指南。

鸣谢

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端