语音工具服务器

一个本地MCP服务器,提供语音转文本和文本转语音工具,适用于Claude Code的语音交互。

  • by jochiang
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jochiang/voice-mcp

使用说明

语音mcp

一个本地MCP服务器,为Claude Code提供语音工具——使用Whisper的语音转文本和使用Supertonic的文本转语音。

特性

语音转文本(耳语)

  • 倾听与确认 -录制语音,用Whisper转录,返回转录本确认
  • 听_是_否 -二元决策的快速是/否检测
  • 使用本地转录 更快的耳语 (没有API调用)
  • 自动静音检测以停止录制
  • 音频蜂鸣声表示录音开始/结束

文本转语音(Supertonic)

  • 说 -向用户大声朗读文本
  • 使用局部合成 Supertonic (没有API调用)
  • 快速设备生成(66M参数)

组合工具

  • speak_and_listen -先说话,然后听完整的回答(减少往返次数)
  • speak_and_confirm -先说,然后听是/否(减少往返次数)

需求

  • Python 3.10+
  • 紫外线 包管理器
  • 麦克风(用于语音转文本)
  • 扬声器/耳机(用于文本转语音)

安装

  1. 克隆存储库:

    git clone https://github.com/jochiang/voice-mcp.git
    cd voice-mcp
    
  2. 安装依赖项:

    uv sync
    
  3. 添加到您的Claude Code MCP设置中(.mcp.json 在您的项目或 ~/.claude/settings.json):

    {
      "mcpServers": {
        "voice": {
          "command": "uv",
          "args": ["run", "--directory", "/path/to/voice-mcp", "voice-mcp"]
        }
      }
    }
    
  4. 重新启动Claude Code以加载MCP服务器。

用法

语音输入

通过说出以下内容来触发语音输入:

  • “让我口头解释一下”
  • “我口头告诉你”

克劳德会打电话的 listen_and_confirm,您将听到一声蜂鸣声,说出您的回答,并在录制停止时听到另一声蜂鸣。克劳德将把成绩单重复一遍以供确认。

对于是/否问题,Claude可以使用 listen_for_yes_no 它将你的回答解释为“是”、“否”或“不清楚”。

语音输出

请克劳德回答:

  • “大声说出来”
  • “读给我听”

克劳德会打电话的 speak 通过扬声器合成和播放音频。

语音对话

对于来回语音对话,Claude可以使用组合工具:

  • speak_and_listen -问一个问题,等待完整的答案
  • speak_and_confirm -提出是/否问题并获得确认

这些通过在单个工具调用中结合说话+倾听来减少延迟。

动态静音检测

所有听力工具都接受 silence_seconds 参数(默认值:2.5,最小值:2.0)。Claude可以根据上下文调整每次通话的静音时间——例如,如果用户需要更多时间思考,可以使用更长的静音时间,或者缩短静音时间以快速确认。

自定义语音行为

工具描述包括克劳德说话的默认指导。要自定义此行为,请向您的 CLAUDE.md 文件。示例:

# Voice preferences
- When speaking, be brief and conversational
- Describe code changes at a high level, don't read syntax
- Summarize URLs instead of spelling them out

你可以鼓励不同的风格——更详细的解释、不同的语气等。

备注

  • 首次运行下载:型号首次使用时自动下载-Whisper small(~460MB)和Supertonic(~260MB)
  • 静音检测:静音2.5秒后停止录制(每次通话可配置,至少2.0秒)
  • 平台:在Windows上开发,应适用于macOS/Linux

故障排除

TTS无音频输出:

  • 某些DAC需要立体声输出-默认情况下,语音工具输出立体声
  • 检查默认音频输出设备

录制停止过快:

  • 静音阈值可能对您的麦克风过于敏感
  • 调整 SILENCE_THRESHOLD 在 src/voice_mcp/audio.py (默认值:0.01)
  • 克劳德也可以通过更高的 silence_seconds 每次调用的参数(默认值:2.5,最小值:2.0)

录制停止得不够快:

  • 克劳德可以通过一个较低的 silence_seconds 参数(最小2.0秒)

配置

耳语(语音转文本)

Whisper模型默认为 small 在CPU上运行。要更改此设置,请编辑 src/voice_mcp/transcribe.py:

# Model options: tiny, base, small, medium, large-v3
_model = WhisperModel("small", device="cpu", compute_type="int8")

对于GPU加速,请更改 device="cpu" 到 device="cuda" (需要cuDNN)。

Supertonic(文本转语音)

默认语音为 M1。可用的声音可以在 超高音声音库.

许可证

麻省理工学院