Mac 語音輸入鎖定繁體輸出:中英夾雜不用切換
說的是國語,Mac 聽寫落下來卻是簡體。為什麼裝置端辨識會這樣、語言包該下哪一個,以及怎麼在 ListenIn 設一次「鎖定繁體」,讓中英夾雜的句子在清稿之後都是繁體。
你對著 Mac 說「這個 feature 下週上線」,落到游標處的是「这个 feature 下周上线」。傳給台北或香港的同事之前,先過一次繁簡轉換的捷徑,或者乾脆重打。
這不是你漏掉了哪個設定。字形是在一個你看不到的階段決定的,而修正它的位置在另一個階段。ListenIn 在清稿設定裡有一個「中文字形」開關,選「鎖定繁體」之後,清稿結果會重寫成繁體再落到游標處。下面說為什麼修在這一層,以及它管不到什麼。
症狀:說的是國語,出來的是簡體
三件事通常一起出現:
- 中文全部是簡體字。
- 句子裡的英文原封不動:feature 還是 feature。
- App 裡沒有任何一處寫著「簡體」,它就是那樣寫。
第三點是線索。沒有人把你的字「轉」成簡體:把聲音變成文字的那個元件本來就寫簡體,後面沒有一步改它。
原因:字形由辨識器決定,設定卻都在清稿這一層
Mac 上的語音輸入 App 分兩段。第一段是辨識:音訊進去,一串文字出來。第二段是文字處理,ListenIn 叫它清稿:加標點、去語助詞、收改口、修同音錯字。你在設定頁看到的選項幾乎都屬於第二段,而第二段只能繼承第一段給的東西。
字形在第一段就定了。Apple 把國語聽寫做成地區變體,一個變體只寫一種字形:「國語(中國大陸)」寫簡體,「國語(台灣)」寫繁體。載入哪個變體是 App 決定的,跟你 Mac 的地區設定無關。
ListenIn 的介面目前只有英文和簡體中文兩種;這篇文章用繁體寫給習慣這個字形的讀者,設定名稱則照簡體介面的字樣寫,英文名稱附在括號裡。
ListenIn 向 Apple 語音引擎請求的是 zh-CN,也就是中國大陸的國語模型。设置 › 听写 › 识别 裡的「识别语言」(Recognition language)只有兩個選項:「中文(含中英混说)」和「英语」,沒有台灣或香港的變體。所以原始轉寫到手時就是簡體。原因是下一節的音訊邊界,不是偏好。
Apple 的國語變體,和「辨識必須留在 Mac 上」的限制
ListenIn 在它用到的兩條 Apple 引擎上都強制裝置端辨識:macOS 26 上的新引擎,和 macOS 14、15 上的經典引擎。音訊永遠到不了 ListenIn 的清稿服務,經典引擎也不被允許改走 Apple 的雲端語音服務。完整邊界在安全頁。
裝置端辨識的前提,是 Apple 為那個變體出過裝置端模型。Apple 的 macOS 功能適用範圍頁(台灣版,2026-09-18 查閱;頁面描述的是 macOS Golden Gate)有一個區塊叫「聽寫:裝置端聽寫和非固定模式聽寫」,中文條目是「國語(中國大陸)」「粵語(香港)」「粵語(簡體,中國大陸)」。「國語(台灣)」出現在一般的「聽寫」清單裡,不在裝置端這份清單上;英文版頁面的國語條目相同。這些清單會隨 macOS 版本變動,請對照你自己的版本再看一次。
辨識要留在 Mac 上,清單上那個國語模型就寫簡體。
macOS 14 和 15 還多一個條件:請求的語言必須先下載,否則辨識直接失敗,不會悄悄改走雲端。Apple「在 Mac 上聽寫訊息和文件」說明頁(台灣版,2026-09-18 查閱)給的位置是系統設定 › 鍵盤 › 聽寫,按「語言」旁的「編輯」,然後「選取語言和地區」。要下的是中國大陸的中文,也就是 ListenIn 實際請求的那個,就算你的 macOS 是繁體介面也一樣。看到「听写语言不可用」這張卡,按系統版本的修法在Mac 聽寫沒反應、不出字?先查語言包。只下載了台灣或香港變體的 Mac 我們還沒測過;你的機器是這樣的話,到意見回饋頁告訴我們。
辨識器就這樣定了。字形沒有。
字形鎖定:選一次「锁定繁体」
清稿是文字處理,字形本來就該在這裡管。ListenIn 在 设置 › 清稿 › 「力度与语言」下有一個「中文字形」(Chinese script)選項,三個值:「自动(跟随语音)」「锁定简体」「锁定繁体」。
「自动(跟随语音)」是預設:清稿絕不改動轉寫的字形。配上大陸模型,就是簡體進、簡體出,也就是你遇到的問題。改成「锁定繁体」,每一次清稿結果都會先重寫成繁體,再落到游標處。
光有選項不算保證,「請模型好好寫」也不算。實際靠兩層:
- 清稿模型收到一條指令:所有中文輸出必須是繁體,字形轉換是重新書寫,不是翻譯。
- 走 ListenIn 內建清稿服務時,模型結果回傳前還要過一次確定性的轉換器(OpenCC)。模型漏了一個簡體字,轉換器補上。
範圍要說清楚,因為這個功能很容易被想多:
- 鎖定改的是寫出來的字形。它不改變辨識器聽到什麼,也不改變載入哪個模型。聽錯的字,會以繁體寫成錯的那個字;聽錯是下面詞典的事。
- 英文原樣通過:英文單字、產品名、程式碼識別字,說什麼落什麼。
- 轉換器按詞轉,不是逐字對照表:「头发」是「頭髮」,「出发」是「出發」。它不帶地區詞彙表:你說「軟體」它寫「軟體」,你說「軟件」它寫「軟件」,不會替你換。
- 它用的是 OpenCC 的標準繁體字表,不是台灣或香港的地區標準。已經是繁體的字它不碰,「這裡」「為什麼」「看著」都原樣通過;補漏網簡體字時用的是它自己的寫法:「这里」補成「這裏」,「为」補成「爲」,「着」維持「着」。一個例外是「台」,它會寫成「臺」,模型已經寫好「台灣」也會變成「臺灣」。在意的話,到意見回饋頁說一聲。
- 三檔清稿力度都套用,包括「忠实(只加标点)」;Ask Anything 的結果也帶同一條字形指令。
- 用自己的 API key 或本機 Ollama 模型時,指令送到你的模型;確定性轉換器只在內建服務上跑。
- 清稿完全跑不了的時候,離線或額度用完,原始轉寫仍會落下,HUD 會標出來,例如「清稿失败,已插入原文(检查网络或 Key)」。原文就是辨識器自己的文字,是簡體。鎖定屬於清稿,這條路徑上不會跑。
這就是這個設計的代價:沒經過文字處理的文字,鎖定管不到。
中英夾雜一句話說完,不切模式
另一半的抱怨是中英夾雜。每句話前都要先選語言的 App,碰上「幫我看一下這個 PR 的 CI 為什麼 fail」就沒法用了。
ListenIn 把混著說的一句話當成一句話處理。「中文(含中英混说)」是一個辨識設定,沒有另一個英文模式要切過去;清稿也是照著「code-switching 就保留 code-switching」寫的:英文部分不翻譯,整句不強迫收成一種語言。要翻譯,是另一個明確的「翻译」(Translate)模式。
夾在中文裡的技術詞另有內建技術詞庫幫忙,它的迴歸測試案例包括 OAuth、regex、JSON、localhost、kubectl、SwiftUI、Vercel。開了字形鎖定,「這個 feature 下週上線,先 deploy 到 Vercel」回來就是這個樣子:繁體中文,英文識別字完整。對著 Claude Code 說「幫我把這個 function 改成 async,然後跑一次 test」也一樣。細節在中英混說聽寫頁。
個人詞典:悠遊卡、八達通,和你自己的識別字
字形鎖定修的是字。辨識器從沒聽過「悠遊卡」「八達通」或你公司的名字,它幫不上忙。這是「个人词典」(Personal Dictionary)的工作,從 设置 › 清稿 › 「管理个人词典…」或「词典」分頁進去。
機制直說:你的詞條會作為已知詞送進文字清稿。轉寫裡某個詞明顯是其中一個的近音,清稿就修成你的寫法;聲音對不上,就不動。ListenIn 不會重新訓練或偏置 Apple 的新辨識器。詞條照你想要的寫法輸入;開著鎖定,輸出反正是繁體,英文識別字保持原樣。
這份清單很少需要手動建。在落下的文字裡改掉一個詞,這條修正就會被記住,下次由清稿套用;同一個詞在文件其他地方也出現,會跟著「全部替换」的提議。詞條和修正記錄備份在同一個檔案:這台 Mac「导出…」,下一台「导入…」,匯入是合併,不會清掉已有的。完整流程在語音輸入專有名詞識別錯誤怎麼辦。
四步設定,以及什麼會離開 Mac
完整設定:
- 在 macOS 14 或以上安裝 ListenIn,Apple Silicon 或 Intel 都可以。
- 设置 › 听写 › 「识别语言」→「中文(含中英混说)」。
- 设置 › 清稿 › 「中文字形」→「锁定繁体」。
- macOS 14 或 15 上,系統設定裡還沒有中國大陸的中文聽寫語言的話,先下載。
每一步音訊都留在 Mac 上。離開的是文字,去你選的三個地方之一:ListenIn 內建清稿服務、你自己 key 的供應商,或本機的 Ollama 模型,最後這種讓整條流程零雲端。第三種配法在用 Ollama 在 Mac 上做全本機聽寫。
免費版每週 8,000 個清稿詞,不用帳號、不用信用卡;Pro 見價格區塊。fn 和游標之間其他的事,在Mac 聽寫頁。
第 3 步設好之後文字還是簡體,那是 bug。附上你的 macOS 版本回報,我們會查。
在自己的 Mac 上试一下
免费档不用注册;音频不出本机。