語者辨識是什麼?逐字稿如何區分說話者(Speaker Diarization)

語者辨識(speaker diarization)白話解說:AI 如何在逐字稿中區分說話者、和聲紋辨識有何不同、哪些情況容易出錯,以及如何得到更準確的說話者標籤。

一段音訊波形被切成代表三種聲音的彩色片段,每個片段都對應到逐字稿中標有說話者的一行。

其他語言版本: English, Русский, Українська, Dansk, Deutsch, Español, Français, Italiano, Magyar, Nederlands, Norsk bokmål, Polski, Português (Brasil), Suomi, Svenska, Türkçe, Ελληνικά, עברית, العربية, 한국어, 日本語, 中文(中国), Indonesia, Tiếng Việt

語者辨識(speaker diarization,學術上也稱「語者分離」或「語者自動分段標記」)是自動轉錄中回答「誰在什麼時候說話」的步驟:它把錄音切成片段,把聽起來是同一個聲音的片段歸成一組,再標上說話者 1、說話者 2 等標籤。它不知道任何人的名字,名字要由你,或由早已知道參與者是誰的系統事後補上。在錄音清楚、只有幾個明顯不同聲音的情況下效果很好;遇到多人同時說話、聲音相似、電話音訊和大型團體時就比較吃力。

本文用白話說明語者辨識是什麼、它和聲紋辨識的差別、背後的運作原理、哪些情況會讓它出錯,以及如何取得可以信賴的說話者標籤。

什麼是語者辨識(speaker diarization)?

沒有分段的逐字稿只是一大片文字。語者辨識能把它變成一段對話:

說話者 1  00:00:03  謝謝大家參加。我們先從預算開始好嗎?
說話者 2  00:00:07  好。差旅費大概超支了一成。
說話者 1  00:00:12  了解,主要是什麼原因?

Diarization 這個英文詞來自 diary(日誌):系統會記錄每一個時間點是哪個聲音在說話。在大多數轉錄工具裡,語者辨識和語音辨識是並行的。語音模型產出附有時間戳記的文字,語者辨識模型產出附有時間戳記的說話者片段,兩者再對齊,讓每個字或每句話都得到一個說話者標籤。

如果你轉錄的是訪談、會議或 Podcast,這些標籤正是讓文字派得上用場的關鍵:你可以引述對的人、統計誰說得最多,也能依說話者快速瀏覽一場很長的通話。

語者分離和聲紋辨識的差別

這兩者常被搞混,很多產品頁面也把「語者辨識」「說話者識別」籠統地用在兩種功能上。

語者分離(speaker diarization)聲紋辨識(speaker recognition)
回答的問題誰在什麼時候說話?這個人是誰?
需要事先提供聲音樣本不需要需要,登錄過的聲紋或參考片段
輸出匿名標籤(說話者 1、說話者 2)姓名或身分比對結果
常見用途訪談、會議、Podcast 的逐字稿語音登入、客服中心身分驗證、比對已知說話者
細分類型離線(整個檔案)或串流辨識(從多人中找出是誰)與驗證(真的是你嗎?)

有些工具會把兩者結合。會議平台知道是哪位已登入的參與者麥克風在作用,所以不必分析聲音就能顯示名字。有些應用程式讓你標記一次某個聲音,之後在其他錄音裡試著認出它。例如根據 OpenAI 的文件,它的語者分離轉錄模型可以接受已知說話者的簡短參考片段。至於大多數轉錄服務對上傳檔案所做的單純語者分離,最後得到的是需要你自己改名的通用標籤。

語者辨識的運作原理

現代系統的細節各有不同,但大多依循相同的幾個大階段。開源工具 pyannote.audio 是最廣為使用的語者分離函式庫之一,Hervé Bredin 在 Interspeech 2023 的論文「pyannote.audio 2.1 speaker diarization pipeline: principle, benchmark, and recipe」中,把它的流程描述為三個主要階段:在短滑動視窗上做局部切分、產生語者嵌入向量,以及全域分群。

1. 找出哪裡有語音

語音活動偵測(VAD)會標記錄音中哪些部分有人聲,並排除靜音、音樂和噪音。這一步的錯誤會一路影響下去:漏掉的語音不會有標籤,被誤認成語音的噪音則可能憑空多出一個說話者。

2. 切分語音

語音被切成一小段一小段,理想上每段只有一個人在說話。較新的神經網路模型一次看幾秒鐘,估計每一幀有哪些說話者在發聲,因此也能標示出重疊的語音。

3. 把每個片段轉成聲音嵌入向量

神經網路把每個片段轉換成嵌入向量(embedding):一串數字,描述的是聲音聽起來的樣子(音高、音色、說話風格),而不是說話的內容。同一個人的片段,產生的嵌入向量應該彼此靠近。

4. 將嵌入向量分群

分群演算法把相似的嵌入向量歸在一起,每一群就是一位說話者。困難的地方在於決定到底有幾群:群數太少,兩個人會被合併成同一個標籤;群數太多,一個人會被拆成好幾個標籤。有些服務讓你預先告訴它大概有幾位說話者,以幫助判斷。

5. 和文字對齊

最後,說話者片段會和語音辨識產出的文字時間戳記配對,讓逐字稿的每一行都得到標籤。邊界處出錯很常見:回答的第一個字可能被算到前一位說話者身上。

研究者用語者分離錯誤率(DER)衡量品質,它綜合了漏掉的語音、誤報和說話者混淆三種錯誤。不同資料集公布的數字差異極大,從乾淨的廣播音訊到吵雜的多人會議都有,所以單一的「準確率」數字,很難說明你自己的錄音會有什麼表現。

哪些情況會讓說話者分不清楚

  • 多人同時說話。 兩個人同時開口時,通常只有一個聲音拿到標籤,另一個人的話可能遺失或被算到別人頭上。
  • 聲音相似。 年齡、性別和口音相近的兩個人,產生的嵌入向量會很靠近,可能被合併。
  • 電話與壓縮音訊。 窄頻電話線路和高度壓縮的語音訊息(例如 LINE 語音訊息),會去掉許多嵌入向量所依賴的細節。
  • 說話者太多。 每多一個聲音,分群就更困難,特別是有些人只講了幾句話時。
  • 發言太短。 「對」「嗯嗯」「是喔」這類一兩個字的插話太短,無法產生可靠的嵌入向量。
  • 只有一支距離很遠的麥克風。 放在會議室中央的筆電會收到回音和忽大忽小的音量;同一個人會因為座位不同而聽起來不一樣。
  • 條件改變。 說話者走動、從耳機切換成擴音,或開始壓低聲音說話,都可能被拆成兩個標籤。
  • 背景噪音與音樂。 兩者都可能被誤認成語音,或讓聲音特徵變得模糊。

如何在逐字稿中更準確地區分說話者

大部分的改善來自錄音本身,而不是軟體。我們的提升轉錄準確度技巧說明了一般的音質問題;針對說話者,可以這樣做:

  • 盡可能讓每個人有自己的麥克風,至少讓每個人和共用麥克風的距離差不多。
  • 如果能把每個人錄在獨立音軌上(例如 Podcast 的錄音設備,或左右聲道各錄一方的立體聲通話錄音),就把各音軌分開轉錄。獨立聲道比任何聲音分群都更可靠。
  • 在需要完整記錄的段落,請大家不要搶話,回答前先停半拍。
  • 能直接錄音時,避免使用擴音電話,或經由會議室喇叭播放的視訊會議音訊。
  • 請每位參與者在開頭說一次自己的名字。這不會訓練模型,但能讓你很快把標籤改成名字。
  • 盡量把同一段對話放在同一個檔案裡。如果分成幾段轉錄,標籤會對不上:第一段的說話者 1,在第二段可能變成說話者 2。
  • 先檢查逐字稿的前幾分鐘。如果有兩個人被合併,這個問題通常會持續整個檔案。

訪談方面,我們的訪談逐字稿指南說明了麥克風擺放和取得同意的方式;通話方面,請參考 Google Meet、Zoom 和 Teams 會議轉錄指南。

在 Audiotexta 中重新命名與修正說話者

在 Audiotexta 上傳檔案、貼上連結或用麥克風錄音後,產出的逐字稿會附有說話者標籤和時間戳記。要把說話者 1、說話者 2 改成真實姓名,只要在編輯器中重新命名說話者,新名字就會套用到該說話者在整份逐字稿中的所有段落。編輯器在播放時會標亮正在念的字,點任何一個字就能跳到音訊中的那個時間點,有疑問的段落可以很快用耳朵確認並修正。

請在匯出前完成改名和修正,這樣名字就會帶進 TXT、SRT 和 VTT(免費方案都能下載),或 Pro 方案的 DOCX、PDF、CSV 和 JSON。在字幕檔裡,說話者名字能幫助觀眾跟上對話;在 CSV 或 JSON 裡,則可以用來分析誰說了什麼。

和所有語者辨識系統一樣,Audiotexta 在音訊清楚、聲音差異明顯時效果最好,而且不會把說話者名字從一個檔案帶到下一個檔案:每段錄音都從全新的匿名標籤開始。

可以標示說話者的轉錄工具

現在說話者標籤已經很普遍,但各家的做法不同。以下是根據各廠商文件,或在註明處根據第三方說明整理的簡要比較(2026 年 10 月查核;功能隨時會變,請以廠商官網為準)。

工具類型說話者標籤備註
Audiotexta網頁版、擴充功能、API有,自動在編輯器中重新命名說話者;標籤以檔案為單位。
Otter.ai會議與轉錄應用程式有教學說明可以標記說話者,讓 Otter 在之後的錄音中認出聲音。
Descript音訊與影片剪輯軟體有,自動偵測說話者說明中心列出自動偵測的檔案長度限制;你可以從聲音樣本標記說話者。
TurboScribe網頁轉錄服務有廠商描述為自動偵測並標示說話者。
Zoom、Teams、Google Meet 逐字稿會議平台內建名字來自參與者帳號依據登入者而非聲音分析;共用同一台會議室設備的人可能顯示為同一位說話者。
OpenAI API(gpt-4o-transcribe-diarize)開發者 API有回傳附說話者標籤的片段;可選擇提供已知說話者的參考片段。
AssemblyAI開發者 API有(speaker_labels)可設定預期的說話者人數或範圍。
Deepgram開發者 API有(diarization 選項)在每個字上回傳說話者編號。
Whisper(開源)本機模型無需搭配 pyannote.audio 等語者分離模型。
pyannote.audio開源函式庫只做語者分離不會轉錄;需搭配語音辨識模型。

會議平台在這方面有明顯優勢:每個人都用自己的帳號加入時,平台不必靠聲音猜就知道名字。會記住聲紋的應用程式(例如 Otter),在你經常錄同一群人時能省下改名的時間。至於訪談、電話或 Podcast 這類上傳的錄音,只能靠聲音做語者分離,因此在編輯器裡快速檢查並改名,本來就是工作的一部分。

常見問題

用簡單的話說,語者辨識(speaker diarization)是什麼?

語者辨識就是找出一段錄音中「誰在什麼時候說話」。系統把音訊切成片段,把聽起來是同一個聲音的片段歸成一組,再標上說話者 1、說話者 2 等標籤,過程中並不知道任何人的名字。

語者分離和聲紋辨識有什麼不同?

語者分離(diarization)是把不同的聲音彼此區分開來,給它們匿名標籤。聲紋辨識則是把聲音對應到一個已知的人,需要事先登錄的聲音樣本或其他身分來源,例如會議平台知道是誰登入。

Whisper 可以區分說話者嗎?

開源的 Whisper 模型會轉錄語音,但本身不會標示說話者。開發者通常會把 Whisper 搭配 pyannote.audio 等獨立的語者分離模型使用,許多線上服務也會替你完成這一步。

為什麼我的逐字稿會把說話者搞混?

最常見的原因是多人同時說話、聲音相似、很短的插話、品質不佳的電話或壓縮音訊、背景噪音,以及一段錄音裡人數太多。改善錄音方式通常比調整任何設定更有效。

怎麼把說話者標籤改成真實姓名?

大多數逐字稿編輯器都能讓你把「說話者 1」這類標籤改名一次,所有帶這個標籤的段落就會一起更新。在 Audiotexta,你可以在匯出前於逐字稿編輯器中重新命名說話者。

免費試用 Audiotexta

上傳檔案或貼上連結,幾分鐘內取得逐字稿。

開始轉錄

相關文章