Token导航 LogoToken导航TokenDH.com
Speak2me MCP logo
音视频未说明官方级别未说明来源级核验

Speak2me MCP

MCP Server

一个为Claude Code和其他MCP客户端添加语音功能的服务器,支持高质量的文本转语音(TTS)和语音转文本(STT)功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
语音识别TypeScriptClaude语音合成Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

CodingButter

提供方

CodingButter

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

对我说话-mcp

具备STT/TTS功能的语音MCP服务器 - Elysia后端 + React PWA前端

一个模型上下文协议(MCP)服务器,为Claude Code及其他MCP客户端添加语音功能。使用高质量的文本转语音(TTS)技术(ElevenLabs)并结合SSML增强(OpenAI)来朗读文本,同时通过语音识别(STT)技术(Google Gemini)来接收语音输入。

特性/特点

  • 🎙️ 语音输入使用带有VAD(语音活动检测)和分块功能的Google Gemini STT(语音转文本)捕捉并转录语音
  • 🔊 语音输出使用ElevenLabs将文本转换为语音,并通过OpenAI支持的SSML进行增强
  • 🎭 表情符号“🎭”在中文中通常被解释为“小丑脸”或“化妆脸”,它代表一种带有表演、戏剧或娱乐意味的表情。这个符号可以用来表示开玩笑、搞怪、扮演角色或者是在某种情境下展现出夸张或戏剧化的情绪。 MCP集成两个工具(speaklisten) 可从Claude Code及其他MCP客户端访问
  • 💬 PWA(渐进式网页应用)界面基于React的控制台,具备对话历史记录和音频回放功能
  • 🔐 多会话支持多个并发的MCP连接,每个连接拥有独立的对话历史记录
  • 经过测试81项测试,涵盖模式、工具、存储和会话管理

建筑

这是一个包含以下内容的Bun单体仓库:

  • 后端apps/backend): 带有MCP SSE端点的Elysia服务器
  • 前端 (apps/frontend): 带有音频控件和对话界面的React PWA(渐进式网页应用)
  • 包裹;软件包

- coreMCP工具,人工智能服务(文本转语音/语音转文本/语音合成标记语言),会话管理 - database用于存储对话和消息的Prisma存储层 - sharedZod模式和TypeScript类型 - platformWeb/Electron 适配器 - ui共享的React组件

快速入门

先决条件

- OpenAI(用于SSML丰富化) - ElevenLabs(用于文本转语音,TTS) - Google Gemini(用于语音转文本,STT)

安装

# Clone the repo
git clone https://github.com/CodingButter/speak2me-mcp.git
cd speak2me-mcp

# Install dependencies
bun install

# Set up database
cd packages/database
bun run db:generate
bun run db:push
cd ../..

# Configure API keys (backend)
cp apps/backend/.env.example apps/backend/.env
# Edit apps/backend/.env with your API keys

发展

# Start both backend and frontend
bun run dev

# Or start individually
bun run dev:backend  # Backend on http://localhost:3000
bun run dev:frontend # Frontend on http://localhost:5173

测试

# Run all tests
bun test

# Watch mode
bun test:watch

# Coverage
bun test:coverage

MCP 集成

将Claude Code(或其他MCP客户端)连接到语音服务器:

1. 启动后端

bun run dev:backend

2. 添加到您的项目中 .mcp.json

{
  "mcpServers": {
    "voice": {
      "url": "http://localhost:3000/sse/my-project-id"
    }
  }
}

每个项目都可以有自己的 conversationId (最后一个路径段)以保持独立的历史记录。

3. 使用工具

Claude Code 将自动发现两种工具:

speak - 将文本转换为语音

{
  text: string,           // Required: text to speak
  ssml?: string,          // Optional: provide your own SSML
  voiceId?: string,       // Optional: ElevenLabs voice ID
  model?: string,         // Optional: ElevenLabs model
  stream?: boolean        // Optional: stream audio (default: true)
}

listen - 录音并转录语音

{
  mode: "auto" | "manual" | "ptt",  // Required: listening mode
  vadThreshold?: number,             // Optional: VAD threshold (0-1)
  minSilenceMs?: number,             // Optional: silence duration
  maxUtteranceMs?: number,           // Optional: max utterance length
  locale?: string                    // Optional: e.g., "en-US"
}

项目结构

speak2me-mcp/
├── apps/
│   ├── backend/              # Elysia MCP server
│   │   ├── src/
│   │   │   ├── index.ts      # Main server
│   │   │   ├── mcp/          # SSE transport, tool handlers
│   │   │   └── api/          # REST endpoints
│   │   └── package.json
│   └── frontend/             # React PWA
│       ├── src/
│       │   ├── components/   # UI components
│       │   ├── hooks/        # Audio capture hooks
│       │   └── services/     # Audio encoding
│       └── package.json
├── packages/
│   ├── core/                 # MCP tools & services
│   │   └── src/
│   │       ├── mcp/          # handleSpeak, handleListen
│   │       ├── services/     # TTS, STT, SSML enhancer
│   │       ├── session/      # SessionManager
│   │       └── operations/   # CoreOperations
│   ├── database/             # Prisma storage
│   │   ├── prisma/
│   │   │   └── schema.prisma
│   │   └── src/storage.ts
│   ├── shared/               # Schemas & types
│   │   └── src/
│   │       ├── schemas.ts    # Zod schemas
│   │       └── types.ts      # TypeScript types
│   ├── platform/             # Web/Electron adapters
│   ├── ui/                   # Shared components
│   └── config/               # Shared config
└── package.json              # Root workspace

脚本

根级别

  • bun run dev - 以开发模式启动两个应用程序
  • bun run dev:backend - 仅启动后端
  • bun run dev:frontend - 仅启动前端
  • bun run build - 构建所有应用程序
  • bun test - 运行所有测试
  • bun run typecheck - 对所有包进行类型检查
  • bun run lint - 检查所有包的lint(代码规范检查)
  • bun run format - 使用 Prettier 格式化代码

后端

  • bun run dev - 开发者模式,支持热重载
  • bun run build - 为生产构建
  • bun run start - 开始生产构建
  • bun test - 运行后端测试

前端

  • bun run dev - 开发服务器
  • bun run build - 为生产环境构建
  • bun run preview - 预览生产构建
  • bun test - 运行前端测试

数据库

  • bun run db:generate - 生成 Prisma 客户端
  • bun run db:push - 将模式推送到数据库
  • bun run db:migrate - 创建迁移(数据库迁移或数据迁移等)
  • bun run db:studio - 打开Prisma Studio

Git 钩子(Git Hooks)

这个项目使用预推送钩子来确保代码质量:

  • 预推送(或:推送前处理)在允许推送到远程仓库之前运行所有测试
  • 在代码推送之前,测试必须通过
  • 位于 .git/hooks/pre-push

API密钥配置

钥匙可以以两种方式存放:

服务器端(推荐用于自托管)

创建 apps/backend/.env:

OPENAI_API_KEY=sk-...
ELEVENLABS_API_KEY=...
GEMINI_API_KEY=...

客户端(PWA 用户界面)

用户可以在PWA设置面板中输入密钥。密钥按对话单独存储。

文档

  • CLAUDE.md(文件名可译为“克劳德.md”,但通常文件名保持原样,不翻译) - 在此仓库中工作时的Claude代码使用说明
  • 项目范围文件.md - 完整的产品需求和架构

技术栈

  • 运行时面包卷
  • 后端Elysia,@modelcontextprotocol/sdk,Prisma
  • 前端React 18,Zustand,TailwindCSS,@ricky0123/vad-web
  • 人工智能服务OpenAI,ElevenLabs,Google Gemini
  • 验证佐德
  • 测试面包测试

做出贡献

  1. 为仓库创建分支
  2. 创建一个特性分支(git checkout -b feature/amazing-feature
  3. 做出你的更改
  4. 运行测试(bun test)
  5. 提交(git commit -m 'Add amazing feature'
  6. 推送到你的叉(即你的GitHub仓库副本)git push origin feature/amazing-feature
  7. 提交一个拉取请求

许可证

麻省理工学院(MIT)

致谢/功劳

使用……构建 克劳德·科德

目录标签

目录标签

语音识别TypeScriptClaude语音合成本地部署MCP集成多会话支持ReactPWA

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP