使用说明

项目简介

Voicevox MCP 服务器是一个允许 LLM 客户端通过 Model Context Protocol (MCP) 调用 VOICEVOX 引擎进行语音合成的后端服务。它将 VOICEVOX 的语音合成能力封装成 MCP 工具,使得支持 MCP 协议的 LLM 应用,如 Cursor 等,能够方便地使用 VOICEVOX 进行文本到语音的转换。

主要功能点

  • 语音合成即服务: 将 VOICEVOX 引擎的语音合成功能通过 MCP 协议对外提供。
  • 工具集成: 以 MCP Tool 的形式集成 VOICEVOX,方便 LLM 客户端调用。
  • 本地播放: 合成的语音可以在运行服务器的主机上直接播放。
  • 跨平台支持: 支持 Windows 和 Docker (WSL2) 环境。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Dosugamea/voicevox-mcp-server.git
    cd voicevox-mcp-server
  2. 安装依赖:
    npm install
  3. 配置环境变量:
    • 复制 '.env_example' 文件并重命名为 '.env'。
    • 根据你的 VOICEVOX ENGINE 设置修改 '.env' 文件中的 'VOICEVOX_API_URL' (VOICEVOX API 地址) 和 'VOICEVOX_SPEAKER_ID' (默认话者ID)。
    • 确保 VOICEVOX ENGINE 正在运行,并且可以通过配置的 'VOICEVOX_API_URL' 访问。
    • Windows 环境 还需要安装 VLC 媒体播放器并确保其路径已添加到系统环境变量中,以便播放合成的语音。
    • Docker 环境 需要确保 WSL2 环境配置正确,并安装必要的 Linux 软件包 ('libsdl2-dev pulseaudio-utils pulseaudio')。

服务器配置

MCP 客户端需要配置连接到 Voicevox MCP 服务器的工具。以下是不同环境下的配置示例,请根据你的 MCP 客户端配置进行添加。

Windows 环境 (SSE 模式):

在 MCP 客户端的 'mcp.json' 配置文件中,添加如下 'tools' 配置:

{
  "tools": {
    "voicevox": {
      "url": "http://localhost:10100/sse"
    }
  }
}
  • 'voicevox': 工具名称,用于在 MCP 客户端中标识和调用该工具。
  • 'url': Voicevox MCP 服务器的 SSE 连接地址。默认配置下,Windows 环境使用 SSE 传输协议,端口为 '10100',路径为 '/sse'。

Docker 环境 (Stdio 模式):

在 MCP 客户端的 'mcp.json' 配置文件中,添加如下 'tools' 配置:

{
  "tools": {
    "voicevox": {
      "command": "cmd",
      "args": [
        "/c",
        "docker",
        "run",
        "-i",
        "--rm",
        "-v",
        "/mnt/wslg:/mnt/wslg",
        "-e",
        "PULSE_SERVER",
        "-e",
        "SDL_AUDIODRIVER",
        "-e",
        "VOICEVOX_API_URL",
        "-e",
        "VOICEVOX_SPEAKER_ID",
        "your-local-docker-image-name"
      ],
      "env": {
        "PULSE_SERVER": "unix:/mnt/wslg/PulseServer",
        "SDL_AUDIODRIVER": "pulseaudio",
        "VOICEVOX_API_URL": "http://host.docker.internal:50031",
        "VOICEVOX_SPEAKER_ID": "919692871"
      }
    }
  }
}
  • 'voicevox': 工具名称。
  • 'command': 启动服务器的命令,这里使用 'cmd /c docker run -i --rm ...' 在 Docker 容器中运行服务器。
  • 'args': 传递给 'docker run' 命令的参数,包括:
    • '-i': 保持标准输入 (stdio) 打开,用于 MCP 通信。
    • '--rm': 容器退出后自动删除。
    • '-v /mnt/wslg:/mnt/wslg': 挂载 WSLg 目录,用于 Docker 容器访问宿主机的 PulseAudio 服务,实现音频输出。(仅 Docker 环境需要)
    • '-e ...': 设置环境变量传递给 Docker 容器,包括 PulseAudio 配置、SDL 音频驱动、VOICEVOX API 地址和话者 ID。
    • 'your-local-docker-image-name': 需要替换为你本地 Docker 镜像的名称,该镜像应该包含 Voicevox MCP 服务器的代码和运行环境。
  • 'env': 设置运行环境的环境变量,用于 Docker 容器内部的服务器配置。
    • 'PULSE_SERVER', 'SDL_AUDIODRIVER': 配置 Docker 容器内的音频输出,使其能够通过 PulseAudio 服务播放声音。(仅 Docker 环境需要)
    • 'VOICEVOX_API_URL', 'VOICEVOX_SPEAKER_ID': 传递 VOICEVOX API 地址和话者 ID 到 Docker 容器内部。

注意: Docker 环境的配置较为复杂,需要确保 Docker 镜像已构建,并且 '/mnt/wslg' 目录挂载和 PulseAudio 配置正确。

基本使用方法

  1. 启动服务器:

    • Windows 环境: 在项目根目录下,先执行 'npm run build' 构建项目,然后执行 'npm start' 启动服务器。
    • Docker 环境: 服务器将在 MCP 客户端通过 'docker run' 命令启动,无需手动启动。
  2. 在 MCP 客户端中使用:

    • 在支持 MCP 协议的客户端(例如 Cursor 等)中,配置好上述服务器连接信息后,即可调用 'voicevox' 工具。
    • 调用 'voicevox' 工具时,需要提供 'text' 参数,即要合成语音的文本内容。
    • 例如,在 Cursor 中,可以使用类似 '@voicevox text="你好"' 的指令来调用语音合成功能。
    • 合成的语音将在运行 Voicevox MCP 服务器的主机上播放出来。

话者ID

可以通过 VOICEVOX ENGINE API 的 '/speakers' 接口查询可用的话者 ID 列表。默认使用的话者 ID 是 1 (四国めたん)。如果需要使用其他话者,请修改 '.env' 文件中的 'VOICEVOX_SPEAKER_ID' 环境变量。

信息

分类

AI与计算