remote-mic-app README

The project's README from github.com/HD838A/remote-mic-app. As one markdown file: README.md.

无线麦

English

官网 · 配置教程

GitHub Stars

无线麦 APP 微信群二维码
微信群二维码
微信扫码加入交流群
无线麦小红书二维码
小红书
扫码关注无线麦

视频介绍

《可能是我最近用过最不像工具的工具》展示了无线麦如何把蓝牙语音遥控器变成随手表达、控制 Mac 和与 AI 协作的新入口。

《可能是我最近用过最不像工具的工具》视频封面

点击封面或前往 Bilibili 观看原视频

视频作者:可乐不甜的跑焦日记

同作者制作的小米蓝牙遥控器 2 Pro 3D 打印外壳:在 MakerWorld 查看

Windows 版本

无线麦 App Windows 版本的第一个预览版已经发布,当前以基本功能为主:

欢迎下载体验。无线麦 App Windows 版本理论上不会被游戏反作弊或杀毒软件警告;如有顾虑,建议先使用 AI 扫描源码,再安装试用。

下载 Windows 预览版

iOS App 公测:加入 TestFlight 公测

Mac App 继续采用官网下载方式分发,Mac App Store 上架暂时暂停;当前 App Store 上架重点只包含 iOS App 与其内嵌的 Apple Watch App。

无线麦——为 Vibe Coding 而生的语音遥控器

无线麦,不只听你说。还能替你做,帮你记。

开口就输入,一键做更多,说过有回眸。

无线麦 SayAll 是一款 macOS 应用,可以把兼容的蓝牙语音遥控器变成 Mac 的无线麦。它先让语音输入随手可得,再把常用操作、不同 App 的键位方案和你主动保存的表达连接起来。

无线麦使用 SwiftUI 原生开发,常驻运行时 CPU 占用率低于 0.5%,内存占用约 50 MB,比一个 Chrome 标签页还要轻量。

连接与语音设置页

无线麦,不只听你说

开口就输入

按住说,松开停。开会不发言、听歌不暂停,也能把文字送进正在使用的 App。无线麦不会为了语音输入自动修改 Mac 的默认输入或输出设备。

一键做更多(新增能力,真实环境验证中)

组合动作可以把多个受支持的本机步骤依次执行,再绑定到遥控器的单击、双击或长按。它面向稳定、重复的工作流,不等于任意脚本、无限自动化或远程执行。

切得准(候选能力,真实环境验证中)

同一只遥控器可以保存多套完整键位方案。你可以手动切换,也可以主动开启按 App 自动匹配;没有匹配规则时回到默认方案。当前仍在进行真实遥控器和第三方 App 的完整验证。

说过有回眸(候选能力,等待完整真实语音验收)

主动开启“记录回眸”后,无线麦只保存通过 SayAll 输入并最终稳定出现的文字,按 App 和日期整理在当前 Mac。开启“本地 Agent 访问”后,可以为每个 AI 客户端创建独立、可撤销的只读 MCP 授权。

使用要求

下载与安装

Apple Silicon 安装包名为 Remote-Mic-<版本>.dmg,Intel 安装包名为 Remote-Mic-<版本>-Intel.dmg,两者不能混用。

打开 DMG 后只需双击唯一的 Install SayAll.pkg;Intel Mac 使用 Install SayAll Intel.pkg。安装器会把无线麦SayAll.app 安装为 /Applications/SayAll.app,并检查现有 MiRemoteV 2ch:健康且兼容时原样保留,缺失或不可用时才安装或更新。只需要 App、已经使用其他回环音频设备的高级用户,可从同一 Release 下载 App-only ZIP。

自 v1.3.0 起,正式发布包使用 Apple Developer ID 签名并已完成 Apple 公证。请只从官网 Cloudflare CDN 固定入口或本项目 GitHub Releases 下载;如需核验,请使用同一 GitHub Release 中的 Remote-Mic-<版本>.dmg.sha256,它会按文件名列出两种架构的 DMG。

首次使用

开发、检查或移植首次设置流程时,请先阅读 SayAll Onboarding 跨平台产品规范;具体系统差异见 macOS 与 Windows 平台附件。

  1. 在“系统设置 → 蓝牙”中打开蓝牙。
  2. 同时长按遥控器的“主页”和“菜单”键,使遥控器进入配对状态。
  3. 在 Mac 上连接名称为 MI RC、Xiaomi Bluetooth Remote 2、Xiaomi Bluetooth Remote 2 Pro 或“小米蓝牙语音遥控器”的设备。
  4. 启动 SayAll.app,按提示允许蓝牙权限。
  5. 如果需要自定义普通按键,再允许“输入监控”和“辅助功能”。授权后请完全退出并重新打开应用。

“连接与语音”和“按键映射”的设备卡片优先显示系统蓝牙设置中的自定义名称;同名设备从 1 开始编号,未改名设备保留原有型号编号。修改名称后,返回无线麦或重新打开相关页面即可刷新;离线设备保留上次读到的名称。当前系统名称同步覆盖小米遥控器和苹果遥控器,A2854 的独立系统 API 读取已验证,候选 App 的完整兼容性仍待验收。

未连接任何设备时,菜单栏图标呈灰化外观,仍可点击。实体遥控器、iPhone、Apple Watch 或网页版任一有效连接后恢复正常显示;传输语音时显示活动图标。悬停可查看当前状态,已连接不代表音频或输入权限已就绪。

应用启动后会显示 Dock 图标并常驻菜单栏:

应用普通启动时默认打开主面板。设置面板左侧栏底部的“关于”页面提供版本、检查更新、版本历史、术语表、GitHub、语言、Dock 显示和启动行为选项。关闭“启动时自动打开主面板”后,普通启动仅保留菜单栏入口;更新完成并重启时仍会无条件显示主面板。关闭“在 Dock 中显示应用图标”后,应用仍会保留菜单栏入口,可随时重新打开设置。

“应用语言”会完整展示“跟随系统”“简体中文”和“English”三个选项。设置窗口、状态、菜单和内置帮助会随选择刷新;系统权限提示和第三方界面仍会在下次打开时按 macOS 自身的语言显示。

应用每天自动检查一次更新,发现新版本后由用户确认是否安装;不会静默下载或自动安装。“关于”页面和右键菜单中的“检查更新…”均可随时手动检查。“关于”页的“检查预发布版本”默认关闭;开启后,自动检查和手动检查都会包含 GitHub 上最新的 pre-release 候选版本。Sparkle 仅更新应用本体,兼容麦克风驱动仍由 DMG 中的安装包管理。旧版如果仍安装在 Remote Mic.app 或 无线麦.app 路径,应用内更新会沿用原路径;要迁移到标准 SayAll.app 文件名,请运行一次新版 DMG 中的安装 PKG。

使用语音输入

  1. 打开“连接与语音”页面。
  2. 点击“刷新音频设备”。
  3. 选择 MiRemoteV 2ch,或选择你已经安装的其他回环音频设备。
  4. 在需要听写或语音输入的应用中选择同一个设备作为麦克风。
  5. 单击目标输入框,按住遥控器语音键说话,松开后结束。

在“按键映射”页的“语音键”区域可以选择语音触发方式:默认的 Fn/地球键、左 Command 长按、右 Command 长按、左 Option 长按或右 Option 长按。Fn/地球键保持旧版本行为;修饰键模式需要无线麦的“辅助功能”权限,并会在语音开始时按下所选按键、结束时释放。目标语音应用必须支持对应的单独按键长按;许多应用会把左右同侧按键合并为通用修饰键,需在目标应用中实际测试。长按期间同时按其他键可能触发修饰键快捷键。

默认使用 Fn,是为了直接兼容豆包、微信等 Fn 长按语音入口和 Typeless 的 Fn 点按入口,同时让遥控器“按住采音、松开停止”的生命周期与快捷键一致。技术上可以继续扩展 F18、F19、F20 等低频键,但当前版本不支持任意自定义语音键:目标语音应用也必须配置同一个键,而且 RC003、iPhone、Apple Watch、网页版、权限与输入源切换都要共享同一套成对按下/释放逻辑。普通遥控器按键仍可单独配置 F1–F20。

语音键不承担短按、双击或长按附加动作,只负责按下即开始、释放即结束的实时语音会话。需要聚焦前台 App 输入框时,请在普通按键的“自定义动作”中选择“聚焦输入框”;该动作使用 macOS Accessibility,不读取输入内容。

如果想先确认音频链路是否正常,可以点击“发送 1 秒测试音”,或在 QuickTime Player 的“新建音频录制”中观察输入电平。

Typeless 兼容

Typeless 等点按 Fn 开始、再次点按结束的语音工具,与小米蓝牙遥控器 2 和 2 Pro 默认的 Fn 长按行为不兼容。在“按键映射”的语音键区域开启“语音键模拟 Fn 点按”后,无线麦会在语音流开始和排空结束时各发送一次 Fn 点按。Typeless 和无线麦仍需选择同一个回环设备,并需授予无线麦“辅助功能”权限。

该模式仍然要求按住小米蓝牙遥控器 2 或 2 Pro 语音键说话、松开结束;这两款遥控器的固件在松开语音键后都不会继续发送麦克风音频,因此这不是持续录音或免按键模式。开关默认关闭;豆包输入法等使用 Fn 长按的工具应保持关闭。权限或遥控器 HID 映射不完整时,模式会自动关闭并恢复默认 Fn 长按映射。

豆包输入法找不到普通虚拟麦克风时,请使用 DMG 中的 Install SayAll.pkg,然后在 SayAll.app 中选择 MiRemoteV 2ch。详细步骤见豆包输入法兼容说明。

豆包输入法 Mac 版选择 MiRemoteV 2ch 麦克风

遥控器与语音工具的搭配

不同遥控器的收音方式不同:小米遥控器只能按住收音;Chromecast 语音遥控器既支持按住,也支持「按一下开始、再按一下结束」;Siri Remote 另有触摸面。Mac 端的语音工具同样分两类:有的按住说话,有的按一次切换。两边不是同一类时会出现「按一下结束没生效、要再按一下」或「按下没说几句就结束」。

各款遥控器、各款输入工具的能力,以及每种组合该用哪种模式(包括「语音键模拟 Fn 点按」要不要开),见遥控器与输入工具能力矩阵。

自定义遥控器按键

按键映射设置页

打开“按键映射”页面并启用自定义映射后,可以修改方向、确定、返回、主页、菜单、TV、电源和音量键的功能。

每个普通按键都可以设置单击动作,并可额外设置双击和长按动作。动作支持键盘操作、系统音量、播放控制、打开当前 Mac 已安装的常用应用、聚焦前台输入框,以及任意自定义键盘快捷键。自定义快捷键既可以直接选择复制、粘贴、聚焦搜索等常用组合,也可以在页面内的标准键盘选择组合键、主键、F1–F20、导航键、数字键盘或单独的左右修饰键;仍保留真实键盘录入入口。

“打开自定义 APP”可以从本机选择任意 .app,并选择只打开应用、激活后发送该应用的聚焦快捷键,或记录一次目标输入框后自动聚焦。目标应用升级后如果输入框结构变化,请重新记录;无线麦不会使用固定屏幕坐标,也不会记录输入框中的文字。

语音键始终用于语音输入,不参与普通按键映射;触发方式可在语音键区域选择 Fn/地球键、左 Command、右 Command、左 Option 或右 Option 长按。

使用统计

“统计”页面可以按日、周或全部范围查看遥控器按键次数、语音时长,以及从当前版本开始记录的最长单次语音排行。所有统计数据仅保存在本机,不会上传。

无线麦使用统计页

AI / Agent 本地配置

无线麦SayAll.app 可以在用户明确授权后,通过随 App 安装的 Swift MCP Helper,让 Codex、Claude Code、Cursor、OpenCode 等客户端只读访问本机“回眸”历史。用户无需安装 Node.js 或其他开发依赖。

需要由 AI 协助完成安装、授权、客户端连接和验证时,请让 AI 阅读:AI 安装与 MCP 配置指南。

权限与隐私

无线麦不会上传或保存语音,不会自动修改系统默认输入、输出设备,也不会在日志中记录语音内容、蓝牙地址或外设标识。

卸载

  1. 退出无线麦。
  2. 从同一 GitHub Release 下载并运行 SayAll-<版本>-Uninstaller.pkg。

卸载器会核对 Bundle ID,然后把已识别的 SayAll.app、历史 Remote Mic.app / 无线麦.app 和 MiRemoteV 2ch 移到 macOS 废纸篓,需要时可恢复。它不会修改 BlackHole 或无线麦的本地设置;同名但无法确认归属的内容会保留在原位。

遇到问题

请先查看排障指南。首次安装的完整步骤见首次安装说明。

所有人开发新功能前,包括仓库作者、维护者、外部贡献者和自动化 Agent,都必须阅读并遵守新功能开发规范。

开发、构建、协议、测试和发布信息见技术文档;分支与 PR 管理见分支与提交管理策略;新增或重命名仓库文件前请阅读文件命名规范。

后续开发计划见 TODO。

⭐ Star History

Star History Chart

☕️ 请我买 Token

如果「无线麦 SayAll」对你有帮助,欢迎自愿请我买一点 Token。

这些支持会用于支付 AI 开发工具的 Token 费用,帮助我继续为大家开发新功能、优化已有功能、修复问题,让这个项目能够持续迭代。

赞赏完全自愿,不影响软件使用,也不构成任何服务承诺。金额随意,量力而行;无论是否赞赏,都感谢你的使用、反馈和分享。

谢谢你支持「无线麦 SayAll」继续变得更好。

微信赞赏码
微信

许可与来源

本仓库中的 macOS App、驱动及相关软件代码采用 GPL-3.0-only 许可。iOS App 已由独立私有仓库维护,并继续通过上方 TestFlight 公测入口分发。macOS App 的 Logo 和 App Icon 是需要单独授权的专有品牌资产,详情见 LOGO-LICENSE.md。完整版权和第三方信息见 COPYRIGHT.md 与 THIRD_PARTY_NOTICES.md。

项目最初 fork 自 nijez/open-voice-bridge,现由本仓库独立维护。

MiRemoteV 2ch 的设备命名及让豆包枚举设备的 USB transport 兼容方案参考自 VincentKingHsu/MiRemoteVoice v1.0.0-beta.1(MIT);该项目的兼容驱动同样基于 BlackHole。本项目不复用 MiRemoteVoice 的二进制替换脚本,而是从 ExistentialAudio/BlackHole v0.7.1(固定提交 e2b22aaaba4e507a097131704bf96dabc004d9cf)源码独立派生构建 MiRemoteV2ch.driver,适用 GPL-3.0。它使用独立标识,可与已安装的 BlackHole 并存,不覆盖或删除其文件。

官网

其他作品

开发者文档

开发者、贡献者和自动化 Agent 请从 项目文档导航 开始。

remote-mic-app (HD838A/remote-mic-app)

remote-control
Searching Database…

What is this?SayAll (无线麦) is a macOS app that turns compatible Bluetooth voice remotes - specifically the Xiaomi Bluetooth Remote 2 and 2 Pro - into a wireless microphone for your Mac, letting you dictate text, trigger key-mapped actions, and feed voice into whatever app you're using.
Does it replace my microphone outright, or does it rely on a virtual audio device?It installs a custom loopback audio driver (MiRemoteV 2ch, derived from BlackHole) that carries the remote's voice; you select that device as the microphone in whatever app you're dictating to, or use your own existing loopback device.
Do I need the Xiaomi remote, or will other Bluetooth remotes work?You need a Xiaomi Bluetooth Remote 2 or 2 Pro plus an Apple Silicon Mac on macOS 14+ or an Intel Mac on macOS 13+; for voice input you also need the bundled microphone driver or an existing loopback device like BlackHole 2ch.
Are all the advanced features (combo actions, per-app key profiles, history recall) fully working yet?No - combo actions, per-app key-profile auto-switching, and the voice history recall feature are explicitly flagged as newly added or candidate capabilities still being validated against real remotes and third-party apps.
Is there a Windows or iOS version too?Yes - a basic Windows preview build exists (voice input limited to the WeChat IME, triggered with Ctrl+Win), and an iOS app with an embedded Apple Watch app is in TestFlight public beta.
Is the whole app open source under GPL, including the logo?The macOS app, audio driver and related code are licensed GPL-3.0-only, but the Logo and App Icon are proprietary brand assets that need separate authorization.
What is the 回眸 (Recall) feature?Recall is an opt-in local log of text you successfully dictated through SayAll, organized by app and date on the same Mac, so you can revisit what you said earlier.
Can AI coding agents like Claude Code use this?Yes, after enabling local Agent access, SayAll runs a bundled Swift MCP Helper giving clients like Codex, Claude Code, Cursor or OpenCode read-only access to your recall history over local stdio, with no Node.js required.
Does it work with Typeless or other tap-to-toggle dictation tools?The Xiaomi remotes only push-to-talk by default, but enabling 'simulate Fn tap' in key mapping makes SayAll emit an Fn tap at the start and end of each voice session so tap-based tools like Typeless work too.
How do I uninstall it?Quit SayAll, then download and run the matching SayAll-Uninstaller.pkg from the same GitHub Release; it moves SayAll.app and the MiRemoteV 2ch driver to the Trash without touching BlackHole.
What are similar projects?FluidVoice, kinesis, mactap-app, noop, forel, textream, iMCP, Sapphire
Creator
HD838A
Size
313.2 MB
Stars
1.9K
Age
2mo
Commits · 90 Days