一只几十元遥控器,被重新定义成 Mac 输入设备
这个项目比较有意思的地方,并不是简单地“把蓝牙麦克风接到 Mac”。
它针对的是小米蓝牙遥控器 2 Pro,也就是 RC003。遥控器本身已经具备蓝牙通信、语音键以及完整的 HID 按键能力,项目作者通过 macOS 原生 API 把这些能力重新利用起来。
安装 Remote Mic 后,按住遥控器上的语音键就可以讲话。语音数据通过蓝牙传输到 Mac,再经过项目自己的音频处理链路输出到虚拟音频设备。这样,Mac 上的听写软件、语音输入工具或者其他需要麦克风的应用,就可以把这个遥控器当成普通输入设备使用。
它的另一个特点是遥控器并没有被限制在“麦克风”这个用途上。
方向键、确定、返回、主页、菜单、TV、电源以及音量键都可以重新定义。例如 TV 键可以映射成 Command-Tab,主页键可以显示桌面,返回键可以模拟 Delete,音量键直接控制系统音量,也可以将某个按键配置为打开 Chrome、Safari、Xcode、Cursor、Claude、Codex、微信等应用。
这使它实际上变成了一个“小型无线控制终端”。
技术上最值得看的,是蓝牙语音链路
项目并不是依赖普通蓝牙音频协议来完成语音传输,而是直接处理 RC003 的 ATVV 通道。
项目源码中针对 RC003 定义了专门的 Bluetooth Service、Transmit、Audio 和 Control 通道,并通过 CoreBluetooth 完成设备扫描、连接、能力协商和自动重连。项目只接受特定的设备名称或者包含 ATVV Service UUID 的设备,因此并不会简单地把所有“小米蓝牙设备”都当成目标。
语音数据使用 IMA/DVI ADPCM 编码,项目负责完成帧累积、解码和 PCM 后处理。目前音频链路固定采用 16 kHz 单声道格式。
解码后的数据还会经过平滑和增益处理,然后交给 CoreAudio。
这里可以看到这个项目真正的技术价值:它并不是在做一个普通的 GUI 工具,而是在 macOS 底层把蓝牙 HID、蓝牙音频协议和虚拟音频设备连接起来。
为什么还需要虚拟麦克风
这是项目里非常关键的一部分。
蓝牙遥控器传来的语音数据,并不会天然成为 macOS 所有应用都能直接选择的“麦克风”。因此项目提供了一个名为 MiRemoteV 2ch 的虚拟音频设备。
安装程序会在:
/Library/Audio/Plug-Ins/HAL/
安装对应的 MiRemoteV2ch.driver。
这个驱动实际上是在 BlackHole 2ch 的基础上进行定制,项目对 Audio Device transport、Bundle Identifier、设备 UID 等进行了修改,让系统能够把遥控器语音识别成一个普通的音频输入设备。
所以完整链路可以理解成:
小米遥控器 → Bluetooth / ATVV → Remote Mic → PCM 音频 → MiRemoteV 2ch → macOS 应用
例如在输入法或者语音工具中选择 MiRemoteV 2ch,就能够直接接收遥控器上的语音。
对 AI 语音输入尤其有意思
这个项目实际上很适合现在的 AI 工作流。
项目 README 特别提到了 Typeless 等语音工具,也提供了针对不同输入方式的兼容模式。因为 RC003 的语音键默认属于“按住说、松开结束”,而部分语音工具使用的是“按一下开始、再按一下结束”。
Remote Mic 可以在兼容模式下,把遥控器的语音键转换成 Fn 的点按事件,让这些软件能够正常工作。
但这里有一个限制:遥控器松开语音键后,硬件本身就不会继续发送语音数据,所以这个方案依然属于 Push-to-Talk,并不是持续录音设备。
对于需要频繁进行 AI 对话、代码口述、会议记录或者语音输入的人来说,这种交互方式其实非常自然。
遥控器本身还能变成快捷键面板
项目的按键映射系统也比较完整。
普通按键可以配置单击、双击和长按三个层级的行为。
动作可以是键盘快捷键、系统音量、播放控制、启动应用,也可以录入任意自定义快捷键。
例如可以设计成:
遥控器语音键负责 AI 语音输入;
TV 键切换应用;
主页键显示桌面;
确定键作为回车;
返回键作为删除;
音量键调整系统声音。
这样一只电视遥控器实际上就可以承担一部分 Stream Deck 或无线快捷键控制器的功能。项目还针对按键重复、双击识别以及长按时间做了处理,避免一次按键同时触发多个动作。
对 Mac 用户来说,安装门槛并不高
目前项目主要面向 Mac。
Apple Silicon Mac 要求 macOS 14 或更高版本,Intel Mac 则要求 macOS 13 或更高版本。官方正式发布包目前以 Apple Silicon 为主,同时提供 Intel 的预览版本。
首次使用时,需要将遥控器进入蓝牙配对状态,然后在 Mac 中连接 RC003。之后 Remote Mic 会请求蓝牙权限;如果使用完整的按键映射功能,则还需要输入监控和辅助功能权限。
从 v1.3.0 开始,正式发行包采用 Apple Developer ID 签名并经过 Apple 公证,安装体验也比很多个人开发的 macOS 小工具更加完整。
开源项目本身也比较值得研究
从代码结构来看,这是一个相对完整的 Swift macOS 原生项目。
主要模块包括:
XiaomiBluetoothBridge 负责蓝牙连接和 ATVV 通信;ATVVProtocol 负责语音协议、ADPCM 解码和 PCM 处理;AudioOutput 负责 CoreAudio 输出;HIDRemoteMonitor 负责遥控器 HID;KeyboardInjector 负责键盘和快捷键注入;BridgeAppModel 负责整个系统状态协调;SettingsView 则负责 SwiftUI 设置界面。
项目还针对 macOS 26 使用了新的 Liquid Glass 界面,同时对旧版本 macOS 保留兼容样式。
这种结构对于研究“SwiftUI + CoreBluetooth + CoreAudio + HID + HAL Driver”这一整套 macOS 系统级开发非常有参考价值。
隐私设计也比较直接
项目明确表示,语音不会上传或者保存,统计数据只存储在本机。
它需要的权限主要是蓝牙、输入监控和辅助功能,分别用于连接遥控器、读取普通按键以及向当前应用发送按键操作。项目也声明不会在日志中记录语音内容、蓝牙地址或者外设标识。
这对于一个定位于语音输入的桌面工具来说,是比较重要的设计。
一个值得关注的方向
这个项目真正有价值的地方,可能不是“小米遥控器变成麦克风”本身,而是它提供了一种思路:
低成本蓝牙硬件 + 自定义协议解析 + 虚拟音频设备 + HID 映射 + AI 输入
最终可以变成一个非常便宜的 AI 硬件入口。
特别是在现在大量 Mac AI 工具都开始使用语音输入之后,一只本来几十元级别的电视遥控器,通过软件重新定义之后,就可以同时承担麦克风、快捷键、应用启动器和媒体控制器等多个角色。
项目地址:https://github.com/HD838A/remote-mic-app
官网地址:https://sayall.app
