Token导航 LogoToken导航TokenDH.com
voicelayer (Etan Hey) logo
音视频未说明官方级别未说明来源级核验

voicelayer (Etan Hey)

MCP Server

VoiceLayer是一个本地优先的开源语音交互服务,为AI编码助手提供语音输入输出功能,适用于需要快速语音交互的开发场景。

工具数

11

提示词数

0

GitHub Stars

2

资源数

0
本地处理TypeScriptClaude开源工具ClaudeCursor

安装说明

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

作者 / 组织

EtanHey

提供方

EtanHey

最后核验

2026/5/17 20:22

快速接入

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

详细介绍

语音层

你的AI代理听不见你的声音。VoiceLayer赋予它耳朵和声音。

](https://www.npmjs.com/package/voicelayer-mcp) ![License: Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) ![MCP](https://modelcontextprotocol.io) ![Tools](#voice-tools) ![Tests](#testing)

AI编码助手的语音输入/输出。 按F5,与Claude Code对话,在1.5秒内完成设备转录。你的AI会回应。适用于任何MCP客户端。

  You ──🎤──> whisper.cpp ──> Claude Code ──> edge-tts ──🔊──> You
         STT (local)           MCP tools         TTS (free)

本地优先。免费。开源。 没有云API,没有API密钥,没有数据离开您的机器。部分 魔像 生态系统。

VoiceLayer作为Unix套接字上的持久单例守护进程运行——每个Claude会话都通过轻量级的 socat shim而不是生成自己的进程。11个MCP工具 工具注释.

建筑

                  ┌─────────────────────────────────────┐
                  │         VoiceLayer Daemon            │
                  │     /tmp/voicelayer-mcp.sock         │
                  │                                      │
                  │  MCP JSONRPC ──> Tool Handlers       │
                  │  (Content-Length     ├── voice_speak  │
                  │   framing)          └── voice_ask    │
                  │                                      │
                  │  TTS: edge-tts (retry + 30s timeout) │
                  │  STT: whisper.cpp / Wispr Flow       │
                  │  VAD: Silero ONNX (speech detection)  │
                  │  IPC: Voice Bar ← NDJSON events      │
                  └──────────┬──────────────────────────┘
                             │ Unix socket
              ┌──────────────┼──────────────┐
              │              │              │
         Claude Code    Claude Code    Cursor/Codex
         (socat shim)  (socat shim)   (socat shim)

为什么是守护进程? 原始设计在每次Claude会话中都产生了一个新的Bun过程。随着17个以上的存储库打开,这意味着17个相互竞争的进程(700+MB RAM),争夺一个语音栏套接字,因PATH问题导致边缘tts崩溃,并留下从未死亡的孤儿。PR#67-72中提供的守护进程架构用一个进程取代了所有这些 socat 垫片。

度量之前(每个会话生成)之后(守护进程)
进程N个/会话(17+典型)1个守护进程+socat-shims
RAM约700 MB(17 x 41 MB)约50 MB
孤儿清理手动 pkillPID锁文件自动终止过时
edge-tts失败随机(PATH,争用)在30秒硬超时后重试
voice_ask挂起最长300秒(5分钟!)默认30秒+外护

快速开始

# Install from npm
bun add -g voicelayer-mcp

# Prerequisites
brew install sox socat
pip3 install edge-tts
brew install whisper-cpp  # optional — local STT

# Download a whisper model (recommended)
mkdir -p ~/.cache/whisper
curl -L -o ~/.cache/whisper/ggml-large-v3-turbo.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin

或者从源代码安装:

git clone https://github.com/EtanHey/voicelayer.git
cd voicelayer && bun install

启动守护进程

# Option A: LaunchAgent (auto-start on login, auto-restart on crash)
./launchd/install.sh

# Option B: Manual
bun run src/mcp-server-daemon.ts

禁用VoiceLayer

DISABLE_VOICELAYER=1 是MCP守护进程的硬终止开关。

# Install the LaunchAgent in a disabled state and sync the runtime daemon flag
DISABLE_VOICELAYER=1 ./launchd/install.sh

# Or edit the template-generated plist and add:
# DISABLE_VOICELAYER
# 1

如果守护进程已在运行,请创建 /tmp/.voicelayer-daemon-disabled 它将在5秒内关闭。 ./launchd/install.sh 还使该文件与保持同步 DISABLE_VOICELAYER,因此VoiceBar启动的守护程序也保持禁用状态。要重新启用它,请从中删除env变量 ~/Library/LaunchAgents/com.voicelayer.mcp-daemon.plist,删除 /tmp/.voicelayer-daemon-disabled 如果存在,则重新启动代理:

launchctl kickstart -k "gui/$(id -u)/com.voicelayer.mcp-daemon"

配置MCP客户端

添加到您的 .mcp.json (在任何使用Claude Code的仓库中):

{
  "mcpServers": {
    "voicelayer": {
      "command": "socat",
      "args": ["STDIO", "UNIX-CONNECT:/tmp/voicelayer-mcp.sock"]
    }
  }
}

或者一次迁移所有存储库:

bash scripts/migrate-to-daemon.sh         # migrates every .mcp.json under ~/Gits
bash scripts/migrate-to-daemon.sh --dry-run  # preview without changes

允许麦克风访问您的终端(macOS:系统设置>隐私>麦克风)。

语音工具

主要工具

工具行为阻塞只读破坏性幂等
voice_speakTTS具有自动模式(宣布/简报/咨询/思考)、回放、切换
voice_ask说出问题+录制麦克风+转录响应假的

向后兼容别名

别名映射到幂等
qa_voice_announcevoice_speak(mode='announce')真的
qa_voice_briefvoice_speak(mode='brief')真的
qa_voice_consultvoice_speak(mode='consult')真的
qa_voice_sayvoice_speak(mode='announce')真的
qa_voice_thinkvoice_speak(mode='think') 错误的
qa_voice_replayvoice_speak(replay_index=N)真的
qa_voice_togglevoice_speak(enabled=bool)真的
qa_voice_conversevoice_ask 错误的
qa_voice_askvoice_ask 错误的

所有11个工具都包括MCP 工具注释。没有VoiceLayer工具具有破坏性。所有人都有 openWorldHint: false.

voice_ask的工作原理

  1. 等待任何游戏 voice_speak 音频结束
  2. 通过边缘tts回答问题(失败后重试)
  3. 以设备本机速率录制麦克风,重新采样至16kHz
  4. Silero VAD检测语音开始和静音结束
  5. whisper.cpp在本地转录(在Apple Silicon上约200-400ms)
  6. 将转录返回给AI代理

可靠性特征

  • PID锁定文件 (/tmp/voicelayer-mcp.pid):启动时,检测并杀死前一个会话中的任何孤立MCP服务器
  • 边缘tts重试:健康检查(缓存60秒)+每次尝试自动重试30秒硬超时
  • 外部超时保护: Promise.race 对整个voice_ask流进行包装——如果有任何挂起,则返回错误,而不是永远阻塞
  • 会议预订:锁文件互斥防止并发会话之间的麦克风冲突

录音控制

方法如何
停车信号touch ~/.local/state/voicelayer/stop-{token}
VAD静音可配置:快速(0.5秒)、标准(1.5秒)、周到(2.5秒)
超时默认30秒,每次通话可配置5-3600秒
推动对话press_to_talk: true --无VAD,仅在信号时停车

STT后端

后端类型延迟设置
whisper.cpp本地(默认)~200-400msbrew install whisper-cpp +模型下载
Wispr流程云(回退)~500ms+网络设置 QA_VOICE_WISPR_KEY 有人是。

自动检测到。覆盖 QA_VOICE_STT_BACKEND=whisper|wispr|auto.

语音栏(macOS)

浮动SwiftUI小部件在语音交互过程中提供视觉反馈。通过NDJSON连接到守护进程 /tmp/voicelayer.sock.

  • 带单词级突出显示和自动滚动的提示器
  • 记录过程中的波形可视化
  • 可扩展药丸UI——闲置5秒后折叠成点
  • 可拖动,位置在发射过程中保持不变
  • 全局热键: F5(按住可按键通话)
bun add -g voicelayer-mcp
voicelayer hotkey install       # Install F5/Dictation -> F18 relay
voicelayer bar                  # Build and launch Voice Bar

热键注释:

  • 需要输入监控权限(系统设置>隐私和安全)
  • 在物理键为苹果听写键的键盘上, voicelayer hotkey install 安装a hidutil LaunchAgent将F5/听写映射到VoiceBar的内部F18中继。
  • 安装程序保留非VoiceBar hidutil 映射,可以安全地重新运行。 Shift+F5 重新粘贴最新的成绩单。

高级:语音克隆

用于克隆语音的三层TTS引擎级联:

  1. XTTS-v2 微调(节奏+音色)
  2. F5-TTS MLX 零样本(本地,无守护进程)
  3. Qwen3-TTS 守护进程(基于HTTP)
  4. 边缘tts 回退(始终可用)
voicelayer extract    # Extract voice samples
voicelayer clone             # Build voice profile
voicelayer daemon --port 8880      # Run Qwen3-TTS server

Qwen3守护进程现在使用来自的承载身份验证 ~/.voicelayer/daemon.secret (在首次使用模式启动时创建 0600).TypeScript桥读取 自动生成相同的文件。用以下内容覆盖位置 VOICELAYER_TTS_DAEMON_SECRET_FILE, VOICELAYER_TTS_AUTH_TOKEN_FILE,或 voicelayer daemon --daemon-secret-file ... 如果你需要一个自定义启动器 路径。守护进程只接受 Host: 127.0.0.1:8880 / Host: localhost:8880,拒绝非本地 Origin 标题,并且只读取 reference_wav 在下解析的文件 ~/.voicelayer/voices/.

环境变量

变量默认值描述
QA_VOICE_STT_BACKENDautoSTT后端: whisper, wispr,或 auto
QA_VOICE_WHISPER_MODEL自动检测whisper.cpp GGML模型的路径
QA_VOICE_WISPR_KEY--Wispr Flow API密钥(云回退)
QA_VOICE_TTS_VOICEen-US-JennyNeural边缘tts语音ID
QA_VOICE_TTS_RATE+0%基本语音速率
VOICELAYER_TTS_DAEMON_SECRET_FILE~/.voicelayer/daemon.secret共享Qwen3守护进程承载秘密文件的首选覆盖
VOICELAYER_TTS_AUTH_TOKEN_FILE~/.voicelayer/daemon.secret共享Qwen3守护进程承载秘密文件的向后兼容覆盖

测试

bun test                              # 585 Bun tests + 1 skip (latest verified on PR #190 pre-push gate)
bash flow-bar/run_tests.sh            # 144 Swift tests for VoiceBar
git config core.hooksPath .githooks   # install repo pre-push hook once per clone (#181, #182)

测试范围包括:MCP协议框架、工具处理程序、TTS合成+重试、VAD语音检测、会话预订、进程锁生命周期、套接字客户端重新连接、边缘TTS健康检查、模式验证、希伯来语STT评估基线、守护进程弹性、ToolAnnotations、SSML净化和安全路径强化。

近期硬化(2026-04-27→2026-05-02)

一周的冲刺集中在VoiceBar的可靠性和一个记录语料库上,以对抗STT回归。下面的每一行都指向一个合并的PR。

记录可靠性

  • 录制控件可点击性恢复——F6插座控件在药丸动画期间保持交互式(#188).
  • 调整大小时保留药丸底部锚点,因此UI不会偏离屏幕(#187).
  • 波形在真实音频输入上再次动画化+删除冗余的“收听”副本(#184).
  • 波形动态范围恢复到静音门上方(#185).
  • 支持自定义VoiceBar安装路径(不再硬编码 /Applications/VoiceBar.app) (#186).
  • VoiceBar转录通过录音RMS门保存,因此安静的语音得以保留(#177).
  • 停滞的后台程序重启检测——后台程序重启后,VoiceBar转录会自动恢复(#183).

STT质量

  • 未抑制输入STT幻觉(#189).
  • 零RMS音频摄取监视器在耳语之前捕捉到无声的麦克风。cpp猜测(#178).

VoiceBar听写语料库(第一阶段)#190

  • 每个成功的VoiceBar听写都存档在 ~/.local/share/voicelayer/recordings/YYYY-MM-DD// 随着 audio.wav + voicelayer-transcript.txt + metadata.json (模式v1,WAV字节上的SHA-256)。
  • 原子重命名+fsync,因此部分写入永远不会出现在语料库中。
  • 取消的或空的转录被跳过——只有真实的听写会放在磁盘上。
  • 重新粘贴热键移动到 Shift+F5;平原 F5 现在是通过VoiceBar的F18中继进行的默认记录启动/停止激活。

测试基础设施

  • voicelayer run_tests.sh 编排脚本统一Bun+Swift+守护进程引导+Karabiner烟雾运行(#180).
  • 用于黄金路径STT回归的VoiceBar音频设备(#179).

项目结构

voicelayer/
├── src/                          # TypeScript/Bun (18K lines, 69 files)
│   ├── mcp-server-daemon.ts      # Singleton daemon entry point
│   ├── mcp-server.ts             # Stdio MCP server (legacy)
│   ├── mcp-daemon.ts             # Unix socket server (dual-protocol)
│   ├── mcp-framing.ts            # Content-Length + NDJSON framing
│   ├── mcp-handler.ts            # JSONRPC request router
│   ├── process-lock.ts           # PID lockfile (orphan prevention)
│   ├── handlers.ts               # Tool handler implementations
│   ├── tts.ts                    # Multi-engine TTS with playback queue
│   ├── tts-health.ts             # edge-tts health check + retry
│   ├── input.ts                  # Mic recording + STT pipeline
│   ├── vad.ts                    # Silero VAD (ONNX inference)
│   ├── stt.ts                    # STT backend abstraction
│   ├── socket-client.ts          # Voice Bar IPC (auto-reconnect)
│   ├── session-booking.ts        # Lockfile mutex
│   ├── paths.ts                  # Centralized path constants
│   └── __tests__/                # 536 tests across 48 files
├── flow-bar/                     # SwiftUI macOS app (1.9K lines, 9 files)
│   ├── Sources/VoiceBar/         # App source
│   └── Tests/                    # Swift tests
├── scripts/
│   ├── migrate-to-daemon.sh      # Batch .mcp.json migration
│   └── edge-tts-words.py         # Word-level TTS with timestamps
├── launchd/                      # macOS LaunchAgent auto-start
├── models/                       # Silero VAD ONNX model
└── package.json                  # v2.0.0

平台支持

平台TTSSTT录音语音栏
macOSedgetts+afplaywhisper.cpp(CoreML)soxSwiftUI应用程序
Linux边缘tts+mpv/ffplaywhisper.cppsox--

傀儡的一部分

VoiceLayer是三个开源MCP服务器之一 魔像 生态系统:

服务器功能工具
BrainLayerAI代理的持久内存——知识图+混合搜索12
语音层语音输入/输出——本地STT、神经TTS、F5按键通话11
cmuxLayer终端编排--生成窗格、读取屏幕、协调代理22

与BrainLayer配对,记住会话中的语音对话。

许可证

阿帕奇-2.0

目录标签

目录标签

本地处理TypeScriptClaude开源工具语音交互本地部署AI助手语音转录语音识别

支持客户端

ClaudeCursor

接入字段

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

未说明

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

token

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明token部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP