出门在外,我会用 iPhone 上的 UU 远程连 Mac。电脑连上了,桌面也能操作,但一到需要打字的地方,体验就开始让人烦躁。
手机屏幕本来就小,软键盘一弹出来,远程桌面又被挤掉一块。想多输入几句话,就得在键盘和桌面之间来回切。明明只是想在电脑里输入一段文字,注意力却总花在调整画面上。
后来我想,能不能直接对着手机说话,把声音传给 Mac,让电脑上现有的听写应用来出字?这样手机屏幕就能继续留给远程桌面。
顺着这个想法做出来的工具,叫 Remote Microphone。

图一:声音传输与文字输入的完整路径。
最开始,我考虑过做一个只有语音入口、没有键盘面板的输入法。往下梳理时才发现,我真正需要的,是让远处的 Mac 用上手机麦克风。声音能传过去,电脑上的听写软件就能继续负责识别和输入。
所以现在的分工很直接:UU 远程负责画面和控制,Remote Microphone 把手机声音传给 Mac,文字转换交给 Mac 上的听写应用。
它没有修改 UU 客户端,也没有在远程桌面上再加一个悬浮输入框。我希望用的时候,桌面还是桌面,尽量少一点遮挡。

图二:同一台手机上,UU 负责画面与控制,Remote Microphone 在后台传声。
实际使用时,先在 iPhone 上打开 Remote Microphone,开始传声,然后切回 UU。在 Mac 的听写应用里选好音频输入、开启听写,就可以对着手机说话了。
Mac 接收端会把声音送进 BlackHole 这个虚拟音频设备,听写软件再从这里取声音。Remote Microphone 本身不负责识别文字,最后出字的速度和准确率,也要看搭配的听写软件。
我主要是想在外面用,所以只在同一个 Wi-Fi 下能用还不够。目前通过 Tailscale 连接手机和 Mac,蜂窝网络下的传声也测过了。两端都需要开启 Tailscale,Mac 还要装 BlackHole,第一次配置确实有一点门槛。

图三:通过 Tailscale 连接,并关闭 UU 的电脑声音,避免声音回传形成反馈。
把声音传过去的过程中,也遇到过不少问题。有时手机上的波形在动,Mac 却没反应;有时切换网络后连接超时;还出现过回音越来越大、最后变成啸叫的情况。
其中一个问题是,Mac 的声音经由 UU 从手机扬声器播放出来,又被手机麦克风收进去,绕了一圈传回电脑。所以现在使用前,要先关闭 UU 的“电脑声音 / 远程声音”,避免这条回音路径。
波形显示、音频传输和断线重连也做了几轮调整。不过,还不能说已经稳定到随便装上就能用,我自己也还在继续试。
下面这张就是实际使用时的画面。手机横屏开着 UU,远程桌面完整显示,底部能看到 Mac 听写应用正在工作的状态,没有弹出手机软键盘。

图四:实际使用截图。前三张为逻辑示意,这张是手机上的远程桌面画面。
对我来说,最想要的就是这个变化:需要输入时,可以继续看着完整的电脑画面说话,不用为了打几句话反复打开、收起手机键盘。
代码已经开源了。最初做它是为了解决自己在外面远程打字的问题,放出来也想看看,有没有同样用手机远程操作 Mac、同样觉得输入别扭的人。
源码和使用说明整理在 Remote Microphone 的 GitHub 仓库,有类似需求可以看看。
