项目简介

'stt-mcp-server-linux' 是一个专为Linux环境设计的本地语音转文本 (Speech-to-Text, STT) MCP服务器。它利用强大的Whisper(默认)或Vosk模型进行语音识别,并通过MCP协议向大型语言模型(LLM)客户端(如Claude Code)提供“转录”工具。其核心功能是实现“按键说话”的交互模式,用户按住指定按键(默认为右Ctrl)说话,松开后语音即被转录成文本并自动注入到LLM客户端的输入框中,极大地提升了与LLM的交互效率。

主要功能点

  • MCP协议支持: 完全遵循MCP协议,作为服务器提供上下文信息和工具服务。
  • 语音转文本: 集成Whisper(默认)或Vosk模型,提供高性能的语音识别能力。
  • 按键说话 (Push-to-Talk): 通过监控键盘事件(默认为右Ctrl键)实现直观的录音控制。
  • LLM输入注入: 将转录后的文本直接注入到LLM客户端(如Tmux会话中的Claude Code)的输入流,无需手动复制粘贴。
  • Linux专属: 利用 '/dev/input' 和 '/dev/snd' 等Linux设备,确保与系统底层硬件的高效交互。

安装步骤

  1. 安装Claude Code: 参照Claude官方文档安装LLM客户端。
  2. 安装Docker Engine: 参照Docker官方文档安装Docker。
  3. 安装Tmux: 参照Tmux GitHub安装Tmux。如果您不熟悉Tmux,可以查看YouTube教程备忘单
  4. 克隆仓库:
    git clone https://github.com/marcindulak/stt-mcp-server-linux
    cd stt-mcp-server-linux
    export STT_MCP_SERVER_LINUX_PATH=$(readlink -f .)
  5. 构建Docker镜像:
    bash scripts/build_docker_image.sh
  6. 下载Whisper模型:
    bash scripts/download_whisper_model.sh
  7. 配置Tmux: 将以下内容添加到您的 '~/.tmux.conf' 文件中:
    # 启用鼠标支持滚动
    set -g mouse on
    
    # 设置大的回滚缓冲区
    set -g history-limit 1000000
    
    # 隐藏状态栏以减少闪烁
    set -g status off
    
    # 减少Esc键延迟以减少闪烁
    set -g escape-time 0

服务器配置 (用于MCP客户端)

您需要将此MCP服务器的配置信息添加到您的MCP客户端(例如Claude Code)中。以下是客户端可能需要的JSON格式配置示例,通常通过客户端的配置文件或特定命令工具进行设置。

[
    {
        "name": "stt-mcp-server-linux",
        "command": "docker",
        "args": [
            "run",
            "--rm",
            "-it",
            "--privileged",
            "-v",
            "~/.tmux:/root/.tmux",
            "-v",
            "~/.whisper:/root/.whisper",
            "-v",
            "/dev/input:/dev/input",
            "-v",
            "/dev/snd:/dev/snd",
            "stt-mcp-server-linux",
            "--output",
            "tmux",
            "--session",
            "claude",
            "--model",
            "whisper"
        ],
        "description": "本地语音转文本MCP服务器,用于将语音转录结果注入到Claude的输入流。需要访问主机/dev/input和/dev/snd设备。",
        "environment": {
            "TMUX_TMPDIR": "~/.tmux"
        }
    }
]

参数注释:

  • 'name': MCP服务器的名称,用于在客户端中识别。
  • 'command': 启动MCP服务器进程的可执行命令,这里是 'docker'。
  • 'args': 传递给 'command' 的参数列表,用于启动Docker容器。
    • '--rm': 容器退出时自动删除。
    • '-it': 以交互模式运行并分配一个伪TTY。
    • '--privileged': 授予容器特权,以便访问主机设备(如键盘和声卡)。
    • '-v ~/.tmux:/root/.tmux': 挂载主机的 '~/.tmux' 目录到容器,用于Tmux会话共享。
    • '-v ~/.whisper:/root/.whisper': 挂载主机的 '~/.whisper' 目录到容器,存放Whisper模型。
    • '-v /dev/input:/dev/input': 挂载主机键盘输入设备,用于按键检测。
    • '-v /dev/snd:/dev/snd': 挂载主机音频设备,用于录音。
    • 'stt-mcp-server-linux': Docker镜像的名称。
    • '--output tmux': 设置转录文本的输出方式为Tmux。
    • '--session claude': 指定将文本注入到的Tmux会话名称,默认为 'claude'。
    • '--model whisper': 指定使用的语音转文本模型,这里是 'whisper' (可选 'vosk')。
  • 'description': MCP服务器的简要说明。
  • 'environment': 传递给容器的环境变量,'TMUX_TMPDIR' 用于确保主机和容器之间Tmux会话文件的正确共享。

您可以通过以下命令将服务器添加到Claude Code客户端(假设您位于Claude项目目录中):

bash "$STT_MCP_SERVER_LINUX_PATH"/scripts/add_mcp_server_to_claude.sh

并通过以下命令验证连接:

claude mcp list --debug

如果连接成功,您会看到类似 'stt-mcp-server-linux: ... ✓ Connected' 的输出。

基本使用方法

  1. 在一个Claude工作目录中,使用自定义的Tmux临时目录启动Claude会话:
    TMUX_TMPDIR=~/.tmux tmux new-session -s claude 'claude'
  2. 在Claude界面中,输入并请求运行转录工具,例如:“Run the transcribe tool provided by the stt-mcp-server-linux MCP server”。
  3. 当服务器准备就绪(您可以通过 'docker logs stt-mcp-server-linux' 命令查看Docker容器日志,直到出现 '{... "message": "Waiting for Right Ctrl key press on ... keyboard ..."}' 提示),按下 'Right Ctrl' 键开始说话,松开 'Right Ctrl' 键结束录音。
  4. 转录后的文本将自动注入到Claude的输入框中。您可以在Claude中按 'esc' 中断当前操作,转录工具将在后台继续运行。

信息

分类

AI与计算