Voicely

io.github.StulkovLD由 GitHub 账号 StulkovLD 发布v1.4.2更新于 Oct 27, 2026

Offline speech-to-text on macOS: transcribe audio/video files, read dictations and calls.

已验证STDIO仅桌面文件与存储媒体与设计

概览

AI 生成的概览

Voicely 的本地 macOS MCP 服务器,让助手在本机转写音视频文件,并读取已保存的听写与通话记录。

可以做什么
  • 转写音频或视频文件,可选说话人分离
  • 按时间倒序列出已保存的听写、通话与文件转写记录
  • 按 id 或 last、last-call 等别名读取某份转写
  • 读取最近一次通话的转写内容
适用场景
适合在 Mac 上希望让助手把录音变成文字,或查阅自己此前的听写与通话内容的场景,例如从访谈文件中提取待办事项、根据上次通话起草计划。也适合不想使用云端语音服务的人。
运行要求
需要 macOS 14 及以上、Apple Silicon 机型,并已安装 Voicely 应用且其命令行工具在 PATH 中;服务器以本地 stdio 进程方式通过 voicely mcp 命令启动。应用需授予麦克风、辅助功能权限,录制通话还需屏幕录制权限。语音模型约 470 MB,首次使用时下载;无需账号或 API 密钥。
安装前请注意
服务器会读取你文档目录下保存的转写文本与音频,助手因此可能看到听写内容和通话录音,包括其他参与者的发言。录制通话会采集系统音频与麦克风输入,可能需要征得参与者同意。安装方式为从厂商网站获取的 shell 脚本,且构建使用非 Apple 证书签名、未经公证,运行前请自行审查。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Voicely,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Voicely

Free, open-source, offline dictation and transcription for macOS — with a local MCP server that gives Claude Code, Codex and Cursor ears.

[图片] [图片] [图片] [图片] [图片]

[Voicely — Speak. It types. Open source, offline, free.]

  • Dictate anywhere. Press Option+Space, speak, press it again — the text lands wherever your cursor is, terminals and VS Code included.
  • Calls and files. Record a call (system audio + mic, no virtual audio device) and get a speaker-separated transcript; turn any audio or video file into text.
  • Agent-native. voicely connect registers a local MCP server, so your agent can transcribe files and read your calls and dictations.
  • On-device only. NVIDIA Parakeet V3 through CoreML, 25 languages. No account, no cloud, no subscription. MIT.
bash
curl -fsSL https://voicely.art/install.sh | sh# orbrew install --cask stulkovld/voicely/voicely

macOS 14+ on Apple Silicon. Like Superwhisper, MacWhisper or Wispr Flow — but free and MIT-licensed, 100% on-device, and built to hand text to your AI agent.

Free, forever

Tools that do this usually ask for a monthly subscription or a one-time payment. Voicely is free, forever: MIT-licensed, and every line of it is in this repository. It is made by one person, in one room, who uses it every day. If it saves you time, a ⭐ helps others find it.

Install

One command. There is no DMG to download and nothing to drag into Applications:

bash
curl -fsSL https://voicely.art/install.sh | sh

Or through the Homebrew tap: brew install --cask stulkovld/voicely/voicely.

The script downloads the current build, verifies its SHA-256 and its signing certificate in a private staging directory, installs it transactionally — the previous version stays as a backup until the new one passes every gate, and any failure rolls back cleanly — then launches the app. Re-running it updates in place and keeps your transcripts, model and settings.

The public build is signed with Voicely's own certificate rather than an Apple Developer ID, and it is not notarized by Apple. The certificate is the same for every release, so macOS keeps your Microphone and Accessibility permissions when you update. If an older copy left permission entries behind, the installer clears them and Voicely asks again by itself.

First launch

  1. Find the Voicely icon in the menu bar.
  2. Allow Microphone, then switch Voicely on in the Accessibility list that opens. Voicely waits for both and continues by itself.
  3. Confirm the speech model download (Parakeet V3, about 470 MB). The first prepare step takes about a minute; later launches are fast.
  4. Screen Recording is requested only when you first use Record Call.

Requirements: macOS 14 or newer on Apple Silicon.

Transport, not translation

Voicely moves what you said to where you work. It never rewrites, summarizes or "improves" what you meant — word-level truth is kept next to every transcript.

Direct transport — dictation, Option+Space

Press the hotkey, speak, press it again. A floating glass pill shows the live waveform while you talk. The text lands wherever your caret is: native Mac fields through Accessibility, checked by reading the caret back; Chrome, VS Code, Claude and every other Chromium or Electron app through the clipboard and ⌘V — your clipboard is put back right after the app has read the text, and the transcript is marked so clipboard managers don't keep it; terminals through typed text. If no app takes the text, it waits on the clipboard and the pill says "Press ⌘V". The Output menu can pin dictation to the clipboard permanently; secure fields are save-only, always. Dictations are saved to ~/Documents/Voicely/dictations/; where each one went, and how, is logged without the words in ~/Library/Logs/Voicely/insertion.jsonl.

Careful packaging — calls and files

Calls (menu bar → Record Call). Voicely records system audio (through ScreenCaptureKit — no virtual audio device needed) and your microphone, mixes them into one track, transcribes the mix and diarizes it globally. An echo can't duplicate a sentence, and several people on one mic separate into distinct voices. "You" is identified by matching diarized voices against your microphone's own activity. The transcript reads as speaker turns and is saved to ~/Documents/Voicely/calls/<id>/ as markdown, word-level JSONL and WAV.

Files. Any audio or video file becomes a transcript, with optional speaker diarization: voicely transcribe <file> from the terminal, or the transcribe_file tool from an agent. Results land in ~/Documents/Voicely/files/.

Either way the result is text in one tap. Hand it to your agent yourself — paste it into Claude Code, save it as a note — or let the agent read it through MCP, below.

Your AI knows what you know

The voicely CLI and a local MCP server make every capability agent-native. After installing the app, expose the CLI on your PATH and register the server with the agents you use:

bash
/Applications/Voicely.app/Contents/Helpers/voicely setup   # symlinks `voicely` into /usr/local/bin or ~/.local/bin, no sudovoicely connect                                            # registers the MCP server with every installed harnessvoicely connect claude                                     # or one by name: claude, codex, cursor, hermes, openclaw

Claude Desktop and other MCPB-aware clients can install the server in one click from voicely-<version>.mcpb on the latest release. Voicely is listed in the official MCP Registry as io.github.StulkovLD/voicely.

Teach the agent the whole playbook with the skill:

bash
mkdir -p ~/.claude/skills/voicely && \  curl -fsSL https://voicely.art/skill/SKILL.md -o ~/.claude/skills/voicely/SKILL.md

voicely mcp speaks standard stdio MCP (JSON-RPC 2.0, fully offline) and exposes four tools:

ToolWhat it does
transcribe_fileTranscribe an audio/video file (optional speaker diarization)
list_transcriptsList saved transcripts (dictations / calls / files), newest first
get_transcriptRead a transcript by id or alias (last, last-call, …)
get_last_callRead the most recent call transcript

voicely connect uses each harness's own mcp add command and never hand-edits a config file it doesn't own. Restart the agent afterward and ask it: "transcribe ~/Downloads/interview.m4a and pull the action items", "look at my last call and draft a project plan", "what did I dictate earlier?". The skill covers bootstrap from zero, online video via yt-dlp (YouTube / TikTok / Instagram) and "watching" a video by pairing word-level timestamps with extracted frames. Everything stays on the machine.

Manual config — register voicely mcp as a stdio server. The exact file differs per harness; the shape is always command: voicely, args: ["mcp"]:

HarnessWhereHow
Claude Codeplugin or claude mcp addclaude mcp add voicely -- voicely mcp (or the bundled plugin)
Codex~/.codex/config.toml[mcp_servers.voicely]
command = "voicely"
args = ["mcp"]
Cursoruser settingscursor --add-mcp '{"name":"voicely","command":"voicely","args":["mcp"]}'
Hermes~/.hermes/config.yamlhermes mcp add voicely --command voicely --args mcp
OpenClawopenclaw.jsonopenclaw mcp set voicely --command voicely --args mcp
Anything elseits MCP config{"mcpServers":{"voicely":{"command":"voicely","args":["mcp"]}}}

There is no daemon: the server loads the speech model itself on the first transcribe_file call.

Build from source

macOS 14+ on Apple Silicon and the Xcode Command Line Tools (xcode-select --install):

bash
git clone https://github.com/StulkovLD/Voicely.gitcd Voicely
swift build -c release --product Voicelyswift build -c release --product VoicelyCLI
.build/release/Voicely              # the menu-bar app.build/release/VoicelyCLI setup     # exposes the `voicely` command

In SPM the CLI product is VoicelyCLI, not voicely: on case-insensitive APFS a voicely product would collide with the app binary Voicely. The voicely command is created by setup, in a directory with no such collision.

Speech model

Parakeet TDT 0.6B v3 (NVIDIA, CC-BY-4.0), running on-device through FluidAudio's CoreML port: about 470 MB on disk, 25 European languages including English and Russian — switching languages mid-sentence works — natively punctuated, roughly 30× realtime on Apple Silicon. Speaker diarization uses FluidAudio's pyannote community-1 segmentation and WeSpeaker embeddings, also on-device. Models download on first use; no Hugging Face account or token is required.

Transcripts

Everything is plain files under ~/Documents/Voicely/ — readable by you, your agent and any other tool.

Dictation (dictations/):

markdown
---type: dictationdate: 2026-03-19T22:30:00+00:00source_app: Telegram---
Your transcribed text here.

Call (calls/<id>/transcript.md): one block per speaker turn; your own microphone is always You. Word-level timing lives in transcript.jsonl next to it; the audio is kept as mix.wav (what was transcribed) plus the raw mic.wav and system.wav.

markdown
---type: calldate: 2026-08-19T18:02:11+03:00source_app: zoom.usduration: 12:40speakers: You + 2---
[00:08] YouHey, how's the project going?
[00:11] Speaker 1Almost done, pushing to prod tonight.
[00:17] Speaker 2I'll review the PR after lunch.

Architecture

Option+Space ──> MicRecorder ──> Parakeet V3 (CoreML, on-device) ──> CursorInjector                     │                                  AX insert (native) → ⌘V, clipboard restored → typed text                     v                                                          │               AudioOverlay                                                     v            (liquid glass pill)                                          TranscriptStore                                                                   (~/Documents/Voicely/…)
Record Call ──> mic + ScreenCaptureKit ──> mixdown ──> Parakeet V3 ──> FluidAudio diarization ──> speaker-turn markdown                                          (one track)                 ("You" by mic activity)     + word-level JSONL + WAV

Stack: Swift 6 + AppKit + FluidAudio (Parakeet TDT v3 CoreML + diarization) + ScreenCaptureKit (system audio). All processing happens locally. No data leaves your machine.

Autostart on login

System Settings → General → Login Items → + → add Voicely.app.

Acknowledgements

  • Parakeet TDT 0.6B v3 by NVIDIA (CC-BY-4.0) — the speech model.
  • FluidAudio (Apache-2.0) — CoreML ports of Parakeet and the on-device diarization pipeline.
  • Diarization models — pyannote segmentation and WeSpeaker embeddings (CC-BY-4.0).
  • WhisperKit (MIT) — the on-device inference library this project grew up on.

License

MIT

来源:README.md,提交 76daae3

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.4.2最新Sep 23, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分