Skip to main content
Glama

noisy-coding

在 Claude Code 工作时与它对话 — Jarvis 风格的语音编程。 吵闹的是你的声音,而不是你的代码。

Docker Pulls Release CI Last commit License: MIT

Claude 会大声说出简短摘要。一个始终在线的监听器会将你的语音变成消息,Claude 会在任务进行中、不会中断它的情况下收到这些消息 — 无需按发送键,也无需复制粘贴转录文本。离开键盘,继续指挥你的智能体。

你会喜欢它的理由

  • 无中断流程 — Claude 工作时直接说话;你的话语会进入正在运行的会话,而不是文本框。

  • 免提审查 — Claude 大声朗读它的发现;你可以在房间另一头回答。

  • 实时“战术 HUD”仪表盘 — 对话日志支持回放/召回,实时示波器,静音按钮,成本与延迟一目了然。

  • 每个智能体独立人设 — 每个智能体都有语音、语速和个性调节旋钮,全部在仪表盘上完成。

  • 无需在文件中配置任何东西 — API 密钥、设备、语言、按键说话:一切都保存在 UI 中并持久化。

  • 绝不打断你 — 同一时间只有一个声音;你错过的语音会停放在 UNHEARD 中,CATCH UP 按钮可重播它。

语音转文字和文字转语音运行在 Grok (xAI) Voice API — 实际使用极其便宜(一小笔一次性预算就够数月的日常使用)。

Related MCP server: Elba MCP Server

2 分钟安装

后端以无需硬件的 Docker 镜像形式分发(noisy/noisy-coding):仪表盘浏览器标签页就是麦克风和扬声器。你只需要 Docker 和一个浏览器 — 不需要 Python、git 或环境变量。

# terminal: marketplace + plugin in one line
claude plugin marketplace add noisy/noisy-coding && claude plugin install noisy-coding@noisy
# inside Claude Code (new session):
/noisy-coding:setup

设置命令会启动已发布的镜像,并引导你完成首次连接。然后在浏览器中打开 http://127.0.0.1:8765 完成剩余步骤:粘贴你的 xAI API 密钥(console.x.ai),然后点击琥珀色的 ENABLE TAB AUDIO 横幅 — 只需点击一次,该标签页就会成为你的麦克风和扬声器。保持标签页打开,然后直接说话即可。

更喜欢留在 Claude Code 里?同样的事,四条命令:/plugin marketplace add noisy/noisy-coding/plugin install noisy-coding@noisy/reload-plugins/noisy-coding:setup

其他设置方式 — 不使用插件的纯 Docker、带硬件麦克风/扬声器的原生安装、远程主机、所有配置选项 — 都位于 docs/INSTALL.md

工作原理

所有语音逻辑都集中在一个监听守护进程中 — 它是麦克风、播放队列和扬声器的唯一所有者。MCP 服务器是一个轻量信使,负责转发 speak 请求;Claude Code 的 hooks 会将你转录后的语音送回会话(参见 docs/hooks.md)。

mic (hardware or browser tab via WS :8766)
  -> VAD -> Grok STT -> transcript queue -> HTTP :8765
                              ^ polled by Claude Code hooks
speak (MCP, stdio or HTTP :8767) -> POST /speak -> daemon queue
  -> Grok TTS -> speakers (hardware or browser tab)

工具

工具

功能

speak(text, interrupt?)

text 排队进行语音播放,并等待播放完成。语音/语速/语言来自守护进程(仪表盘人设),而不是调用参数。

announce(text)

即发即忘的变体:立即返回,后台播放。

change_voice(voice_id)

有意切换此智能体的语音(持久化,并显示在仪表盘上)。

list_voices()

列出内置的 Grok 语音(araeveleorex、……)。

文档

许可证

MIT © Krzysztof Szumny

Available Tools

4 tools
announceA

Speak a quick spoken update WITHOUT waiting for it to finish.

Fire-and-forget: use this to tell the user what you just did and keep working ("done with X, moving on") — it returns immediately and plays in the background, queued behind any current speech. Use speak instead when you are asking a question or otherwise waiting for the user's reply. Like speak, it carries only text — voice/speed/language live in the daemon.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden. It discloses that the tool returns immediately, plays in the background, queues behind current speech, and carries only text. This is thorough and gives the agent a clear model of runtime behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, front-loading the core behavior in the first sentence and building on it with usage guidance. Every sentence adds value, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema present, this description covers purpose, usage, behavior, and parameter meaning fully. It is complete and leaves no significant gaps for an agent to operate correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'text' parameter has zero schema documentation, but the description compensates by stating the tool 'carries only text' and that voice/speed/language live in the daemon, clarifying that the text parameter is the complete content with no hidden options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Speak a quick spoken update WITHOUT waiting for it to finish.' It directly distinguishes the tool from its sibling 'speak' by emphasizing the fire-and-forget behavior, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: use this for quick updates while continuing work, and 'Use `speak` instead when you are asking a question or otherwise waiting for the user's reply.' This clearly states when to use this tool versus an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

change_voiceA

Deliberately switch this agent's speaking voice from now on.

Updates your character in the listener daemon: the dashboard shows the new voice and every later speak/announce uses it (it also persists across restarts). Use list_voices to see the options. Speak itself carries no voice information — this call is the only way to change how you sound, so use it consciously (e.g. when the user asks for it).

Args: voice_id: Which voice to switch to. speaker: Move a named SPEAKER's voice instead of your own — the personas you address with speak(speaker=...). A voice already held by someone else is refused rather than duplicated, so two speakers never become indistinguishable by ear.

ParametersJSON Schema
NameRequiredDescriptionDefault
speakerNo
voice_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavior. It discloses that the change persists across restarts, affects the listener daemon, applies to future speak/announce calls, and that duplicate voices are refused to prevent indistinguishable speakers. This dramatically exceeds baseline explanation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized in clear sections with the proactive sentence first, followed by practical details and then argument semantics. Every sentence adds relevant information; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a persistent state-changing tool with a lightness of given structured metadata. The description covers side effects, persistence, usage context, the valid arguments, and the duplicate-owner failure behavior. There is enough to invoke intentionally and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no parameter descriptions (0% coverage), so the description is the only source of meaning. It explains voice_id as the voice to switch to and elaborates on speaker, including its use for named SPEAKER-defined personas and the duplicate-refusal behavior. It could be slightly stronger on voice_id's allowed values, but overall it compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Deliberately switch this agent's speaking voice from now on' and details the state change. It distinguishes itself from the sibling speech tools by explicitly stating that speak carries no voice information and that this is the only way to change how one sounds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this call when the user asks for a voice change, use list_voices to see options, and don't expect speak/announce to carry voice information. This effectively tells the agent when to use this tool versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_voicesA

List the Grok TTS voices available for the speak tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. 'List' clearly signals a read-only operation and adds the scope 'for the speak tool'. It does not disclose return format or dynamic behavior, but for a simple listing tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence with a clear verb and object. No redundant information, every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with zero parameters and an output schema present. The description fully covers purpose and intended use, making it complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline score of 4 applies. The description correctly adds no unnecessary parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'List' with resource 'Grok TTS voices' and clarifies they are for the speak tool, distinguishing from sibling tools that speak or change voice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use before speak to discover available voices, and the phrase 'available for the speak tool' gives context. No explicit exclusions or alternatives, but the purpose is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

speakA

Speak a short message aloud to the user through their speakers.

Use this to deliver a spoken TL;DR alongside (not instead of) your written answer: 1-3 conversational sentences summarizing the outcome, a finding, or a question. Never read code, file paths, or long explanations aloud.

You send only the text: voice, speed and language belong to the daemon (the user controls them on the dashboard). To deliberately switch your voice, call change_voice.

Concurrent speech is serialized: by default a new call WAITS for the current utterance to finish (queued), and for the user to finish speaking. Set interrupt=True to cut the current utterance off and speak immediately — use it only when your previous words are now stale (e.g. the user corrected you mid-answer).

Args: text: What to say. Plain conversational prose. Mark the key words the listener must catch with markdown bold (like this) — they get vocal emphasis and show bold on the live dashboard. Also supports inline speech tags like [pause] or [laugh] and wrapping tags like text. interrupt: Cut off any utterance currently playing and speak now. speaker: ONLY for subagents. If you are a subagent (Task/Agent tool), pass your role name here (e.g. "researcher") — the dashboard shows the message under that name with its own portrait, and the daemon gives you a stable voice distinct from the main agent's. The main agent must leave this empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
speakerNo
interruptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and does so thoroughly: it discloses serialized/concurrent speech queuing, interrupt semantics, that only text is sent (voice/language controlled by daemon), and speaker-role constraints for subagents. This is rich behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: purpose first, then usage guidelines, then behavioral notes, then parameter details. Every section earns its place, though the opening sentence and the second sentence partially overlap in saying it's a short spoken message.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (queueing, interrupt, subagent speaker, formatting tags), no annotations, and an output schema, the description covers all necessary context: when to use, exclusions, behavior, parameter semantics, and related tools. It is a complete standalone guide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and does. It explains text formatting (markdown bold, [pause], [laugh], <soft> tags), the exact meaning of interrupt, and the speaker parameter's subagent-only usage with dashboard implications.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states 'Speak a short message aloud to the user through their speakers,' a specific verb+resource pairing. It further scopes usage to 'a spoken TL;DR alongside (not instead of) your written answer' and explicitly contrasts with change_voice, distinguishing it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: deliver 1-3 conversational sentences summarizing outcome/finding/question, never read code/paths/long explanations. It also names the alternative change_voice for switching voices and explains interrupt behavior, giving clear conditions for interrupt=True.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev2.16.0
    • Changedchange_voice1 field changed
      • addedInput schema / properties / speaker
        Added value: +{
        +  "default": "",
        +  "title": "Speaker",
        +  "type": "string"
        +}
  2. 4 tool updatesv2.13.4
    • First observedannounce
    • First observedchange_voice
    • First observedlist_voices
    • First observedspeak

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation4/5

The set is mostly distinct: speak delivers a blocking utterance, announce is fire-and-forget, change_voice and list_voices have clearly separate roles. speak and announce both produce speech, so their overlap could cause an agent to misselect when the blocking behavior matters, but the descriptions offer strong guidance.

Naming Consistency4/5

Naming is simple and readable with all verbs as commands, but it mixes one-word verb names (speak, announce) with verb_noun patterns (change_voice, list_voices). This minor inconsistency is not confusing and the style remains predictable.

Tool Count5/5

Four tools is well-scoped for a voice/speech server: each tool covers a necessary function—speaking, quick updates, voice switching, and voice enumeration. There is no bloat or obvious missing core capability for the stated purpose.

Completeness4/5

The tool set covers the main lifecycle of spoken interaction: speak, gently tell what you're doing, switch voices persistently, and discover available voices. One possible gap is lack of a way to query the currently active voice, but this is a minor issue that does not block common workflows.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables bidirectional voice interaction for Claude Code using local speech-to-text and text-to-speech models optimized for Apple Silicon. It provides tools to listen to user speech via microphone and speak responses aloud through system speakers.
    16
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Local speech-to-text transcription using Microsoft's VibeVoice-ASR model with speaker diarization, enabling audio transcription directly in AI tools like Claude Code, Cursor, and OpenCode.
    3
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides bidirectional local voice for Claude Code on Apple Silicon, enabling hands-free conversation and spoken replies using local Whisper STT and Kokoro TTS, with optional ElevenLabs backend and a Stop hook for automatic speech.
    -