逐字稿告訴你說了什麼。對訪談、會議和 Podcast 來說,另一半工作是知道誰說了這句話——語音研究把這個問題稱為說話者分離(speaker diarization)。從 iPhone 1.8.5、Mac App Store 1.3.2,以及官網直接下載的 Mac 版 1.5.1 起,Whisper Notes 的說話者分離完全在裝置上執行。
這篇文章會說明它如何運作、公開與雲端真值對照的實測結果,也會談一個我們無法靠工程手段消除的失敗模式,以及最後採取的做法。
它能做什麼
打開一則筆記——錄音、匯入的音訊或影片、會議錄音——再點一下說話者按鈕。幾秒後,每個段落都會有說話者標籤和時間戳記。
Mac 與 iPhone 上的說話者標籤。點一下句子,就會跳到音訊中的對應時刻。
標籤一開始是「說話者 1」和「說話者 2」;重新命名一次,整份逐字稿都會同步更新。點任何一句話,音訊就會跳到那個時間點,核對引述和原聲會直接許多。
重新命名說話者後,筆記中每個段落的標籤都會更新。
會議錄音會在通話結束後自動執行說話者辨識(可在設定中關閉)。標籤也會保留在匯出內容中:拷貝含說話者的逐字稿會把標籤帶到剪貼簿,SRT 和 VTT 檔案則會把標籤帶進字幕。
說話者分離處理的是聲音而不是文字,因此在 App 支援轉錄的 100 多種語言中,運作方式都一樣。
在 Neural Engine 上執行的 19 MB 模型
說話者分離用三個步驟回答「誰在何時說話」。先把音訊切成人聲片段,再把每個片段轉成聲紋——描述聲音本身、而不是話語內容的精簡向量。最後把聲紋分群:落在同一群的片段會得到相同標籤。
Whisper Notes 採用 pyannote 的 community-1 管線,轉換成 Core ML 後,兩個階段都由 Neural Engine 執行。模型只需下載一次,大小是 19 MB;M 系列 Mac 處理 5.7 分鐘的對話約需 2–4 秒。
音訊 → 人聲片段 → 聲紋 → 分群 → 標籤
每個步驟都在裝置上執行。
對說話者分離而言,這比對轉錄更重要。聲紋是一種生物特徵,辨識人的方式類似指紋。管線在本機執行,表示你、同事和受訪者的聲紋都只在裝置上計算、分群,隨後丟棄,從不傳送到其他地方。
我們實際測了什麼
我們用固定的兩個檔案測試說話者分離。真值由雲端 ASR 與說話者分離服務 ElevenLabs 產生,再經人工核對;評分會把每 10 ms 的語音歸給一位說話者,並採用輸出與參考資料之間的最佳對應。兩個檔案仍是小樣本,因此這些數字只代表方向,不是定論。
第一個檔案代表常見情況:五分鐘英文 Podcast,兩位說話者的音色差異明顯。多數訪談、Podcast 和一對一會議都接近這種條件。
| 雙人英文 Podcast(5 分鐘) | 結果 |
|---|---|
| 影格層級歸屬準確率(10 ms 解析度) | 96.7% |
| 句子層級準確率(你實際讀到的結果) | 99.1% |
| 處理時間,M 系列 Neural Engine | 2–4 秒 |
剩餘的 0.9% 來自三處邊界偏移,總計 3.4 秒,已接近參考資料本身的解析度。在這類素材上,裝置端結果與產生真值的雲端服務相當。
困難案例
第二個檔案刻意選得很難:一段中文訪談節目,兩位男性聲音相近、有室內殘響,主持人短暫插話 19 次,平均每次 2.3 秒。來賓說了 272 秒,主持人只有 43 秒。
自動分群在這裡會塌縮。兩個聲紋太接近,演算法把它們合併,幾乎把整段對話都標成同一個人。我們最初認為更好的模型也許能解決,因此用 CPU 管線比較了兩個專門以中文語音訓練的說話者模型:
| 模型 | 英文 Podcast | 中文困難案例* | 時間(5.7 分鐘音訊) |
|---|---|---|---|
| pyannote community-1(現用,Neural Engine) | 96.7% | 81–82% | 2–4 秒 |
| CAM++(中文訓練,CPU) | 93.9% | 81.2% | 36–103 秒 |
| ERes2NetV2(中文訓練,CPU) | — | 80.5% | 220–290 秒 |
* 已指定說話者人數時的影格層級歸屬準確率。未指定人數時,每個模型都會向單一說話者塌縮。
兩個模型都以相同方式失敗,卻需要 10 到 100 倍的運算量。限制不在模型選擇,而是目前的聲紋嵌入在這類素材上能分辨到什麼程度。
這排除了最直覺的修法,也指向另一個做法:把管線無法推斷的事實直接告訴它——房間裡有幾個人。指定人數後(選單可選 2 到 6 人),困難檔案從塌縮提升到 89% 的句子層級準確率。一般素材下自動偵測是正確的,所以它仍是預設選項。
指定確切人數後重新執行說話者偵測。同一個選單也能匯出保留說話者標籤的 SRT 和 VTT。
修正短暫插話
固定人數後,約一半的剩餘錯誤集中在三秒內的插話。兩秒音訊能提供給嵌入模型的訊號很少;快速交談時,聲紋也會混入相鄰說話者的聲音。
因此分群完成後,管線會重新檢查每個短於 3.5 秒的句子:用只涵蓋該句影格的遮罩重新計算聲紋,和每位說話者的錨點——其最長發言的平均值——比較,只有差距足夠明確時才更換標籤。這一步重複使用既有模型,不需要額外下載。
| 端對端句子準確率 | 修正前 | 修正後 |
|---|---|---|
| 中文困難案例(已指定人數) | 89.0% | 94.8% |
| 英文 Podcast(自動) | 98.5% | 99.1% |
判定門檻設得很保守:兩個檔案合計修正了 21 個標籤,沒有新增任何錯誤。
限制
• 標籤會在錄音結束後出現,不會在通話進行中即時顯示。如果需要會議期間就帶有姓名的即時字幕,Otter 或 Notta 這類雲端服務更合適。
• 多人同時說話時,每個句子只會有一個標籤。
• 相似聲音仍然難以區分。困難檔案在提供人數提示後達到 94.8%,這是目前的上限,不代表問題已經解決。
版本與價格
說話者辨識包含在 $6.99 買斷價格中,也包含 App 的三個轉錄引擎——Parakeet V3、Whisper Large V3 Turbo、SenseVoice——以及本機 AI 編輯。沒有額外方案,也不需要帳號。
• iPhone:App Store,1.8.5 或更新版本。
• Mac App Store:1.3.2 或更新版本。
• Mac 官網下載(DMG):1.5.1 或更新版本,可從 whispernotes.app 下載並免費試用。
想了解會議錄音本身如何運作,請參閱離線會議轉錄文章。