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

mcp-voice-hooks

为Claude Code提供语音交互模式的MCP服务,支持通过浏览器进行免提的连续双向语音对话,包含语音识别和文本转语音功能。

article

README

🚀 Claude Code语音模式

Claude Code语音模式让你无需动手,就能与Claude Code进行连续的双向对话。

它利用全新的Claude Code钩子,在Claude运行时将语音输入传递给它。

这使你能够与Claude持续对话——在Claude工作时进行打断、重新引导或提供反馈,而无需停止它正在执行的任务。

你还可以选择启用文本转语音功能,让Claude以语音形式回复你。

语音识别和文本转语音功能由浏览器处理,因此无需下载任何内容,也不需要API密钥。

🚀 快速开始

✨ 主要特性

  • 实现与Claude Code的免提双向对话。
  • 利用Claude Code钩子实时传递语音输入。
  • 支持在Claude工作时随时交互。
  • 可选择文本转语音功能。
  • 语音识别和文本转语音由浏览器处理,无需下载和API密钥。

📦 安装指南

安装过程十分简单。

1. 安装Claude Code

npm install -g @anthropic-ai/claude-code

2. 安装语音模式

npx mcp-voice-hooks@latest install-hooks
claude mcp add voice-hooks npx mcp-voice-hooks@latest

💻 使用示例

基础用法

1. 启动Claude Code

claude

2. 开始监听

浏览器界面将在3秒后自动打开(http://localhost:5111)。 点击“开始监听”。

3. 说话

对Claude说些什么。你需要在Claude Code命令行界面中发送一条消息来开启对话。

4. 触发词模式(可选)

默认情况下,当你暂停说话时,话语会自动发送。你可以在浏览器界面中切换到“等待触发词”模式:

  1. 切换到“等待触发词”模式。
  2. 输入一个触发词(例如,“发送”、“Claude”、“开始”)。
  3. 说出你的消息——它们将在浏览器中排队。
  4. 说出你的触发词以一次性发送所有排队的消息(或点击“立即发送”)。

触发词不区分大小写,并且在发送消息前将自动从你的消息中移除。

📚 详细文档

浏览器兼容性

  • Chrome:全面支持语音识别、浏览器文本转语音和系统文本转语音。
  • ⚠️ Safari:全面支持语音识别和系统文本转语音,但浏览器文本转语音无法加载高质量语音。
  • Edge:在Apple Silicon上语音识别无法工作(语言不支持错误)。

语音回复

语音回复有两种选项:

  1. 浏览器文本转语音
  2. 系统文本转语音

选择并下载高质量系统语音(仅适用于Mac)

Mac自带文本转语音功能,但默认情况下没有高质量语音。 你可以从系统语音菜单下载高质量语音:系统设置 > 辅助功能 > 语音内容 > 系统语音 点击系统语音下拉菜单旁边的信息图标。搜索“Siri”以找到最高质量的语音。你需要触发语音下载。 下载完成后,你可以在Chrome的“浏览器语音(本地)”菜单中选择它。 使用以下bash命令进行测试:

say "Hi, this is your Mac system voice"

要在语音钩子中使用Siri语音,你需要设置系统语音,并在语音钩子浏览器界面中选择“Mac系统语音”。 其他下载的语音将显示在语音钩子浏览器界面的语音下拉菜单中,你可以直接在那里选择它们,而无需使用“Mac系统语音”选项。

Safari存在一个问题,即浏览器重启后,浏览器文本转语音无法加载高质量语音。这是Safari Web语音API的限制。要在Safari中使用高质量语音,你需要将系统语音设置为Siri,并在语音钩子浏览器界面中选择“Mac系统语音”。

手动安装钩子

当MCP服务器启动时,钩子会自动安装/更新。但是,如果你需要手动安装或重新配置钩子:

npx mcp-voice-hooks install-hooks

这将使用必要的钩子命令配置你项目的.claude/settings.local.json文件。

卸载

要完全移除MCP语音钩子:

# 从Claude MCP服务器中移除
claude mcp remove voice-hooks
# 同时移除钩子和设置
npx mcp-voice-hooks uninstall

这将:

  • 清理你项目.claude/settings.local.json中的语音钩子。
  • 保留你添加的任何自定义钩子。

配置

端口配置

默认端口是5111。要使用不同的端口,请在你项目的.claude/settings.local.json中设置MCP_VOICE_HOOKS_PORT环境变量:

{
  "env": {
    "MCP_VOICE_HOOKS_PORT": "8080"
  }
}

此环境变量用于:

  • MCP服务器确定监听的端口。
  • Claude Code钩子连接到正确的端口。

注意:在.claude/settings.local.json中设置是推荐的方法。环境变量将对MCP服务器进程和钩子命令都可用。

浏览器自动打开

在MCP管理模式下运行时,如果在3秒内没有前端连接,浏览器将自动打开。要禁用此行为:

{
  "env": {
    "MCP_VOICE_HOOKS_AUTO_OPEN_BROWSER": "false"
  }
}

实验性:替代安装方法 - 插件模式

只需将以下内容添加到你项目的.claude/settings.local.json中,然后重启Claude Code:

{
  "extraKnownMarketplaces": {
    "mcp-voice-hooks-marketplace": {
      "source": {
        "source": "git",
        "url": "https://github.com/johnmatthewtennant/mcp-voice-hooks.git"
      }
    }
  },
  "enabledPlugins": {
    "mcp-voice-hooks-plugin@mcp-voice-hooks-marketplace": true
  }
}

如果你想暂时禁用插件,请将enabled设置为false

🔗 演示视频

演示视频

help

运行方式说明

cloud

托管运行

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

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

本地运行 / 其它方式

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

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